Created
February 12, 2020 13:24
-
-
Save shellscriptx/503032e1ef63d94f2492b52fbbc37867 to your computer and use it in GitHub Desktop.
This file contains 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
#!/bin/bash | |
# | |
# Importando API | |
source ShellBot.sh | |
# Token do bot | |
bot_token='<TOKEN_AQUI>' | |
# Inicializando o bot | |
ShellBot.init --token "$bot_token" --monitor --flush --return map | |
ShellBot.username | |
function grupos(){ | |
local n | |
local btn= | |
# Gera lista dinâmica a cada chamada. | |
for n in $(seq 1 $((RANDOM%10+1))); do | |
ShellBot.InlineKeyboardButton --button 'btn' \ | |
--line $n \ | |
--text "grupo${n}" \ | |
--callback_data "triggers_do_grupo:grupo${n}" | |
done | |
ShellBot.sendMessage --chat_id ${message_chat_id[$id]} \ | |
--text "Grupos com problema" \ | |
--reply_markup "$(ShellBot.InlineKeyboardMarkup --button 'btn')" | |
} | |
function triggers_do_grupo(){ | |
# Extrai da query o nome do grupo. | |
local grp=${callback_query_data[$id]#*:} | |
# Anexa notificação ao evento. | |
ShellBot.answerCallbackQuery --callback_query_id ${callback_query_id[$id]} --text "$grp" | |
# Executa a função passando o nome do grupo capturado. | |
echo Executando: zabbix_api $grp | |
} | |
ShellBot.setMessageRules --name 'grupo_lista' \ | |
--command '/grupos' \ | |
--username '<SEU_USUARIO>' \ | |
--action 'grupos' | |
# Cria uma regra com suporte a conjunto de grupos prefixados | |
# pelo identificador da função definida na construção | |
# dinâmica dos botões. | |
# | |
# Exemplo: --query_data 'triggers_do_grupo:grupo+([0-9])' | |
# | |
# Suporta: | |
# triggers_do_grupo:grupo1 | |
# triggers_do_grupo:grupo2 | |
# triggers_do_grupo:grupo3 | |
# ... | |
# | |
ShellBot.setMessageRules --name 'grupo_gatilho' \ | |
--username '<SEU_USUARIO>' \ | |
--query_data 'triggers_do_grupo:grupo+([0-9])' \ | |
--action triggers_do_grupo | |
while : | |
do | |
# Obtem as atualizações | |
ShellBot.getUpdates --limit 100 --offset $(ShellBot.OffsetNext) --timeout 30 | |
# Lista o índice das atualizações | |
for id in $(ShellBot.ListUpdates) | |
do | |
# Inicio thread | |
( | |
ShellBot.manageRules --update_id $id | |
) & # Utilize a thread se deseja que o bot responda a várias requisições simultâneas. | |
done | |
done | |
#FIM |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment