Telegram-Bot erstellen: drei Wege, und einer davon ganz ohne Programmieren
Die Hälfte der deutschen Nachfrage lautet „ohne programmieren“ oder „erstellen lassen“. Deshalb hier zuerst die Sortierung, dann der BotFather, das Token-Format und die zwei Stellen, an denen es typischerweise klemmt.
Michael ChenVon den vier deutschen Suchvorschlägen zu „telegram bot erstellen“ lauten zwei „ohne programmieren“ und „erstellen lassen“. Das ist eine deutliche Ansage, und sie ändert die Reihenfolge dieser Anleitung: Bevor irgendwo eine Programmiersprache auftaucht, gehört die Frage geklärt, ob Sie überhaupt eine brauchen.
Welcher der drei Wege Ihrer ist
Weg eins, ohne Programmieren. Für alles, was aus fertigen Bausteinen besteht: eine Willkommensnachricht, ein Menü mit Knöpfen, ein Formular, eine Weiterleitung von Anfragen an einen Mitarbeiter, eine automatische Verwaltung einer Gruppe. Dafür gibt es Baukastendienste, die den Bot für Sie betreiben; Sie klicken den Ablauf zusammen und tragen nur das Token ein, das Sie weiter unten beim BotFather holen. Der Preis dafür ist eine Abhängigkeit: Der Dienst sieht alles, was durch Ihren Bot läuft, und wenn er zumacht, steht der Bot still. Für einen Kundenkanal ist das häufig trotzdem der richtige Handel.
Weg zwei, ein kleines eigenes Programm. Sobald etwas mit Ihren eigenen Daten passieren soll, also eine Datenbank abgefragt, ein Bestand geprüft oder eine Berechnung gemacht wird. Dann kommen Sie um Code nicht herum, aber es ist weniger, als es klingt: Ein Bot, der auf eine Handvoll Befehle antwortet, sind ein paar Dutzend Zeilen.
Weg drei, machen lassen. Auch das steht in den Vorschlägen, und dagegen ist nichts zu sagen. Nur eine Sache dazu, die später teuer wird: Bestehen Sie darauf, dass das Token auf Ihr eigenes BotFather-Konto ausgestellt wird und Sie es kennen. Ein Bot, dessen Token nur der Dienstleister hat, ist nicht Ihr Bot, egal wer ihn bezahlt hat, und Sie können ihn weder umziehen noch übernehmen.
Der BotFather, und was dabei entsteht
Alle drei Wege gehen durch dieselbe Tür. Der BotFather ist selbst ein Bot; Sie schreiben ihm, senden /newbot, vergeben einen Anzeigenamen und dann einen Benutzernamen, der auf bot enden muss. Zurück kommt das Token.
Zum Format, weil danach ausdrücklich gesucht wird: Es sieht aus wie eine Zahl, ein Doppelpunkt und eine längere Buchstaben-Ziffern-Folge, also in der Bauart von 110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw. Der Teil vor dem Doppelpunkt ist die Kennung des Bots und nicht geheim. Der Teil danach ist der eigentliche Schlüssel.
Behandeln Sie das Ganze als Passwort. Wer das Token hat, ist der Bot: kann in seinem Namen schreiben, alles empfangen, was an ihn geht, und ihn in Gruppen einsetzen. Ein Token, das versehentlich in einem öffentlichen Code-Verzeichnis landet, wird binnen Stunden gefunden, weil nach genau diesem Muster automatisiert gesucht wird. Ist es passiert, senden Sie dem BotFather /token; das erzeugt ein neues und macht das alte unbrauchbar. Ein Verlust ist also ärgerlich, aber nicht endgültig, solange Sie noch Zugriff auf das Konto haben, unter dem der Bot angelegt wurde.
Nützliche weitere Befehle an derselben Stelle: /setdescription für den Text vor dem ersten Start, /setabouttext für die Profilangabe, /setuserpic für das Bild, /setcommands für die Befehlsliste im Menü, /deletebot zum Entfernen. Beschreibung und Bild sind übrigens keine Kosmetik: Ein beworbener Bot muss beides haben, sonst wird die Anzeige abgelehnt.
Die Chat-ID, und warum sie nicht beim BotFather steht
„botfather chat id“ ist der zweithäufigste deutsche Vorschlag zum BotFather, und dahinter steckt ein Missverständnis, das viele Stunden kostet. Der BotFather kennt keine Chat-IDs. Er stellt Bots aus, mehr nicht.
Die Kennung eines Chats entsteht erst dadurch, dass jemand Ihrem Bot schreibt. Ihr Programm bekommt die Nachricht als Aktualisierung geliefert, und darin steht die Kennung des Absenders. Erst ab diesem Moment können Sie diesem Menschen etwas senden.
Daraus folgt die praktische Regel für jeden Benachrichtigungs-Bot: Der Empfänger muss den Bot einmal selbst gestartet haben. Ein Bot kann sich nicht von sich aus bei jemandem melden, weil ihm schlicht die Kennung fehlt, an die er senden würde. Wer einen Bot bauen will, der Kunden aktiv anschreibt, baut etwas, das so nicht funktioniert, und sollte umplanen statt weitersuchen.
Für eine Gruppe gilt dasselbe mit einem Zusatz: In Gruppen bekommt ein Bot standardmäßig nur die Befehle, die ausdrücklich an ihn gerichtet sind, und Antworten auf seine eigenen Nachrichten. Alles andere sieht er nicht. Wer das ändern will, stellt es mit /setprivacy um und muss den Bot danach neu in die Gruppe aufnehmen, sonst gilt weiter der alte Zustand. Und eine Abkürzung, die selten genannt wird: Ein Bot mit Verwaltungsrechten in der Gruppe bekommt ohnehin alle Nachrichten.
Wo der Bot laufen muss
„hosting free“ steht in den Vorschlägen, und die ehrliche Antwort darauf ist eine Einschränkung. Ein Bot ist ein Programm, das ununterbrochen erreichbar sein muss. Kostenlose Angebote lösen das meist so, dass sie das Programm nach einiger Zeit ohne Anfragen schlafen legen. Für einen Bot heißt das: Er antwortet auf die erste Nachricht nach einer Pause nicht oder erst nach Sekunden, und genau daran scheitern die meisten ersten Versuche, nicht am Code.
Technisch gibt es zwei Betriebsarten, und sie schließen sich gegenseitig aus:
- Abholen. Ihr Programm fragt Telegram in einer Schleife nach neuem. Braucht keine erreichbare Adresse und keine Verschlüsselung, läuft also auch auf einem Rechner zu Hause. Das ist der Weg für den Anfang.
- Zustellen lassen. Telegram schickt jede Aktualisierung an eine Adresse von Ihnen. Das braucht ein gültiges Zertifikat und einen der Ports 443, 80, 88 oder 8443. Sparsamer und schneller, aber mit mehr Voraussetzungen.
Solange ein Zustellungsziel eingetragen ist, funktioniert das Abholen nicht mehr. Das ist die häufigste Ursache dafür, dass ein zuvor laufender Bot nach einer Umstellung plötzlich gar nichts mehr empfängt, und es sieht aus wie ein Fehler im Programm, ist aber keiner.
Und die Abgrenzung, die Aufwand spart
Ein Bot hängt an keinem Telefonnummer-Konto. Er hat kein Cloud-Passwort, keine Sitzungen und keine Anmeldung. Er braucht auch keine API-Kennung mit Hash; die gehört zu einer ganz anderen Anmeldeform, bei der ein Programm als Person auftritt. Wer für einen Bot nach API ID und Hash sucht, sucht am falschen Ende; der Unterschied ist im Beitrag zur zweistufigen Bestätigung beschrieben.
Das ist zugleich der Grund, warum ein Bot der ruhigere Weg ist. Ein Bot wird als Bot behandelt, ein Skript auf einem Nutzerkonto als auffälliger Nutzer. Wenn sich Ihre Aufgabe als Bot lösen lässt, lösen Sie sie als Bot.