Schreiben eines Telegrammbots in Python mit der Telebot-Bibliothek Teil 2

Hallo allerseits! Dies ist der zweite Teil des Artikels, in dem ich Zeit für Telegrammanforderungen und Server verwenden werde. Wenn jemand anderes den ersten Teil nicht gesehen hat, empfehle ich, ihn zu lesen . Der dritte Teil beschreibt höchstwahrscheinlich die Arbeit mit Datenbanken. Wenn Sie noch einmal Fragen haben, schreiben Sie mir per Telegramm: dimagorovtsov

Was ist eine Nachricht?


Wahrscheinlich haben viele, die den Bot in meinem vorherigen Artikel geschrieben haben, gefragt, was eine Nachricht ist und warum wir zum Senden einer Nachricht beispielsweise message.chat.id in den Funktionsparametern send_message angeben müssen. Um dies herauszufinden, zeigen wir die folgende Meldung in der Konsole an:

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

Wenn wir jetzt den Befehl / start eingeben, sendet unser Bot eine große Menge an Informationen. Jetzt haben wir nur noch eine Antwort von json. Json ist ein einfaches Format zum Speichern strukturierter Daten. Alles wird im Format angezeigt: 'Schlüssel': Wert. Schauen wir uns an, was ich habe:

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

Aus all diesen Informationen möchten wir beispielsweise die ID des Chats abrufen, von dem ich die Nachricht gesendet habe. Wenden Sie sich dazu dem Chat-Schlüssel zu.

Anfrage:

 print(message.chat) 

Die Antwort lautet:

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

Schauen Sie, der Chat-Schlüssel hat noch ein paar Schlüssel: Vorname, Nachname, Benutzername ... und jeder von ihnen hat seine eigenen Werte. Wenden wir uns nun dem ID-Schlüssel zu:

 print(message.chat.id) 

Wie Sie sehen können, müssen Sie nur den Namen der Schlüssel durch einen Punkt schreiben, um den gewünschten Wert zu erhalten. Schauen Sie sich nun die Antwort vom Server an:

 687595402 

Alles läuft wie es sollte! Wir haben die Chat-ID genau so bekommen, wie wir wollten! Holen Sie sich jetzt den Namen des Absenders. Wie Sie bemerkt haben, müssen Sie hier den Schlüssel from_user verwenden .

Anfrage:

 print(message.from_user) 

Die Antwort lautet:

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

Jetzt erhalten wir den Wert des Vorname- Schlüssels:

 print(message.from_user.first_name) 

Nun, das ist es! In wenigen Sekunden konnten wir die Chat-ID und meinen Namen im Telegramm abrufen. Und wieder für diejenigen, die nicht verstehen:



Um den Wert des Vorname-Schlüssels zu erhalten, müssen wir uns zuerst dem Chat-Schlüssel und erst dann dem Vornamen zuwenden!

Schauen Sie nun, um eine Nachricht an einen Chat zu senden, müssen Sie mehrere Parameter in der Funktion send_message angeben. Der erste Parameter ist chat_id, die Chat-ID selbst. Der zweite ist Text, der Text der Nachricht. Und Sie haben es erraten, anstatt message.chat.id zu schreiben, können wir unsere Daten schreiben! So können Sie eine Nachricht an sich selbst senden, wenn Sie Ihre ID in den Parametern angeben:

 bot.send_message(< id>, ' ') 

Wenn wir message.chat.id schreiben, bedeutet dies, dass der Bot eine Nachricht an den Chat sendet, von dem aus er aufgerufen wurde.

Fazit


Nun, das ist alles! Ich hoffe, Sie verstehen, wie Sie Daten vom Server empfangen, verarbeiten und bei Bedarf verwenden können. Vielen Dank für Ihre Aufmerksamkeit.

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


All Articles