Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save shellscriptx/36df465a82d5a7f8a655c6f05ee7d4e6 to your computer and use it in GitHub Desktop.
Save shellscriptx/36df465a82d5a7f8a655c6f05ee7d4e6 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

# MEMU PRINCIPAL (botão)
botao_conf=''
# Define as configurações e atribui os valor de retorno (callback_data) do botão.
# Sempre que um InlineButton é pressionado pelo usuário, o valor definido no parâmetro 'callback_data'
# é retornado e armazenado na variável 'callback_query_data'.
ShellBot.InlineKeyboardButton --button 'botao_conf' --line 1 --text 'Configurações' --callback_data 'btn_conf'	# valor: btn_conf

# Cria o objeto inline_keyboard contendo os elementos armazenados na variável 'botao1'
# É retornada a nova estrutura e armazena em 'keyboard1'.
keyboard1="$(ShellBot.InlineKeyboardMarkup -b 'botao_conf')"

#-------------------------

# SUBMENU (botões)
btn_sub_menu=''

ShellBot.InlineKeyboardButton --button 'btn_sub_menu' --line 1 --text 'Opcao 1' --callback_data '1'
ShellBot.InlineKeyboardButton --button 'btn_sub_menu' --line 2 --text 'Opcao 2' --callback_data '2'
ShellBot.InlineKeyboardButton --button 'btn_sub_menu' --line 3 --text 'Opcao 3' --callback_data '3'

keyboard2="$(ShellBot.InlineKeyboardMarkup -b 'btn_sub_menu')"

# Função
function exibir_submenu(){
	# Envia o sub-menu sobrescrevendo o menu principal.
	# Em um Inline Keyboard os valores de retorno estão associados as variáveis 'callback_query_*'
	ShellBot.editMessageText	--chat_id  ${callback_query_message_chat_id[$id]} \
					--message_id ${callback_query_message_message_id[$id]} \
					--text '*Submenu*' \
					--parse_mode markdown \
					--reply_markup "$keyboard2"
}

# Registra o nome da função associando-a ao valor de 'callback_data'.
#    botão inline      callback      função
#         |               |            |
# [ Configurações ] -> btn_conf -> exibir_config
ShellBot.regHandleFunction --function exibir_submenu --callback_data btn_conf

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
	(
		# Monitora as funções associadas ao valores definidos de 'callback'.
		ShellBot.watchHandle --callback_data ${callback_query_data[$id]}
		
		case ${message_text[$id]%%@*} in
			# comando
			/conf)
				# Envia menu principal.
				ShellBot.sendMessage 	--chat_id ${message_chat_id[$id]} \
							--text "*Opção*" \
							--parse_mode markdown \
							--reply_markup "$keyboard1"
			;;
		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