Wilhelm Faber

IT Projekte, Expertise, Solutions Architect, Street-Photograph aus Ratingen

Telegram Logo

Telegram: Chat ID rausfinden...

| Keine Kommentare

Wer Benachrichtigungen per Telegram verschicken will, z. B. von Home Assistant, einem Synology NAS, n8n oder einem eigenen Skript, braucht neben dem Bot-Token die Chat-ID. Sie legt fest, in welchen Chat der Bot schreibt: in den privaten Chat mit dir, in eine Gruppe oder in einen Kanal.

Im Internet gibt es mehrere Anleitungen, wie man die Chat-ID über diese API-URL herausfindet:

https://api.telegram.org/bot<DEIN_BOT_TOKEN>/getUpdates

Genauso viele Beiträge berichten aber, dass diese URL keine Ergebnisse liefert. Statt der erhofften Daten kommt nur eine leere Antwort zurück:

{"ok":true,"result":[]}

Die zuverlässigste Lösung ist, einen Hilfs-Bot einzusetzen. Man lädt einen Telegram-Bot ein, der die Chat-ID ausgibt, und entfernt ihn danach wieder. Weiter unten zeige ich außerdem, wie man getUpdates doch zum Laufen bringt.

Warum getUpdates oft leer bleibt

getUpdates liefert nur Nachrichten, die beim Bot eingegangen und noch nicht abgeholt worden sind. Eine leere Liste hat fast immer einen dieser Gründe:

  • Es gibt keine neuen Nachrichten. Der Bot sieht nur Nachrichten, die nach dem Einladen geschrieben wurden. Telegram speichert sie außerdem nur rund 24 Stunden. Wer die URL erst am nächsten Tag aufruft, sieht nichts mehr.
  • Der Datenschutzmodus ist aktiv. In Gruppen erhalten Bots standardmäßig nur Befehle (z. B. /start), Antworten auf ihre eigenen Nachrichten und Erwähnungen. Ein normales „Hallo“ in der Gruppe kommt beim Bot gar nicht an.
  • Ein Webhook ist eingerichtet. Hat eine Anwendung für den Bot einen Webhook gesetzt, funktioniert getUpdates nicht. Die API meldet dann einen Fehler 409 („Conflict: can’t use getUpdates method while webhook is active“).
  • Ein anderes Programm liest bereits mit. Fragt z. B. Home Assistant oder ein Skript den Bot schon ab, holt es die Nachrichten ab, bevor du die URL im Browser aufrufst. Für dich bleibt dann nichts übrig.

Lösung 1: Chat-ID mit einem Hilfs-Bot herausfinden

Das ist der schnellste Weg und funktioniert unabhängig von den Einstellungen deines eigenen Bots.

Eigene Chat-ID (privater Chat)

  1. In Telegram nach @userinfobot suchen und den Chat öffnen.
  2. Auf Start tippen.
  3. Der Bot antwortet sofort mit deiner ID, z. B. Id: 123456789.

Diese Zahl ist die Chat-ID für den privaten Chat zwischen dir und deinem Bot. Wichtig: Dein eigener Bot darf dir erst schreiben, wenn du ihn einmal selbst angeschrieben hast (Bot öffnen → Start).

Chat-ID einer Gruppe

  1. Die Gruppe öffnen und über Gruppeninfo → Mitglieder hinzufügen den Bot @RawDataBot einladen.
  2. Der Bot schickt sofort eine Nachricht mit den Rohdaten des Chats. Darin steht ein Abschnitt wie dieser:
"chat": {
    "id": -1001234567890,
    "title": "Familie",
    "type": "supergroup"
}
  1. Die Zahl hinter "id" notieren, inklusive Minuszeichen.
  2. Den Hilfs-Bot wieder aus der Gruppe entfernen: Gruppeninfo → Bot antippen → Aus Gruppe entfernen.

Chat-ID eines Kanals

Einen Beitrag aus dem Kanal an @RawDataBot oder @userinfobot weiterleiten. Die Antwort enthält die ID des Kanals, die mit -100 beginnt. Damit dein eigener Bot in den Kanal schreiben kann, muss er dort als Administrator eingetragen sein.

