Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Caller number #1

Open
josep112 opened this issue May 4, 2017 · 6 comments
Open

Caller number #1

josep112 opened this issue May 4, 2017 · 6 comments

Comments

@josep112
Copy link

josep112 commented May 4, 2017

Qual variável devo usar para conseguir visualizar o numero do celular da pessoa que esta enviando a mensagem?

@shellscriptx
Copy link
Owner

shellscriptx commented May 17, 2017

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.

@ptzumba
Copy link

ptzumba commented Sep 22, 2017

Olá!
Como posso fazer para pegar o valor do botão pressionado?
Dede já obg!

@shellscriptx
Copy link
Owner

shellscriptx commented Sep 22, 2017

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

@ptzumba
Copy link

ptzumba commented Sep 22, 2017

Muito obrigado amigo!

@ptzumba
Copy link

ptzumba commented Oct 5, 2017

Shaman, qual o comando para enviar a digitação do bot?
desde já muito obg!

@shellscriptx
Copy link
Owner

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

@shellscriptx shellscriptx reopened this Oct 5, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants