Skip to content

Instantly share code, notes, and snippets.

@dodopontocom
Last active August 6, 2019 21:56
Show Gist options
  • Save dodopontocom/7fb2fa178942b10169aafe71403b75a4 to your computer and use it in GitHub Desktop.
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)
############### 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