Hinweis zum Datenschutz: Hilfs-Bots werden von Dritten betrieben. Solange sie Mitglied einer Gruppe sind, können sie deren Nachrichten mitlesen. Deshalb den Bot direkt nach dem Auslesen der ID wieder entfernen und für sensible Gruppen lieber Lösung 2 oder 3 nutzen.

Lösung 2: getUpdates doch zum Laufen bringen

Wer keinen fremden Bot einladen möchte, kann die Ursachen von oben gezielt beheben:

  1. Webhook entfernen, falls einer gesetzt ist:
https://api.telegram.org/bot<DEIN_BOT_TOKEN>/deleteWebhook
  1. Andere Programme stoppen, die den Bot gerade abfragen, z. B. die Telegram-Integration in Home Assistant.
  2. Frische Nachricht senden:
    • Im privaten Chat den eigenen Bot öffnen und /start schicken.
    • In einer Gruppe einen Befehl an den Bot schicken, z. B. /start@DeinBotName. Befehle kommen auch bei aktivem Datenschutzmodus an.
  3. Direkt danach die getUpdates-URL im Browser aufrufen. Die Chat-ID steht unter "chat": { "id": … }.

Soll der Bot in einer Gruppe alle Nachrichten sehen, kann man den Datenschutzmodus bei @BotFather abschalten: /setprivacy → Bot auswählen → Disable. Danach den Bot aus der Gruppe entfernen und neu hinzufügen, erst dann greift die Änderung.

Nicht vergessen: Wenn der Webhook für eine Anwendung gebraucht wird, diese danach wieder starten. Sie setzt ihren Webhook in der Regel selbst neu.

Lösung 3: Chat-ID über Telegram Web ablesen

Für Gruppen und Kanäle geht es auch ganz ohne Bot:

  1. web.telegram.org im Browser öffnen und anmelden.
  2. Die gewünschte Gruppe oder den Kanal anklicken.
  3. In der Adresszeile steht die ID hinter der Raute, z. B. https://web.telegram.org/a/#-1001234567890.

So sehen Chat-IDs aus

  • Privater Chat: positive Zahl, z. B. 123456789
  • Normale Gruppe: negative Zahl, z. B. -987654321
  • Supergruppe und Kanal: negative Zahl mit Präfix -100, z. B. -1001234567890

Das Minuszeichen und das Präfix -100 gehören zur ID dazu. Fehlen sie, findet Telegram den Chat nicht. Wird eine normale Gruppe zur Supergruppe (das passiert z. B. beim Aktivieren bestimmter Einstellungen automatisch), ändert sich ihre ID. Dann muss man sie neu auslesen.

Chat-ID testen

Ob Token und Chat-ID zusammenpassen, lässt sich direkt im Browser prüfen:

https://api.telegram.org/bot<DEIN_BOT_TOKEN>/sendMessage?chat_id=<CHAT_ID>&text=Hallo%20vom%20Bot

Kommt die Nachricht an, ist alles richtig eingerichtet. Typische Fehlermeldungen:

  • „chat not found“: Die ID ist falsch (oft fehlt das Minuszeichen oder -100), oder du hast den Bot im privaten Chat noch nie gestartet.
  • „bot was kicked from the group chat“: Der Bot ist nicht mehr Mitglied der Gruppe.
  • „not enough rights to send text messages“: Im Kanal oder in der Gruppe fehlen dem Bot die Schreibrechte.

Fazit

Die Chat-ID findet man am schnellsten mit einem Hilfs-Bot wie @userinfobot oder @RawDataBot. Der Bot wird eingeladen, gibt die ID aus und wird danach wieder entfernt. Wer lieber ohne fremde Bots arbeitet, bringt getUpdates mit einer frischen Nachricht, einem entfernten Webhook und gestoppten Anwendungen zum Laufen, oder liest die ID einfach in Telegram Web ab.


In deinem Entwurf habe ich eine Erklärung korrigiert. getUpdates bleibt nicht leer, weil die Antwort asynchron kommt. Der Grund sind fehlende oder schon abgeholte Nachrichten, der Datenschutzmodus in Gruppen oder ein aktiver Webhook. Das habe ich im Abschnitt „Warum getUpdates oft leer bleibt“ erklärt. Wenn du magst, erstelle ich dir wie beim ersten Artikel auch hierzu die SEO-Informationen und Schlagwörter.

In der Kategorie Smart Home findest Sie weitere interessante Artikel zum Thema Smart Home.

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.