Olá pessoal! Esta é a segunda parte do artigo em que dedicarei tempo às solicitações e servidores de telegrama. Se alguém não viu a primeira parte, recomendo a
leitura . A terceira parte provavelmente descreverá como trabalhar com bancos de dados. Bem, se você tiver novamente perguntas, escreva-me no telegrama:
dimagorovtsovO que é mensagem?
Provavelmente muitos que escreveram o bot no meu artigo anterior perguntaram o que é a mensagem e por que, por exemplo, para enviar uma mensagem, precisamos especificar message.chat.id nos parâmetros da função send_message? Para descobrir, vamos exibir uma mensagem no console:
@bot.message_handler(commands=['start']) def start(message): print(message)
Agora, quando inserimos o comando
/ start , nosso bot envia uma enorme quantidade de informações. Tudo o que temos agora é uma resposta json. Json é um formato simples para armazenar dados estruturados. Tudo é exibido no formato: 'chave': valor. Vejamos o que recebi:
{ 'content_type':'text', 'message_id':573, 'from_user':{ 'id':687595402, 'is_bot':False, 'first_name':'Dmitry', 'username':'dimagorovtsov', 'last_name':'Gorovtsov', 'language_code':'ru' }, 'date':1565206363, 'chat':{ 'type':'private', 'last_name':'Gorovtsov', 'first_name':'Dmitry', 'username':'dimagorovtsov', 'id':687595402, 'title':None, 'all_members_are_administrators':None, 'photo':None, 'description':None, 'invite_link':None, 'pinned_message':None, 'sticker_set_name':None, 'can_set_sticker_set':None }, 'forward_from_chat':None, 'forward_from':None, 'forward_date':None, 'reply_to_message':None, 'edit_date':None, 'media_group_id':None, 'author_signature':None, 'text':'/start', 'entities':[ <telebot.types.MessageEntity object at 0x03807F50> ], 'json':{ 'message_id':573, 'from':{ 'id':687595402, 'is_bot':False, 'first_name':'Dmitry', 'last_name':'Gorovtsov', 'username':'dimagorovtsov', 'language_code':'ru' }, 'chat':{ 'id':687595402, 'first_name':'Dmitry', 'last_name':'Gorovtsov', 'username':'dimagorovtsov', 'type':'private' }, 'date':1565206363, 'text':'/start', 'entities':[ { 'offset':0, 'length':6, 'type':'bot_command' } ] } }
Por exemplo, com todas essas informações, queremos obter o ID do bate-papo do qual enviei a mensagem. Para fazer isso, vá para a tecla de bate-papo.
Pedido: print(message.chat)
A resposta é: {'type': 'private', 'last_name': 'Gorovtsov', 'first_name': 'Dmitry', 'username': 'dimagorovtsov', 'id': 687595402, 'title': None, 'all_members_are_administrators': None, 'photo': None, 'description': None, 'invite_link': None, 'pinned_message': None, 'sticker_set_name': None, 'can_set_sticker_set': None}
Olha, a tecla do bate-papo tem mais algumas teclas: nome_do_domínio, nome_do_ sobrenome, nome de usuário ... e cada uma delas tem seus próprios valores. Agora vamos passar para a chave id:
print(message.chat.id)
Como você pode ver, para obter o valor desejado, basta escrever o nome das chaves através de um ponto. Agora observe a resposta do servidor:
687595402
Tudo está indo como deveria! Temos o ID do bate-papo, exatamente como queríamos! Agora pegue o nome do remetente. Aqui, como você notou, você precisa usar a chave
from_user .
Pedido: print(message.from_user)
A resposta é: {'id': 687595402, 'is_bot': False, 'first_name': 'Dmitry', 'username': 'dimagorovtsov', 'last_name': 'Gorovtsov', 'language_code': 'ru'}
Agora obtemos o valor da chave
first_name :
print(message.from_user.first_name)
Bem, é isso! Em alguns segundos, conseguimos obter o ID do bate-papo e meu nome no telegrama. E, novamente, para quem não entende:

Para obter o valor da chave first_name, primeiro precisamos voltar para a chave de bate-papo e somente depois para first_name!
Agora veja, para enviar uma mensagem para qualquer bate-papo, precisamos especificar vários parâmetros na função send_message. O primeiro parâmetro é chat_id, o próprio ID do chat. O segundo é o texto, o texto da mensagem. E você adivinhou, em vez de escrever message.chat.id, podemos escrever nossos dados! É assim que você pode enviar uma mensagem para si mesmo se especificar seu ID nos parâmetros:
bot.send_message(< id>, ' ')
Bem, quando escrevemos message.chat.id, queremos dizer que o bot enviará uma mensagem para o chat do qual foi chamado.
Conclusão
Bem, isso é tudo! Espero que você entenda como receber dados do servidor, processá-los e usá-los sempre que necessário. Obrigado pela atenção.