Skip to content

Variáveis

SHAMAN edited this page Sep 16, 2017 · 54 revisions

A API do Telegram suporta uma gama de tipos e estruturas de dados que são passados na chamada de seus métodos, porém apenas dois tipos de dados são suportados pelo interpretador de comandos BASH. São eles: integer e string. Para filtrar os dados e garantir que tipos incompatíveis não sejam enviados aos métodos, foram criadas expressões regulares para validação dos mesmos. O valor é verificado com base no tipo suportado pelo parâmetro ao qual foi passado, caso seja incompatível a função trata o erro de sintaxe e finaliza o script/thread.

O ShellBot possui variáveis com nomes reservados, nas quais são armazenados os valores extraídos dos objetos json sempre que o método ShellBot.getUpdates é chamado. A nomenclatura de cada variável é composta pelo prefixo do objeto a qual pertence, seguido pelo nome do campo. Utiliza-se o caractere _ (underscore) na composição, expressando de forma sucinta a estrutura dos dados.

Estrutura
objeto_campo

Considere a variável message_text que contém um tipo de dado string com o corpo da mensagem enviada por um usuário ou bot.

Variável
message_text
Objeto Campo
message text

Mais de um objeto pode compor a nomenclatura da variável e expressar uma sub-estrutura de campos.

Exemplo:

A variável message_reply_to_message_text contém o texto original da mensagem respondida. Onde o objeto message contém um campo chamado reply_to_message cujo tipo é message e que possui um campo text.

Variável
message_reply_to_message_text
Objeto Campo Campo
message reply_to_message text

Nota: A nomenclatura é única e contém um tipo de dado a ser retornado. Caso tente acessar o seu valor sem a mesma ter sido inicializada, nenhum valor será retornado.

Array indexado

O valor de uma variável pode ser acessado utilizando apenas o seu identificador (nome).

Exemplo:

echo $message_text

Se for especificado o número máximo de atualizações a serem retornadas na chamada do método ShellBot.getUpdates através do parâmetro -l, --limit <valor> e se limit for maior que 1, o valor da variável deverá ser acessado por indexação utilizando a expansão de variável.

Exemplo:

ShellBot.getUpdates --limit 3

echo ${message_text[0]}    # mensagem 1
echo ${message_text[1]}    # mensagem 2
echo ${message_text[2]}    # mensagem 3

Use o método ShellBot.ListUpdates para obter os índices do array.

Nota: Por padrão somente as variáveis que possuem objetos atualizados são instanciadas.

Array de Array

Um Array de Array ou Matriz multidimensional é um array com duas ou mais dimensões contendo um conjunto de elementos. O Bash não oferece suporte a esse tipo de array, por essa razão os elementos são agrupados no mesmo índice da variável e separados pelo delimitador ' ' (espaço).

Exemplo:

variavel[indice]='item1 item2 item3 item4'

message_photo_file_id = 'AgADAQAD4KcxG0_l6UU3aWyr8ym5KhcT9y8ABLF5dSD8IsvVgMgAAgI AgADAQAD4KcxG0_l6UU3aWyr8ym5KhcT9y8ABIQ7q5EOmrnYgcgAAgI AgADAQAD4KcxG0_l6UU3aWyr8ym5KhcT9y8ABE86mx5aXfQwgsgAAgI AgADAQAD4KcxG0_l6UU3aWyr8ym5KhcT9y8ABPte4YhC8Fzwf8gAAgI'
message_photo_file_size = '1478 21417 100945 222230'
message_photo_height = '51 180 450 720'
message_photo_width = '90 320 800 1280'
### Monitor

