Escrevendo um bot de telegrama em python usando a biblioteca de telebot parte 2

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: dimagorovtsov

O 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.

Source: https://habr.com/ru/post/pt462905/


All Articles