Repository navigation
Caller number #1
Description
Activity
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
usernameDesculpe 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_dataque é inicializada sempre que uminline_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
--monitorna chamada do métodoShellBot.initpara 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
Qual variável devo usar para conseguir visualizar o numero do celular da pessoa que esta enviando a mensagem?