shellbot
shellbot copied to clipboard
Caller number
Qual variável devo usar para conseguir visualizar o numero do celular da pessoa que esta enviando a mensagem?
O telefone do usuário não é enviado no object user, somente os campos abaixo fazem parte da estrutura do objeto user:
id first_name last_name username
Desculpe a demora, pois as coisas estão corridas.
Olá! Como posso fazer para pegar o valor do botão pressionado? Dede já obg!
O valor da query está contida na variável callback_query_data que é inicializada sempre que um inline_button é pressionado. Para maior esclarecimento, montei o código abaixo que exibe um menu contendo 3 opções que retornam valores distintos (10, 20 e 30) e que está associado ao comando /menu.
# Importando API
source ShellBot.sh
# Token do bot
bot_token='<TOKEN_AQUI>'
# Inicializando o bot
ShellBot.init --token "$bot_token" --monitor --flush
ShellBot.username
# limpa o conteúdo da variável.
botao=''
# Criando 3 botões e definindo seus valores.
ShellBot.InlineKeyboardButton --button 'botao' --line 1 --text 'Opcao 1' --callback_data '10' # valor 10
ShellBot.InlineKeyboardButton --button 'botao' --line 2 --text 'Opcao 2' --callback_data '20' # valor 20
ShellBot.InlineKeyboardButton --button 'botao' --line 3 --text 'Opcao 3' --callback_data '30' # valor 30
# Cria o objeto inline_keyboard contendo os elementos armazenados na variável 'botao'
# É retornada a nova estrutura e armazena em 'keyboard'.
keyboard="$(ShellBot.InlineKeyboardMarkup -b '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
(
# Verifica se uma query foi instanciada.
if [[ ${callback_query_chat_instance[$id]} ]]
then
# Testa o valor de retorno.
case ${callback_query_data[$id]} in
10) btn_nome="Opcao 1";;
20) btn_nome="Opcao 2";;
30) btn_nome="Opcao 3";;
esac
# Responde a query com um texto personalizado.
ShellBot.answerCallbackQuery --callback_query_id ${callback_query_id[$id]} --text "'$btn_nome' foi pressionada. Valor: ${callback_query_data[$id]}"
fi
# Verifica se o texto enviado é um comando válido.
# Verifica se a mensagem é do tipo comando.
if [[ ${message_entities_type[$id]} == bot_command ]]
then
case ${message_text[$id]%%@*} in
"/menu")
# Envia mensagem anexando o teclado.
ShellBot.sendMessage --chat_id ${message_chat_id[$id]} \
--text "Olá *${message_from_first_name[$id]}*, clique na opção desejada." \
--parse_mode markdown \
--reply_markup "$keyboard"
;;
esac
fi
) & # Utilize a thread se deseja que o bot responda a várias requisições simultâneas.
done
done
#FIM
Habilite o modo --monitor na chamada do método ShellBot.init para lhe auxiliar no momento de tratar as variáveis. Para mais informações clique aqui.
Espero ter ajudado e qualquer dúvida estou a disposição.
Att. SHAMAN
Muito obrigado amigo!
Shaman, qual o comando para enviar a digitação do bot? desde já muito obg!
Utiliza-se o método ShellBot.sendChatAction para enviar uma determinada ação do bot ao usuário. No seu caso em especifico o nome da ação é typing