Ein Telegram Bot ist relativ schnell und nach einem festen Muster erstellt. Bei den Möglichkeiten der Antwortgebung eröffnen sich jedoch viele Möglichkeiten.
TL;DR
- die Erstellung eines Bots ist straight-forward
- ein Bot kann auf unterschiedliche Arten reagieren
- Möglichkeiten sind:
- einfache Textantworten
- Zitierungen
- Inline-Antworten
- uvm.
Generelle Hilfen zum Start
Generell bietet die API Dokumentation von Telegram genau die Hilfe, die man fürs Programmieren benötigt.
Zum Verständnis: Für meinen Code verwende ich PHP. Im Folgenden verwende ich die Begriffe „Bot“ und „Bot-Programm“ bzw. „PHP-Bot“ synonym, denn ein Bot ist letzten Endes nichts anderes, als ein reguläres PHP-Programm.
Kommunikationsschema eines Bots
Sehr gut erläutert das Kommunikationsschema eine Grafik, die ich bei Tutsplus gesehen habe.
Der linke Teil verläuft wie bei jedem regulären Chat auch: Das Endgerät sendet eine Nachricht an einen Telegram-Server, der diese dann an die entsprechenden Endgeräte der Empfänger weiterleitet.
Neu ist der rechte Teil: Hier kann entweder ein Bot per Long polling-Prinzip oder per Webhook-Prinzip auf Nachrichten reagieren. Im ersten Fall wird quasi in einer Dauerschleife eine regelmäßige Anfrage seitens des Bots (z.B. alle 5 Sekunden) nach Änderungen im Chat durchgeführt. Gibt es neue Nachrichten, kann der Bot diese entsprechend verarbeiten.
Ich persönlich finde den zweiten Fall per „Webhook“ für meine Zwecke interessanter, da der Bot solange untätig sein kann, bis ihm tatsächlich eine Nachricht gesendet wird. Der Telegram-Server leitet in diesem Fall jede Nachricht an den Bot an diesen weiter, ohne das der Bot nach Änderungen im Chat fragen müsste. Entsprechend basieren die nachfolgenden Ausführungen auf dem Webhook-Prinzip.
Einen neuen Bot kreieren
Dazu wendest du dich einfach an den Telegram-Kontakt @BotFather. Sein Frage- und Antwortspiel führt dich spielend leicht durch die Erstellung und Einrichtung des Bots seitens Telegram. Für die Umsetzung nach dem Webhook-Prinzip benötigst du den API-Token, den du im Verlauf der Einrichtung vom @BotFather erhältst.
Beachte: Deine Webhook-URL muss eine HTTPS-Adresse sein!
Mit diesem API-Token kannst du schließlich deinen Webhook bei Telegram mittels setWebhook-Methode anmelden. Z.B. indem du https://www.example.com/<token>/setWebhook?url=<webhook-url>
Und nun kann es auch schon los gehen. Füge deinen Bot als Kontakt hinzu und sende ihm eine Nachricht. Wenn du per error_log(file_get_contents("php://input"))
dein Server-Log verfolgst, kannst du sehen, welche Informationen in welcher Art „einfliegen“. Das ist für das Nachvollziehen der nachfolgenden Schritte sehr bedeutsam.
Falls hier doch keine Nachrichten ankommen, kannst du einmal die Antwort beim Abruf von https://www.example.com/<token>/getWebhookInformation ansehen.
Im nächsten Teil geht es an die Anwendung dessen, was in der Bot-API beschrieben wird.
Links zum Start
- Die API-Dokumentation findest du unter: https://core.telegram.org/bots/api
- Generelle Erläuterungen zu den auftretenden Begrifflichkeiten: https://core.telegram.org/bots
- Artikel über Bots bei Tutsplus: https://code.tutsplus.com/articles/how-to-start-a-telegram-bot-with-php–cms-26329
- Definition „WebHook“ bei Wikipedia: https://de.wikipedia.org/wiki/WebHooks
- Zum Telegram-Kontakt @BotFather: https://telegram.me/botfather
- Dokumentation zur setWebhook-Methode: https://core.telegram.org/bots/api#setwebhook