Após a chamada do método [ShellBot.getUpdates](https://github.com/shellscriptx/ShellBot/wiki/M%C3%A9todos#shellbotgetupdates) as atualizações disponíveis são lidas, os objetos da mensagem são tratados e as variáveis são carregadas na memória; Porém todo o processo ocorre em modo silencioso (não verboso). O modo **monitor** quando ativado exibe na saída padrão as variáveis inicializadas por mensagem e seus respectivos valores. Para ativar use o parâmetro `-m` ou `--monitor` no método [ShellBot.init](https://github.com/shellscriptx/ShellBot/wiki/M%C3%A9todos#shellbotgetupdates).

#### Exemplo: 
`ShellBot.init --token <seu_token> --monitor`

> Nota: Por padrão o bot só tem acesso as mensagens enviadas em grupos/canais se as mesmas contiverem comandos. Os comandos são precedidos pelo caractere `/` (barra). Exemplo: `/comando1`. Para ter acesso irrestrito a todas as mensagens é necessário que o bot seja administrador. 

Saída padrão (modo monitor) após o envio de uma mensagem em um grupo no qual o bot é membro. As informações são listadas no formato `variavel = 'valor'`.

=================== MONITOR =================== Data: sáb set 16 09:06:31 -03 2017 Script: meu_bot.sh Bot (nome): ▪️❌▫️ Bot (usuario): beta_bot Bot (id): 123456789

Mensagem: 1

update_id = '870716554' message_date = '1505563591' message_message_id = '29159' message_text = '/comando_teste' message_chat_all_members_are_administrators = 'false' message_chat_id = '-1122334455' message_chat_title = 'grupoteste' message_chat_type = 'group' message_entities_length = '14' message_entities_offset = '0' message_entities_type = 'bot_command' message_from_first_name = 'SHAMAN' message_from_id = '11443322' message_from_is_bot = 'false' message_from_language_code = 'pt-BR' message_from_username = 'x_SHAMAN_x'


> Nota: Use essa opção para monitorar eventos, visualizar as variáveis utilizadas pela API e facilitar o desenvolvimento do bot em um cenário de teste.

#### <a name="Update">Update</a>

Objeto|Tipo|Descrição
-----|----|---------
update_id|Integer|O identificador exclusivo da atualização. Os identificadores de atualização começam de um certo número positivo e aumentam sequencialmente. Esta identificação torna-se especialmente útil se você estiver usando o Webhooks, pois permite ignorar as atualizações repetidas ou restaurar a sequência de atualização correta, caso elas saem de ordem.
message|[Message](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#Message)|Opcional. Nova mensagem recebida de qualquer tipo - texto, foto, etiqueta, etc.
edited_message|[Message](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#Message)|Opcional. Nova versão de uma mensagem conhecida pelo bot e editada
channel_post|[Message](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#Message)|Opcional. Novo canal de entrada de qualquer tipo - texto, foto, etiqueta, etc.
edited_channel_post|[Message](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#Message)|Opcional. Nova versão de uma publicação de canal conhecida pelo bot e editada
inline_query|InlineQuery|Opcional. Nova consulta inline recebida.
chosen_inline_result|ChosenInlineResult|Opcional. O resultado de uma consulta inline que foi escolhida por um usuário e enviada ao parceiro de bate-papo.
callback_query|[CallbackQuery](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#CallbackQuery)|Opcional. Nova consulta de chamada de retorno.


#### <a name="WebhookInfo">WebhookInfo</a>
Contém informações sobre o status atual de um webhook.

Campo|Tipo|Descrição
-----|----|---------
url|String|Webhook URL, pode estar vazio se webhook não estiver configurado.
has_custom_certificate|Boolean|True, se um certificado personalizado fosse fornecido para verificações de certificados webhook.
pending_update_count|Integer|Número de atualizações aguardando entrega.
last_error_date|Integer|Opcional. Tempo Unix para o erro mais recente que aconteceu ao tentar entregar uma atualização via webhook.
last_error_message|String|Opcional. Mensagem de erro em formato legível para humanos para o erro mais recente que aconteceu ao tentar enviar uma atualização via webhook.
max_connections|Integer|Opcional. Número máximo permitido de conexões HTTPS simultâneas para o webhook para atualização de entrega.
allowed_updates|Array de String|Opcional. Uma lista de tipos de atualização em que o bot está inscrito. Predefinições para todos os tipos de atualização.

### Tipos disponíveis

Todos os tipos utilizados nas respostas da API Bot são representados como objetos JSON.
> Os campos opcionais podem não ser devolvidos quando irrelevantes.

#### <a name="User">User</a>

Este objeto representa um usuário ou bot de Telegram.

Campo|Tipo|Descrição
-----|----|---------
id|Integer|Identificador exclusivo para este usuário ou bot
is_bot|Boolean|True, se esse usuário é um bot
first_name|String|Nome do usuário ou do bot
last_name|String|Opcional. Sobrenome do usuário ou do bot
username|String|Opcional. Nome de usuário ou bot
language_code|String|Opcional. Tag de idioma IETF do idioma do usuário

#### <a name="Chat">Chat</a>
Este objeto representa um bate-papo.

Campo|Tipo|Descrição
-----|----|---------
id|Integer|Identificador exclusivo para este bate-papo. Este número pode ser superior a 32 bits e algumas linguagens de programação podem ter dificuldade / defeitos silenciosos na interpretação. Mas é menor do que 52 bits, então um tipo de flutuador inteiro ou de precisão dupla de 64 bits assinado é seguro para armazenar esse identificador.
type|String|Tipo de bate-papo, pode ser "private", "group", "supergroup" ou "channel"
title|String|Opcional. Título para supergrupos, canais e grupos.
username|String|Opcional. Nome de usuário para bate-papo privado, supergrupos e canais, se disponível
first_name|String|Opcional. Primeiro nome da outra parte em um bate-papo privado
last_name|String|Opcional. Segundo nome da outra parte em um bate-papo privado
all_members_are_administrators|Boolean|Opcional. True se um grupo tiver 'Todos os membros são administradores' habilitado.
photo|[ChatPhoto](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#ChatPhoto)|Opcional. Foto de bate-papo. Retorna apenas no ShellBot.getChat.
description|String|Opcional. Descrição para supergrupos, chats e canais. Retorna apenas no ShellBot.getChat
invite_link|String|Opcional. Link de convidado de bate-papo para supergrupos e canais. Retorna apenas no ShellBot.getChat
pinned_message|[Message](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#Message)|Opcional. Mensagem fixa para supergrupos. Retorna apenas no ShellBot.getChat

#### <a name="Message">Message</a>
Este objeto representa um mensagem.

Campo|Tipo|Descrição
-----|----|---------
message_id|Integer|Identificador de mensagem exclusivo dentro deste bate-papo
from|[User](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#User)|Opcional. Remetente, vazio para mensagens enviadas para canais
date|Integer|Data em que a mensagem foi enviada no tempo do Unix
chat|[Chat](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#Chat)|Messagem a qual bate-papo pertence
forward_from|[User](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#User)|Opcional. Para mensagens encaminhadas o remetente da mensagem original
forward_from_chat|[Chat](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#Chat)|Opcional. Para as mensagens encaminhadas a partir de canais, informações sobre o canal original
forward_from_message_id|Integer|Opcional. Para mensagens encaminhadas a partir de canais, identificador da mensagem original
forward_signature|String|Opcional. Para mensagens encaminhadas a partir de canais, assinatura do autor de postagem se presente
forward_date|Integer|Opcional. Para as mensagens encaminhadas, data em que a mensagem original foi enviada no tempo do Unix
reply_to_message|[Message](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#Message)|Opcional. Para respostas, a mensagem original. Observe que o objeto Mensagem neste campo não conterá mais campos reply_to_message mesmo se ele próprio for uma resposta.
edit_date|Integer|Opcional. Data em que a última mensagem foi editada no tempo do Unix.
author_signature|String|Opcional. Assinatura do autor do post para mensagens nos canais.
text|String|Opcional. Para mensagens de texto, o texto UTF-8 da mensagem, de 0 a 4096 caracteres.
entities|Array de [MessageEntity](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#MessageEntity)|Opcional. Para mensagens de texto, entidades especiais como nomes de usuário, URLs, comandos de bot e etc que aparecem no texto.
audio|[Audio](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#Audio)|Opcional. Mensagem é um arquivo de áudio, informações sobre o arquivo.
document|[Document](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#Document)|Opcional. A mensagem é um arquivo geral, informações sobre o arquivo.
game|Game|Opcional. A mensagem é um jogo.
photo|Array de [PhotoSize](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#PhotoSize)|Optional. Message is a photo, available sizes of the photo.
sticker|[Sticker](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#Sticker)|Opcional. A mensagem é um adesivo, informações sobre o adesivo.
video|[Video](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#Video)|Opcional. Mensagem é um vídeo, informações sobre o vídeo.
voice|[Voice](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#Voice)|Opcional. Mensagem é uma mensagem de voz, informações sobre o arquivo.
video_note|[VideoNote](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#VideNote)|Opcional. A mensagem é uma nota de vídeo, informações sobre a mensagem de vídeo.
new_chat_members|Array de [User](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#User)|Opcional. Novos membros que foram adicionados ao grupo ou ao supergrupo e informações sobre eles (o próprio bot pode ser um desses membros)
caption|String|Opcional. Legenda do documento, foto ou vídeo, 0 a 200 caracteres.
contact|[Contact](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#Contact)|Opcional. A mensagem é um contato compartilhado.
location|[Location](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#Location)|Opcional. Mensagem é uma localização compartilhada.
venue|[Venue](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#Venue)|Opcional. A mensagem é um local.
new_chat_member|[User](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#User)|Opcional. Um novo membro foi adicionado ao grupo, informações sobre eles (este membro pode ser o próprio bot).
left_chat_member|[User](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#User)|Opcional. Um membro foi removido do grupo, informações sobre eles (este membro pode ser o próprio bot).
new_chat_title|String|Opcional. Um título de bate-papo foi alterado para esse valor.
new_chat_photo|Array de [PhotoSize](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#PhotoSize)|Opcional. Uma foto de bate-papo foi alterada para esse valor.
delete_chat_photo|True|Opcional. Mensagem de serviço: a foto do bate-papo foi excluída.
group_chat_created|True|Opcional. Mensagem de serviço: o grupo foi criado.
supergroup_chat_created|True|Opcional. Mensagem de serviço: o supergrupo foi criado. Este campo não pode ser recebido em uma mensagem que vem através de atualizações, porque o bot não pode ser um membro de um supergrupo quando ele é criado. Só pode ser encontrado em reply_to_message se alguém responder a uma primeira mensagem em um supergrupo criado diretamente.
channel_chat_created|True|Opcional. Mensagem de serviço: o canal foi criado. Este campo não pode ser recebido em uma mensagem que vem por meio de atualizações, porque o bot não pode ser um membro de um canal quando ele é criado. Só pode ser encontrado em reply_to_message se alguém responder a uma primeira mensagem em um canal.
migrate_to_chat_id|Integer|Opcional. O grupo foi migrado para um supergrupo com o identificador especificado. Este número pode ser superior a 32 bits e algumas linguagens de programação podem ter dificuldade / defeitos silenciosos na interpretação. Mas é menor do que 52 bits, então um tipo de flutuador inteiro ou de precisão dupla de 64 bits assinado é seguro para armazenar esse identificador.
migrate_from_chat_id|Integer|Opcional. O supergrupo foi migrado de um grupo com o identificador especificado. Este número pode ser superior a 32 bits e algumas linguagens de programação podem ter dificuldade / defeitos silenciosos na interpretação. Mas é menor do que 52 bits, então um tipo de flutuador inteiro ou de precisão dupla de 64 bits assinado é seguro para armazenar esse identificador.
pinned_message|[Message](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#Message)|Opcional. A mensagem especificada foi fixada. Observe que o objeto Mensagem neste campo não conterá mais campos reply_to_message, mesmo que ele seja uma resposta.

#### <a name="MessageEntity">MessageEntity</a>
Este objeto representa uma entidade especial em uma mensagem de texto. Por exemplo, hashtags, nomes de usuários, URLs e etc.

Campo|Tipo|Descrição|
-----|----|---------|
type|String|Tipo da entidade. Pode ser mencionado hashtag, bot_command, url, email, bold (bold text), italic (italic text), code (monowidth string), pre (monowidth block), text_link (for clickable text URLs), text_mention (for users without usernames).
offset|Integer|Offset em unidades de código UTF-16 para o início da entidade.
length|Integer|Comprimento da entidade em unidades de código UTF-16.
url|String|Opcional. Somente para "texto_link", url que será aberto após o usuário tocar no texto.
user|[User](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#User)|Opcional. Apenas para "text_mention". O usuário mencionado.

#### <a name="PhotoSize">PhotoSize</a>
Este objeto representa um tamanho de uma foto ou uma miniatura de file/Sticker.

Campo|Tipo|Descrição
-----|----|---------
file_id|String|Identificador único para o arquivo.
width|Integer|Largura da foto.
height|Integer|Altura da foto.
file_size|Integer|Opcional. Tamanho do arquivo.

#### <a name="Audio">Audio</a>
Este objeto representa um arquivo de áudio a ser tratado como música pelos clientes Telegram.

Campo|Tipo|Descrição
-----|----|---------|
file_id|String|Identificador único para o arquivo.
duration|Integer|Duração do áudio em segundos conforme definido pelo remetente.
performer|String|Opcional. Performer do áudio conforme definido pelo remetente ou por tags de áudio.
title|String|Opcional. Título do áudio conforme definido pelo remetente ou por tags de áudio.
mime_type|String|Opcional. Tipo MIME do arquivo conforme definido pelo remetente.
file_size|Integer|Opcional. Tamanho do arquivo.

#### <a name="Document">Document</a>
Este objeto representa um arquivo geral (em oposição a fotos, mensagens de voz e arquivos de áudio).

Campo|Tipo|Descrição
-----|----|---------
file_id|String|Identificador único para o arquivo.
thumb|[PhotoSize](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#PhotoSize)|Opcional. Miniatura do documento conforme definido pelo remetente.
file_name|String|Opcional. Nome do arquivo original conforme definido pelo remetente.
mime_type|String|Opcional. Tipo MIME do arquivo conforme definido pelo remetente.
file_size|Integer|Opcional. Tamanho do arquivo.

#### <a name="Video">Video</a>
Este objeto representa um arquivo de vídeo.

Campo|Tipo|Descrição
-----|----|---------
file_id|String|Identificador único para o arquivo.
width|Integer|Largura da video.
height|Integer|Altura da video.
duration|Integer|Duração do vídeo em segundos conforme definido pelo remetente.
thumb|[PhotoSize](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#PhotoSize)|Opcional. Miniatura do vídeo
mime_type|String|Opcional. Tipo MIME do arquivo conforme definido pelo remetente.
file_size|Integer|Opcional. Tamanho do arquivo.

#### <a name="Voice">Voice</a>
Este objeto representa uma nota de voz.

Campo|Tipo|Descrição
-----|----|---------
file_id|String|Identificador único para o arquivo.
duration|Integer|Duração do audio em segundos conforme definido pelo remetente.
mime_type|String|Opcional. Tipo MIME do arquivo conforme definido pelo remetente.
file_size|Integer|Opcional. Tamanho do arquivo.

#### <a name="VideoNote">VideoNote</a>
Este objeto representa uma mensagem de vídeo (disponível nos aplicativos Telegram como v.4.0).

Campo|Tipo|Descrição
-----|----|---------
file_id|String|Identificador único para o arquivo.
length|Integer|Largura e altura do vídeo, conforme definido pelo remetente.
duration|Integer|Duração do video em segundos conforme definido pelo remetente.
thumb|[PhotoSize](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#PhotoSize)|Opcional. Miniatura do vídeo
file_size|Integer|Opcional. Tamanho do arquivo.

#### <a name="Contact">Contact</a>
Este objeto representa um contato de telefone.

Campo|Tipo|Descrição
-----|----|---------
phone_number|String|Número de telefone do contato.
first_name|String|Primeiro nome do contato.
last_name|String|Opcional. Segundo nome do contato.
user_id|Integer|Opcional. Identificador de usuário do contato no Telegram.

#### <a name="Location">Location</a>
Este objeto representa um ponto no mapa.

Campo|Tipo|Descrição
-----|----|---------
longitude|Float|Longitude conforme definido pelo remetente.
latitude|Float|Latitude conforme definida pelo remetente.

#### <a name="Venue">Venue</a>
Este objeto representa um local.

Campo|Tipo|Descrição
-----|----|---------
location|[Location](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#Location)|Localização do local.
title|String|Nome do local.
address|String|Endereço do local.
foursquare_id|String|Opcional. Identificador do quadrante do local.

#### <a name="UserProfilePhotos">UserProfilePhotos</a>
Este objeto representa as imagens de perfil de um usuário.

Campo|Tipo|Descrição
-----|----|---------
total_count|Integer|Número total de imagens de perfil que o usuário alvo possui.
photos|Array de Array de [PhotoSize](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#PhotoSize)|Imagens de perfil solicitadas (em até 4 tamanhos cada).

#### <a name="File">File</a>
Este objeto representa um arquivo pronto para ser baixado. O arquivo pode ser baixado através do link `https://api.telegram.org/file/bot<_token_>/<file_path>`. É garantido que o link será válido por pelo menos 1 hora. Quando o link expira, um novo pode ser solicitado chamando [ShellBot.getFile](https://github.com/shellscriptx/ShellBot/wiki/M%C3%A9todos#shellbotgetfile).

> O tamanho máximo do arquivo para download é de 20 MB.

Campo|Tipo|Descrição
-----|----|---------
file_id|String|Identificador exclusivo para este arquivo.
file_size|Integer|Opcional. Tamanho do arquivo, se conhecido.
file_path|String|Opcional. Caminho do arquivo. Use https://api.telegram.org/file/bot<_token_>/<file_path> para obter o arquivo.

#### <a name="ReplyKeyboardMarkup">ReplyKeyboardMarkup</a>
Este objeto representa um teclado personalizado com opções de resposta.

Campo|Tipo|Descrição
-----|----|---------
keyboard|Array do Array de [KeyboardButton](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#KeyboardButton)|Array de linhas de botão, cada uma representada por uma matriz de objetos KeyboardButton.
resize_keyboard|Boolean|Opcional. Solicita aos clientes que redimensionem o teclado verticalmente para um ajuste ótimo (por exemplo, reduz o teclado se houver apenas duas linhas de botões). O padrão é falso, caso em que o teclado personalizado é sempre da mesma altura que o teclado padrão do aplicativo.
one_time_keyboard|Boolean|Opcional. Solicita aos clientes que escondam o teclado assim que ele foi usado. O teclado ainda estará disponível, mas os clientes exibirão automaticamente o teclado de letras usual no chat - o usuário pode pressionar um botão especial no campo de entrada para ver novamente o teclado personalizado. Por padrão, é falso.
selective|Boolean|Opcional. Use este parâmetro se desejar mostrar o teclado apenas para usuários específicos. Alvos: 1) usuários que são mencionados no texto do objeto Mensagem; 2) se a mensagem do bot for uma resposta (tenha reply_to_message_id), remetente da mensagem original. Exemplo: um usuário solicita mudar o idioma do bot, o bot responde ao pedido com um teclado para selecionar o novo idioma. Outros usuários do grupo não vêem o teclado.

#### <a name="KeyboardButton">KeyboardButton</a>
Este objeto representa um botão do teclado de resposta. Para botões de texto simples A seqüência pode ser usada em vez deste objeto para especificar o texto do botão. Os campos opcionais são mutuamente exclusivos.

Campo|Tipo|Descrição
-----|----|---------
text|String|Texto do botão. Se nenhum dos campos opcionais forem usados, ele será enviado ao bot como uma mensagem quando o botão for pressionado.
request_contact|Boolean|Opcional. Se for true, o número de telefone do usuário será enviado como contato quando o botão for pressionado. Disponível apenas em bate-papo privado.
request_location|Boolean|Opcional. Se for true, a localização atual do usuário será enviada quando o botão for pressionado. Disponível apenas em bate-papo privado.

> Nota: as opções de solicitação de contato e de localização de solicitação só funcionam nas versões Telegram lançadas após 9 de abril de 2016. Os clientes mais velhos as ignorarão.

#### <a name="ReplyKeyboardRemove">ReplyKeyboardRemove</a>
Ao receber uma mensagem com este objeto, os clientes do Telegram removerão o teclado personalizado atual e exibirão o teclado-letra padrão. Por padrão, os teclados personalizados são exibidos até que um novo teclado seja enviado por um bot. Uma exceção é feita para teclados únicos que estão escondidos imediatamente após o usuário pressionar um botão.

Campo|Tipo|Descrição
-----|----|---------
remove_keyboard|True|Solicita aos clientes que removam o teclado personalizado (o usuário não poderá convocar esse teclado, se você quiser esconder o teclado da visão, mas mantê-lo acessível, use one_time_keyboard em [ReplyKeyboardMarkup](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#ReplyKeyboardMarkup).
selective|Boolean|Opcional. Use este parâmetro se desejar remover o teclado apenas para usuários específicos. Alvos: 1) usuários que são mencionados no texto do objeto [Message](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#Message); 2) se a mensagem do bot for uma resposta (tenha reply_to_message_id), remetente da mensagem original. Exemplo: Um usuário vota em uma enquete, o bot retorna a mensagem de confirmação em resposta à votação e remove o teclado para esse usuário, enquanto ainda mostra o teclado com opções de pesquisa para usuários que ainda não votaram.

#### <a name="InlineKeyboardMarkup">InlineKeyboardMarkup</a>
Este objeto representa um  inline keyboard que aparece ao lado da mensagem a que pertence.

Campo|Tipo|Descrição
-----|----|---------
inline_keyboard|Array de Array de [InlineKeyboardButton](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#InlineKeyboardButton)|Array de linhas de botão, cada uma representada por uma matriz de [InlineKeyboardButton](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#InlineKeyboardButton).

> Nota: Isso só funcionará nas versões Telegram lançadas após 9 de abril de 2016. Os clientes mais antigos exibirão uma mensagem não suportada.

#### <a name="InlineKeyboardButton">InlineKeyboardButton</a>
Este objeto representa um botão de um teclado em linha. Você deve usar exatamente um dos campos opcionais.

Campo|Tipo|Descrição
-----|----|---------
text|String|Texto no botão.
url|String|Opcional. Url HTTP a ser aberto quando o botão é pressionado.
callback_data|String|Opcional. Dados a serem enviados em um [callback query](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#CallbackQuery) para o bot quando o botão é pressionado, 1-64 bytes.
switch_inline_query|String|Opcional. Se configurado, pressionar o botão solicitará ao usuário selecionar um dos seus bate-papos, abrir esse bate-papo e inserir o nome de usuário do bot e a consulta inline especificada no campo de entrada. Pode estar vazio, caso em que apenas o nome de usuário do bot será inserido.
switch_inline_query_current_chat|String|Opcional. Se configurado, pressionar o botão irá inserir o nome de usuário do bot e a consulta inline especificada no campo de entrada do bate-papo atual. Pode estar vazio, caso em que apenas o nome de usuário do bot será inserido. Isso oferece uma maneira rápida para o usuário abrir seu bot no modo inline no mesmo bate-papo - bom para selecionar algo de várias opções.

#### <a name="CallbackQuery">CallbackQuery</a>

Este objeto representa uma consulta de retorno de chamada recebida de um botão de retorno de chamada em um [inline keyboard](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#InlineKeyboard). Se o botão que originou a consulta foi anexado a uma mensagem enviada pelo bot, a mensagem de campo estará presente. Se o botão foi anexado a uma mensagem enviada via o bot (no modo inline), o campo inline_message_id estará presente. Exatamente um dos campos de dados ou game_short_name estará presente.

Campo|Tipo|Descrição
-----|----|---------
id|String|Identificador exclusivo para esta consulta.
from|[User](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#User)|Remetente.
message|[Message](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#Message)|Opcional. Mensagem com o botão de retorno de chamada que originou a consulta. Observe que o conteúdo da mensagem e a data da mensagem não estarão disponíveis se a mensagem for muito antiga.
inline_message_id|String|Opcional. Identificador da mensagem enviada via o bot no modo inline, que originou a consulta.
chat_instance|String|Identificador global, correspondente exclusivamente ao chat para o qual a mensagem com o botão de retorno de chamada foi enviada. Útil para altas pontuações nos jogos.
data|String|Opcional. Dados associados ao botão de retorno de chamada. Esteja ciente de que um cliente ruim pode enviar dados arbitrários neste campo.
game_short_name|String|Opcional. Nome abreviado de um jogo a ser devolvido, serve como o identificador exclusivo para o jogo.

> NOTA: Depois que o usuário pressionar um botão de retorno de chamada, os clientes do Telegram exibirão uma barra de progresso até você chamar [ShellBot.answerCallbackQuery](https://github.com/shellscriptx/ShellBot/wiki/M%C3%A9todos#answerCallbackQuery). Portanto, é necessário reagir ao chamar [ShellBot.answerCallbackQuery](https://github.com/shellscriptx/ShellBot/wiki/M%C3%A9todos#answerCallbackQuery), mesmo que não seja necessária notificação ao usuário (por exemplo, sem especificar nenhum dos parâmetros opcionais).

#### <a name="ForceReply">ForceReply</a>
Ao receber uma mensagem com este objeto, os clientes do Telegram exibirão uma interface de resposta para o usuário (atue como se o usuário selecionasse a mensagem do bot e tocasse 'Responder'). Isso pode ser extremamente útil se você quiser criar interfaces passo-a-passo fáceis de usar sem ter que sacrificar o modo de privacidade.

Campo|Tipo|Descrição
-----|----|---------
force_reply|True|Mostra a interface de resposta para o usuário, como se eles selecionassem manualmente a mensagem do bot e tocassem 'Responder'.
selective|Boolean|Opcional. Use este parâmetro se desejar forçar a resposta apenas de usuários específicos. Alvos: 1) usuários que são mencionados no texto do objeto [Message](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#User); 2) se a mensagem do bot for uma resposta (tenha reply_to_message_id), remetente da mensagem original.

> Exemplo: Um motor de pesquisa para grupos é executado no modo de privacidade (apenas recebe comandos, respostas a suas mensagens e menções). Poderia haver duas maneiras de criar uma nova pesquisa:

* Explique ao usuário como enviar um comando com parâmetros (por exemplo: /NovaPesquisa resposta1 respota2 resposta3). Pode ser atraente para os usuários incondicionais, mas falta o polonês moderno.
* Guie o usuário através de um processo passo a passo. "Por favor, envie-me sua pergunta", "Legal, agora vamos adicionar a primeira opção de resposta", "Ótimo". Continue adicionando opções de resposta, depois envie /termine quando estiver pronto'.

A última opção é definitivamente mais atraente. E se você usa [ForceReply](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#ForceReply) nas perguntas do seu bot, receberá as respostas do usuário, mesmo que apenas receba respostas, comandos e menções - sem qualquer trabalho extra para o usuário.

#### <a name="ChatPhoto">ChatPhoto</a>
Este objeto representa uma foto de bate-papo.

Campo|Tipo|Descrição
-----|----|---------
small_file_id|String|Identificador de arquivo exclusivo da foto de bate-papo pequena (160x160). Este arquivo_id pode ser usado apenas para download de fotos.
big_file_id|String|Identificador de arquivo exclusivo de grande (640x640) foto de bate-papo. Este arquivo_id pode ser usado apenas para download de fotos.

#### <a name="ChatMember">ChatMember</a>
Este objeto contém informações sobre um membro de um bate-papo.

Campo|Tipo|Descrição
-----|----|---------
user|[User](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#User)|Informações sobre o usuário.
status|String|O status do membro no bate-papo. Pode ser “creator”, “administrator”, “member”, “restricted”, “left” ou “kicked”.
until_date|Integer|Opcional. Restictred e chutado apenas. Data em que as restrições serão levantadas para este usuário, tempo unix.
can_be_edited|Boolean|Opcional. Administradores apenas. É true, se o bot pode editar os privilégios de administrador desse usuário.
can_change_info|Boolean|Opcional. Administradores apenas. É true, se o administrador pode alterar o título do bate-papo, a foto e outras configurações.
can_post_messages|Boolean|Opcional. Administradores apenas. É true, se o administrador pode postar no canal, apenas canais.
can_edit_messages|Boolean|Opcional. Administradores apenas. É true, se o administrador pode editar mensagens de outros usuários, apenas canais.
can_delete_messages|Boolean|Opcional. Administradores apenas. É true, se o administrador pode excluir mensagens de outros usuários.
can_invite_users|Boolean|Opcional. Administradores apenas. É true, se o administrador pode convidar novos usuários para o bate-papo.
can_restrict_members|Boolean|Opcional. Administradores apenas. É true, se o administrador pode restringir, proibir ou cancelar os membros do bate-papo.
can_pin_messages|Boolean|Opcional. Administradores apenas. É true, se o administrador pode inserir mensagens, somente supergrupos
can_promote_members|Boolean|Opcional. Administradores apenas. É true, se o administrador pode adicionar novos administradores com um subconjunto de seus próprios privilégios ou administradores de rejeições que promoveu, direta ou indiretamente (promovido por administradores que foram nomeados pelo usuário).
can_send_messages|Boolean|Opcional. Somente restrito. É true, se o usuário pode enviar mensagens de texto, contatos, locais e locais.
can_send_media_messages|Boolean|Opcional. Somente restrito. É true, se o usuário pode enviar áudios, documentos, fotos, vídeos, notas de vídeo e notas de voz, implica can_send_messages.
can_send_other_messages|Boolean|Opcional. Somente restrito. É true, se o usuário pode enviar animações, jogos, adesivos e usar bots inline, implica can_send_media_messages.
can_add_web_page_previews|Boolean|Opcional. Somente restrito. É true que, se o usuário puder adicionar visualizações de páginas web às suas mensagens, implica can_send_media_messages

#### <a name="Sticker">Sticker</a>
Este objeto representa um adesivo.

Campo|Tipo|Descrição
-----|----|---------
file_id|String|Identificador exclusivo para este arquivo.
width|Integer|Largura da etiqueta.
height|Integer|Altura da etiqueta.
thumb|[PhotoSize](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#PhotoSize)|Opcional. Miniatura do adesivo no formato .webp ou .jpg.
emoji|String|Opcional. Emoji associado com o adesivo.
set_name|String|Opcional. Nome do conjunto de adesivos a que a etiqueta pertence.
mask_position|[MaskPosition](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#MaskPosition)|Opcional. Para adesivos de máscara, a posição onde a máscara deve ser colocada.
file_size|Integer|Opcional. Tamanho do arquivo.

#### <a name="StickerSet">StickerSet</a>
Este objeto representa um conjunto de adesivos.

Campo|Tipo|Descrição
-----|----|---------
name|String|Nome do conjunto de adesivos.
title|String|Título do conjunto de adesivos.
contains_masks|Boolean|É true, se o conjunto de adesivos contém máscaras.
stickers|Array de [Sticker](https://github.com/shellscriptx/ShellBot/wiki/Vari%C3%A1veis#Sticker)|Lista de todas as etiquetas definidas.

#### <a name="MaskPosition">MaskPosition</a>
Este objeto descreve a posição em faces onde uma máscara deve ser colocada por padrão.

Campo|Tipo|Descrição
-----|----|---------
point|String|A parte do rosto em relação à qual a máscara deve ser colocada. Um de “forehead”, “eyes”, “mouth”, or “chin”.
x_shift|Float|Deslocar pelo eixo X medido em larguras da máscara dimensionadas para o tamanho do rosto, da esquerda para a direita. Por exemplo, escolher -1.0 colocará a máscara apenas à esquerda da posição de máscara padrão.
y_shift|Float|Deslocar pelo eixo Y medido em alturas da máscara dimensionadas para o tamanho do rosto, de cima para baixo. Por exemplo, 1.0 colocará a máscara logo abaixo da posição de máscara padrão.
scale|Float|Coeficiente de escala de máscara. Por exemplo, 2.0 significa tamanho duplo.

#### <a name="ResponseParameters">ResponseParameters</a>
Contém informações sobre por que um pedido não teve êxito.

Campo|Tipo|Descrição
-----|----|---------
migrate_to_chat_id|Integer|Opcional. O grupo foi migrado para um supergrupo com o identificador especificado. Este número pode ser superior a 32 bits e algumas linguagens de programação podem ter dificuldade/defeitos silenciosos na interpretação. Mas é menor do que 52 bits, então um tipo de flutuador inteiro ou de precisão dupla de 64 bits assinado é seguro para armazenar esse identificador.
retry_after|Integer|Opcional. Em caso de excesso de controle de inundação, o número de segundos restantes para aguardar antes da solicitação pode ser repetido.

Clone this wiki locally