Écrire un bot de télégramme en python à l'aide de la bibliothèque de telebot partie 2

Bonjour à tous! Il s'agit de la deuxième partie de l'article dans laquelle je consacrerai du temps aux demandes de télégrammes et aux serveurs. Si quelqu'un d'autre n'a pas vu la première partie, je vous recommande de la lire . La troisième partie décrira très probablement comment travailler avec des bases de données. Eh bien, si vous avez encore des questions, écrivez-moi par télégramme: dimagorovtsov

Qu'est-ce que le message?


Beaucoup de ceux qui ont écrit le bot dans mon article précédent ont probablement demandé ce qu'est un message et pourquoi, par exemple, pour envoyer un message, nous devons spécifier message.chat.id dans les paramètres de la fonction send_message? Pour le savoir, affichons un message dans la console:

@bot.message_handler(commands=['start']) def start(message): print(message) 

Maintenant, lorsque nous entrons dans la commande / start , notre bot envoie une énorme quantité d'informations. Tout ce que nous avons maintenant, c'est une réponse json. Json est un format simple pour stocker des données structurées. Tout est affiché au format: 'clé': valeur. Regardons ce que j'ai:

 { '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' } ] } } 

Par exemple, à partir de toutes ces informations, nous voulons obtenir l'identifiant du chat à partir duquel j'ai envoyé le message. Pour ce faire, tournez-vous vers la touche de discussion.

Demande:

 print(message.chat) 

La réponse est:

 {'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} 

Regardez, la clé de chat a quelques clés de plus: prénom, nom, nom d'utilisateur ... et chacun d'eux a ses propres valeurs. Passons maintenant à la clé id:

 print(message.chat.id) 

Comme vous pouvez le voir, pour obtenir la valeur souhaitée, il vous suffit d'écrire le nom des clés à travers un point. Regardez maintenant la réponse du serveur:

 687595402 

Tout se passe comme il se doit! Nous avons obtenu l'identifiant de chat, exactement comme nous le voulions! Obtenez maintenant le nom de l'expéditeur. Ici, comme vous l'avez remarqué, vous devez utiliser la clé from_user .

Demande:

 print(message.from_user) 

La réponse est:

 {'id': 687595402, 'is_bot': False, 'first_name': 'Dmitry', 'username': 'dimagorovtsov', 'last_name': 'Gorovtsov', 'language_code': 'ru'} 

Maintenant, nous obtenons la valeur de la clé first_name :

 print(message.from_user.first_name) 

Eh bien, c'est tout! En quelques secondes, nous avons pu obtenir l'identifiant du chat et mon nom dans le télégramme. Et encore une fois, pour ceux qui ne comprennent pas:



Pour obtenir la valeur de la clé first_name, nous devons d'abord nous tourner vers la clé de chat, puis seulement vers first_name!

Maintenant, regardez, afin d'envoyer un message à n'importe quel chat, nous devons spécifier plusieurs paramètres dans la fonction send_message. Le premier paramètre est chat_id, l'identifiant de chat lui-même. Le second est le texte, le texte du message. Et vous l'avez deviné, au lieu d'écrire message.chat.id, nous pouvons écrire nos données! Voici comment vous pouvez vous envoyer un message si vous spécifiez votre identifiant dans les paramètres:

 bot.send_message(< id>, ' ') 

Eh bien, lorsque nous écrivons message.chat.id, nous voulons dire que le bot enverra un message au chat à partir duquel il a été appelé.

Conclusion


C’est tout! J'espère que vous comprenez comment recevoir des données du serveur, les traiter et les utiliser si nécessaire. Merci de votre attention.

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


All Articles