Skip to content

Instantly share code, notes, and snippets.

@shellscriptx
Created February 12, 2020 13:24
Show Gist options
  • Save shellscriptx/503032e1ef63d94f2492b52fbbc37867 to your computer and use it in GitHub Desktop.
Save shellscriptx/503032e1ef63d94f2492b52fbbc37867 to your computer and use it in GitHub Desktop.
#!/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