Last active
August 6, 2019 21:56
-
-
Save dodopontocom/7fb2fa178942b10169aafe71403b75a4 to your computer and use it in GitHub Desktop.
Função que notifica quanto tempo a internet do bot oscilou (ficou offline)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
############### Verifica quanto tempo o bot ficou offline | |
###### Funciona para bots desenvolvidos com o ShellBot -> | |
########### https://github.com/shellscriptx/ShellBot/wiki | |
BASEDIR=$(dirname $0) | |
calc_min() { | |
awk 'BEGIN { print "%.2f\n","$*" }' | |
} | |
offline.checker() { | |
local id_monitor limit_seconds tempo_fora tempo_min timestamp log_file logs message | |
id_monitor=(${1}) | |
limit_seconds=${2} | |
timestamp="$(date +"%Y%m%d")" | |
log_file="${timestamp}_OFF.log" | |
logs=${BASEDIR}/logs/${log_file} | |
[[ ! -f ${logs} ]] && { touch ${logs} ; } > /dev/null 2>&1 | |
echo "$(date +'%s')" >> ${logs} | |
#calcula o segundo atual com o último registrado | |
tempo_fora=$(echo $(($(tail -1 ${logs}) - $(tail -2 ${logs} | head -1)))) | |
if [[ ${tempo_fora} -gt ${limit_seconds} ]]; then | |
#converter o tempo em minutos | |
tempo_min=$(calc_min ${tempo_fora}/60) | |
message="📉 \`Internet Status\`\n" | |
message+="Fiquei *${tempo_min}* minutos offline" | |
for i in ${id_monitor[@]}; do | |
ShellBot.sendMessage --chat_id ${i} --text "$(echo -e ${message})" --parse_mode markdown | |
done | |
fi | |
} | |
# Função deve ser chamada com 2 parâmetros, sendo: | |
# 1 - ID do telegram para grupo ou pessoa que vai receber as notificações, aqui são aceitos múltiplos valores separados por 'espaço' | |
# 2 - Tempo em segundos que deseja considerar para monitorar a oscilação da internet | |
while : | |
do | |
ShellBot.getUpdates --limit 100 --offset $(ShellBot.OffsetNext) --timeout 30 | |
#chamada da função aqui considerando 90 segundos de tempo limite, ou seja, se o método geUpdates demorar mais de 90 para retornar, então irá enviar a notificação | |
tempo_offline "<ID_1> <ID_GRUPO1> <ID_2>" "90" | |
<CODIGO DO SEU BOT AQUI> | |
done | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment