Skip to content

Instantly share code, notes, and snippets.

@shellscriptx
Created February 26, 2020 00:17
Show Gist options
  • Save shellscriptx/e4d071271aacda5ba6f4cc9332ea358b to your computer and use it in GitHub Desktop.
Save shellscriptx/e4d071271aacda5ba6f4cc9332ea358b 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 --return map
# Menu de ajuda.
readonly AJUDA=$(cat << _eof
*Comandos:*
/horarios exibe os horários dos ônibus.
/ajuda exibe informações.
_eof
)
function exibir_horarios(){
local botao=
# Cria o botão 'voltar'.
ShellBot.InlineKeyboardButton --button botao --text 'Voltar' --callback_data 'btn_voltar' --line 1
# Anexa o botão a mensagem.
ShellBot.sendMessage --chat_id ${message_chat_id[$id]} \
--text '*Horários disponíveis:*\n\n12:00\n12:30\n13:00\n13:30' \
--parse_mode markdown \
--reply_markup "$(ShellBot.InlineKeyboardMarkup --button botao)"
}
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
(
# XXX MENSAGEM PADRÃO (TEXTO) XXX
case ${message_text[$id]} in
/start|/ajuda) ShellBot.sendMessage --chat_id ${message_chat_id[$id]} --text "$AJUDA" --parse_mode markdown;;
/horarios) exibir_horarios;;
*) # Se não for um comando válido.
# XXX MENSAGEM INLINE (TECLADO) XXX
# Verifica se existe uma query de evento de click e executa a função
# com base no valor definido em callback_data
case ${callback_query_data[$id]} in
btn_voltar) # Voltar.
# Envia uma notificação a query.
ShellBot.answerCallbackQuery --callback_query_id ${callback_query_id[$id]}
# Edita a query substituindo pelo menu de ajuda.
ShellBot.editMessageText --chat_id ${callback_query_message_chat_id[$id]} \
--message_id ${callback_query_message_message_id[$id]} \
--text "$AJUDA" \
--parse_mode markdown
;;
esac
;;
esac
) & # 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