Telegram-Bots

Einen Telegram Bot schreiben

Hier soll möglichst knapp erklärt werden, wie man einen Telegram-Bot in Python schreibt.

Ein Bot ist ein Programm, das Nachrichten von Telegram empfangen kann, und Nachrichten versenden kann.

Schritt 1: Telegram Bot in Telegram registrieren

Um einen Telegram-Bot schreiben zu können, müssen wir ihn erstmal registrieren.

Dafür müssen wir in Telegram in dem Suchfeld nach @BotFather suchen.

Das ist ein von Telegram bereitgestellter Bot, über den man eigene Bots erstellen kann.

Nachdem wir den BotFather per

/start

aktiviert haben, können wir per

/newbot

einen Dialog starten, um einen eigenen Bot zu erstellen.

Nachdem wir Namen und Usernamen festgelegt haben, bekommen wir einen Token.

Das ist das Passwort, das wir immer angeben müssen, um Nachrichten zu empfangen oder zu versenden.

Schritt 2: Unseren Bot in Telegram anschreiben

Um Nachrichten von unserem Bot empfangen zu können, müssen wir den ersten Schritt machen und ihn in Telegram per

/start

aktivieren.

Wenn wir das nicht machen, kann er uns keine Nachrichten senden!

Danach schreiben wir ihm eine kurze Nachricht.

Um ihn zu finden, suchen wir in dem Suchfeld in Telegram nach seinem Namen.

Schritt 3: Nachrichten an den Bot empfangen (im Browser)

Um Nachrichten zu empfangen, die an unseren Bot gesendet wurden, müssen wir nur den Browser öffnen und folgende URL eingeben:

https://api.telegram.org/bot{token}/getUpdates?limit=1

{token} muss mit dem Token ersetzt werden, den wir zuvor erhalten haben.

limit=1 begrenzt die erhaltenen Nachrichten auf die letzte, die gesendet wurde.

Danach sollte sich eine Seite öffnen, in der die Nachricht steht, die wir dem Bot gesendet haben.

Unter anderem sollte es ein Feld "id" geben, mit einer Nummer.

Diese brauchen wir für Schritt 4, um als Bot eine Nachricht zu senden!

Schritt 4: Nachricht senden (im Browser)

Eine Nachricht mit unserem Bot zu schreiben ist ganz einfach.

Alles, was wir tun müssen, ist in einem Browser folgenden Link zu öffnen:

https://api.telegram.org/bot{token}/sendMessage?chat_id={id}&text={message}

Dabei ersetzen wir {token} mit dem Token, den wir zuvor erhalten haben, und {id} mit der id aus Schritt 3.

Statt {text} können wir eine beliebige Nachricht schreiben.

Schritt 5: Nachrichten in Python senden und empfangen

Jetzt wo wir wissen, dass wir Nachrichten senden und empfangen können, indem wir einfach bestimmte URLs öffnen, müssen wir nur noch herausfinden, wie wir das in Python machen können.

Am einfachsten funktioniert das mit requests:

In [ ]:
import requests as req

# Wenn hier der Token eingeben wird, wird
# er automatisch in der unteren URL eingesetzt.
token = ""

antwort = req.get(f"https://api.telegram.org/bot{token}/getUpdates?limit=1")
print(antwort.text)

Wir sehen, dass die erhaltene Antwort so aussieht wie im Browser.

Um mit den Daten einfach in Python arbeiten zu können, können wir sie in JSON umwandeln.

In [ ]:
antwort_json = antwort.json()

antwort_json besteht aus geschachtelten Dictionaries.

Die Informationen die uns interessieren, sind der Text und die Person, von der die Nachricht stammt.

Aufgabe: Extrahieren Sie Name und Text aus antwort_json!

Wir können jetzt ein kleines Skript schreiben, das in regelmäßigen Abständen prüft, ob eine neue Nachricht eingetroffen ist, und in diesem Fall ein "Hallo" sendet.

In [ ]:
import time


def get_message():
    ...


def send_message(text, user_id):
    ...


while True:
    user_message = get_message()
    if "Hallo" in user_message:
        send_message("Hallo")
        break
    time.sleep(1)

Der obige Code funktioniert so natürlich noch nicht.

Schreiben Sie die Funktionen get_message und send_message, so dass Ihr erster Bot funktioniert!