Kopplung
Fehlerbehebung für Kanäle
Gateway-Konfiguration
Schnelleinrichtung
Bot-Token in BotFather erstellen
- Chat-Ablauf: Öffnen Sie Telegram, starten Sie einen Chat mit @BotFather (vergewissern Sie sich, dass der Handle genau
@BotFatherlautet), führen Sie/newbotaus, folgen Sie den Aufforderungen und speichern Sie das Token. - Web-Ablauf: Öffnen Sie die Web-App von BotFather – sie funktioniert in jedem Telegram-Client, einschließlich web.telegram.org – erstellen Sie den Bot in der Benutzeroberfläche und kopieren Sie sein Token.
Token und DM-Richtlinie konfigurieren
TELEGRAM_BOT_TOKEN (nur für das Standardkonto; benannte Konten müssen botToken oder tokenFile verwenden).
Telegram verwendet openclaw channels login telegram nicht; legen Sie das Token in der Konfiguration oder Umgebung fest und starten Sie anschließend das Gateway.Gateway starten und erste DM genehmigen
Bot zu einer Gruppe hinzufügen
- Ihre Telegram-Benutzer-ID für
allowFrom/groupAllowFrom - die Chat-ID der Telegram-Gruppe als Schlüssel unter
channels.telegram.groups
openclaw logs --follow, einen Bot für weitergeleitete IDs oder getUpdates der Bot API. Nachdem die Gruppe zugelassen wurde, bestätigt /whoami@<bot_username> die Benutzer- und Gruppen-IDs.Negative Supergruppen-IDs, die mit -100 beginnen, sind Gruppen-Chat-IDs. Sie gehören unter channels.telegram.groups, nicht unter groupAllowFrom.tokenFile hat Vorrang vor botToken, das wiederum Vorrang vor der Umgebung hat; die Konfiguration hat stets Vorrang vor TELEGRAM_BOT_TOKEN (das nur für das Standardkonto aufgelöst wird). Nach einem erfolgreichen Start speichert OpenClaw die Bot-Identität bis zu 24 Stunden im Cache, sodass bei Neustarts ein zusätzlicher Aufruf von getMe entfällt; das Ändern oder Entfernen des Tokens leert diesen Cache.Telegram-seitige Einstellungen
Datenschutzmodus und Gruppensichtbarkeit
Datenschutzmodus und Gruppensichtbarkeit
- den Datenschutzmodus über
/setprivacydeaktivieren oder - den Bot zum Gruppenadministrator machen.
Gruppenberechtigungen
Gruppenberechtigungen
Hilfreiche BotFather-Schalter
Hilfreiche BotFather-Schalter
/setjoingroups— Hinzufügen zu Gruppen zulassen/verbieten/setprivacy— Verhalten der Gruppensichtbarkeit
Dashboard-Mini-App
Führen Sie/dashboard in einer DM mit dem Bot aus, um das OpenClaw-Dashboard innerhalb von Telegram zu öffnen.
Voraussetzungen:
gateway.tailscale.mode: "serve"oder"funnel"für die veröffentlichte HTTPS-URL der Mini-App.- Ihre numerische Telegram-Benutzer-ID muss in der wirksamen
allowFromdes ausgewählten Kontos oder incommands.ownerAllowFromenthalten sein. - Verwenden Sie eine DM. In Gruppen antwortet
/dashboardmitopen this in a DM with the botund sendet keine Schaltfläche. - Docker-Installationen: Für die Modi Serve/Funnel muss das Gateway neben
tailscaledan Loopback gebunden sein, was Bridge-Netzwerke mit veröffentlichten Ports nicht erfüllen können. Führen Sie den Gateway-Container mitnetwork_mode: hostaus und binden Sie den Host-Sockettailscaled(/var/run/tailscale) sowie die CLItailscalein den Container ein.
Zugriffskontrolle und Aktivierung
Bot-Identität in Gruppen
In Gruppen und Forumsthemen adressiert eine ausdrückliche Erwähnung des konfigurierten Bot-Handles (beispielsweise@my_bot) den ausgewählten OpenClaw-Agenten, selbst wenn der Name der Agentenpersona vom Telegram-Benutzernamen abweicht. Die Richtlinie zur Inaktivität in Gruppen gilt weiterhin für nicht zugehörigen Datenverkehr, der Bot-Handle selbst ist jedoch niemals „jemand anderes“.
- DM-Richtlinie
- Gruppenrichtlinie und Zulassungslisten
- Verhalten bei Erwähnungen
channels.telegram.dmPolicy steuert den Zugriff auf Direktnachrichten:pairing(Standard)allowlist(erfordert mindestens eine Absender-ID inallowFrom)open(erfordert, dassallowFromden Wert"*"enthält)disabled
dmPolicy: "open" mit allowFrom: ["*"] ermöglicht jedem Telegram-Konto, das den Benutzernamen des Bots findet oder errät, dem Bot Befehle zu erteilen. Verwenden Sie dies nur für absichtlich öffentliche Bots mit stark eingeschränkten Tools; Bots mit einem einzigen Eigentümer sollten allowlist mit numerischen Benutzer-IDs verwenden.channels.telegram.allowFrom akzeptiert numerische Telegram-Benutzer-IDs. Die Präfixe telegram: / tg: werden akzeptiert und normalisiert.
In Konfigurationen mit mehreren Konten bildet eine restriktive channels.telegram.allowFrom auf oberster Ebene eine Sicherheitsgrenze: Eine allowFrom: ["*"] auf Kontoebene macht dieses Konto nicht öffentlich, sofern die zusammengeführte wirksame Zulassungsliste nicht weiterhin ausdrücklich einen Platzhalter enthält.
dmPolicy: "allowlist" mit leerer allowFrom blockiert alle DMs und wird von der Konfigurationsvalidierung abgelehnt.
Bei der Einrichtung werden ausschließlich numerische Benutzer-IDs abgefragt. Wenn Ihre Konfiguration @username-Einträge in der Zulassungsliste aus einer älteren Einrichtung enthält, führen Sie openclaw doctor --fix aus, um sie nach Möglichkeit in numerische IDs aufzulösen (erfordert ein Telegram-Bot-Token).
Wenn Sie sich zuvor auf Zulassungslistendateien des Kopplungsspeichers verlassen haben, kann openclaw doctor --fix die Einträge für Zulassungslistenabläufe in channels.telegram.allowFrom wiederherstellen (beispielsweise wenn dmPolicy: "allowlist" noch keine ausdrücklichen IDs enthält).Bevorzugen Sie für Bots mit einem einzigen Eigentümer dmPolicy: "allowlist" mit ausdrücklich angegebenen numerischen allowFrom-IDs, statt sich auf frühere Kopplungsgenehmigungen zu verlassen.Häufiges Missverständnis: Die Genehmigung einer DM-Kopplung bedeutet nicht, dass „dieser Absender überall autorisiert ist“. Die Kopplung gewährt ausschließlich DM-Zugriff. Wenn noch kein Befehlseigentümer vorhanden ist, legt die erste genehmigte Kopplung außerdem commands.ownerAllowFrom fest, wodurch Befehle ausschließlich für Eigentümer und Ausführungsgenehmigungen ein ausdrückliches Betreiberkonto erhalten. Die Autorisierung von Absendern in Gruppen stammt weiterhin aus ausdrücklichen Konfigurations-Zulassungslisten.
Um mit einer einzigen Identität sowohl für DMs als auch für Gruppenbefehle autorisiert zu sein, tragen Sie Ihre numerische Telegram-Benutzer-ID in channels.telegram.allowFrom ein und stellen Sie für Befehle ausschließlich für Eigentümer sicher, dass commands.ownerAllowFrom den Wert telegram:<your user id> enthält.Ihre Telegram-Benutzer-ID ermitteln
Sicherer (kein Drittanbieter-Bot): Senden Sie Ihrem Bot eine DM, führen Sieopenclaw logs --follow aus und lesen Sie from.id.Offizielle Bot-API-Methode:@userinfobot oder @getidsbot.Laufzeitverhalten
- Telegram wird innerhalb des Gateway-Prozesses ausgeführt.
- Das Routing ist deterministisch: Auf eingehende Telegram-Nachrichten wird über Telegram geantwortet (das Modell wählt keine Kanäle aus).
- Eingehende Nachrichten werden in den gemeinsamen Kanal-Umschlag mit Antwortmetadaten, Medienplatzhaltern und dauerhaft gespeichertem Antwortkettenkontext für Antworten normalisiert, die das Gateway erfasst hat.
- Gruppensitzungen werden anhand der Gruppen-ID isoliert. Bei Forumsthemen wird
:topic:<threadId>angehängt. - Direktnachrichten können
message_thread_identhalten; OpenClaw behält dies für Antworten bei. Themensitzungen für Direktnachrichten werden nur aufgeteilt, wenn TelegramgetMefür den Bot mithas_topics_enabled: truemeldet; andernfalls verbleiben Direktnachrichten in der themenunabhängigen Sitzung. - Long Polling verwendet den grammY-Runner mit einer sequenziellen Verarbeitung pro Chat und Thread. Für die Parallelität der Runner-Senke wird
agents.defaults.maxConcurrentverwendet. - Beim Start mit mehreren Konten wird die Anzahl gleichzeitiger
getMe-Prüfungen begrenzt, damit bei großen Bot-Flotten nicht alle Kontoprüfungen gleichzeitig ausgeführt werden. - Jeder Gateway-Prozess schützt das Long Polling, sodass jeweils nur ein aktiver Poller ein Bot-Token verwenden kann. Anhaltende
getUpdates-409-Konflikte weisen auf ein anderes OpenClaw-Gateway, Skript oder einen externen Poller hin, das bzw. der dasselbe Token verwendet. - Der Polling-Watchdog führt nach 120 Sekunden ohne abgeschlossene
getUpdates-Verfügbarkeitsprüfung einen Neustart durch. - Die Telegram Bot API unterstützt keine Lesebestätigungen (
sendReadReceiptsist nicht anwendbar).
channels.telegram.dm.threadReplies und channels.telegram.direct.<chatId>.threadReplies wurden entfernt. Führen Sie nach dem Upgrade openclaw doctor --fix aus, wenn Ihre Konfiguration diese Schlüssel noch enthält. Das Routing von Direktnachrichtenthemen folgt nun Telegram getMe.has_topics_enabled (gesteuert durch den Thread-Modus von BotFather): Bots mit aktivierten Themen verwenden threadbezogene Direktnachrichtensitzungen, wenn Telegram message_thread_id sendet; andere Direktnachrichten verbleiben in der themenunabhängigen Sitzung.Funktionsübersicht
Live-Stream-Vorschau (Nachrichtenbearbeitungen)
Live-Stream-Vorschau (Nachrichtenbearbeitungen)
editMessageText aus und schließt die Nachricht direkt an Ort und Stelle ab.channels.telegram.streamingistoff | partial | block | progress(Standard:partial)- Kurze anfängliche Antwortvorschauen werden entprellt und anschließend nach einer begrenzten Verzögerung angezeigt, falls die Ausführung noch aktiv ist
progressbehält einen bearbeitbaren Statusentwurf für den Werkzeugfortschritt bei, zeigt die stabile Statusbezeichnung an, wenn Antwortaktivität vor dem Werkzeugfortschritt eintritt, löscht ihn nach Abschluss und sendet die endgültige Antwort als normale Nachrichtstreaming.preview.toolProgresssteuert, ob Werkzeug-/Fortschrittsaktualisierungen dieselbe bearbeitete Vorschaunachricht wiederverwenden (Standard:true, wenn Vorschau-Streaming aktiv ist)streaming.preview.commandTextsteuert die Befehls-/Ausführungsdetails innerhalb dieser Zeilen:raw(Standard) oderstatus(nur Werkzeugbezeichnung)streaming.progress.commentary(Standard:false) aktiviert Kommentar-/Präambeltext des Assistenten im temporären Fortschrittsentwurf- Veraltete
channels.telegram.streamMode-, booleschestreaming-Werte und eingestellte Schlüssel für native Entwurfsvorschauen werden erkannt; führen Sieopenclaw doctor --fixaus, um sie zu migrieren
v2026.4.22).Antwortvorschau-Bearbeitungen beibehalten, aber Werkzeugfortschrittszeilen ausblenden:progress zeigt den Werkzeugfortschritt an, ohne die endgültige Antwort in diese Nachricht einzufügen. Legen Sie die Richtlinie für Befehlstext unter streaming.progress fest:streaming.mode: "off" deaktiviert Vorschaubearbeitungen und unterdrückt allgemeine Werkzeug-/Fortschrittsmeldungen, anstatt sie als eigenständige Statusnachrichten zu senden; Genehmigungsaufforderungen, Medien und Fehler werden weiterhin über die normale endgültige Zustellung übermittelt. streaming.preview.toolProgress: false behält nur Bearbeitungen der Antwortvorschau bei.replyToMode auf first, all oder batched festgelegt ist und die eingehende Nachricht ausgewählten Zitattext enthält, sendet OpenClaw die endgültige Antwort über den nativen Telegram-Pfad für Zitatantworten, anstatt die Antwortvorschau zu bearbeiten. Daher kann streaming.preview.toolProgress in diesem Durchlauf keine Statuszeilen anzeigen. Antworten auf die aktuelle Nachricht ohne ausgewählten Zitattext werden weiterhin gestreamt. Legen Sie replyToMode: "off" fest, wenn die Sichtbarkeit des Werkzeugfortschritts wichtiger ist als native Zitatantworten, oder streaming.preview.toolProgress: false, um diesen Kompromiss zu akzeptieren./reasoning stream streamt Schlussfolgerungen während der Generierung in die Live-Vorschau und löscht die Schlussfolgerungsvorschau nach der endgültigen Zustellung (verwenden Sie /reasoning on, um sie sichtbar zu lassen). Die endgültige Antwort wird ohne Schlussfolgerungstext gesendet.Formatierung vielfältiger Nachrichten
Formatierung vielfältiger Nachrichten
$400-600K nicht als Mathematik interpretiert werden. Langer vielfältiger Text wird automatisch entsprechend den Telegram-Beschränkungen aufgeteilt. Tabellen, die die Grenze von 20 Spalten überschreiten, werden stattdessen als Codeblock dargestellt.Standard: deaktiviert, um die Client-Kompatibilität zu gewährleisten — einige aktuelle Desktop-, Web-, Android- und Drittanbieter-Clients stellen akzeptierte vielfältige Nachrichten als nicht unterstützt dar. Lassen Sie diese Option deaktiviert, sofern nicht jeder mit dem Bot verwendete Client sie darstellen kann. /status zeigt an, ob vielfältige Nachrichten für die aktuelle Sitzung aktiviert oder deaktiviert sind.Linkvorschauen sind standardmäßig aktiviert. channels.telegram.linkPreview: false deaktiviert die automatische Entitätserkennung für vielfältigen Text.Native Befehle und benutzerdefinierte Befehle
Native Befehle und benutzerdefinierte Befehle
setMyCommands registriert. commands.native: "auto" aktiviert native Befehle für Telegram.Benutzerdefinierte Einträge zum Befehlsmenü hinzufügen:/ entfernen, in Kleinbuchstaben umwandeln); gültiges Muster a-z, 0-9, _, Länge 1-32; benutzerdefinierte Befehle können native Befehle nicht überschreiben; Konflikte/Duplikate werden übersprungen und protokolliert.Benutzerdefinierte Befehle sind lediglich Menüeinträge — sie implementieren nicht automatisch ein Verhalten. Plugin-/Skill-Befehle können weiterhin funktionieren, wenn sie eingegeben werden, auch wenn sie nicht im Telegram-Menü angezeigt werden. Wenn native Befehle deaktiviert sind, werden integrierte Befehle entfernt; benutzerdefinierte Befehle und Plugin-Befehle können bei entsprechender Konfiguration weiterhin registriert werden.Häufige Einrichtungsfehler:setMyCommands failedmitBOT_COMMANDS_TOO_MUCHnach einem erneuten Kürzungsversuch bedeutet, dass das Menü weiterhin zu groß ist; reduzieren Sie die Anzahl der Plugin-, Skill- oder benutzerdefinierten Befehle oder deaktivieren Siechannels.telegram.commands.native.- Wenn
deleteWebhook,deleteMyCommandsodersetMyCommandsmit404: Not Foundfehlschlägt, während direkte Bot-API-cURL-Befehle funktionieren, bedeutet dies in der Regel, dasschannels.telegram.apiRootauf den vollständigen/bot<TOKEN>-Endpunkt festgelegt wurde.apiRootdarf nur die Stammadresse der Bot API enthalten;openclaw doctor --fixentfernt ein versehentlich angehängtes/bot<TOKEN>. getMe returned 401bedeutet, dass Telegram das konfigurierte Bot-Token abgelehnt hat. Aktualisieren SiebotToken,tokenFileoderTELEGRAM_BOT_TOKEN(Standardkonto) mit dem aktuellen BotFather-Token; OpenClaw hält vor dem Polling an, sodass dies nicht als Fehler bei der Webhook-Bereinigung gemeldet wird.setMyCommands failedzusammen mit Netzwerk-/Abruffehlern bedeutet in der Regel, dass ausgehende DNS-/HTTPS-Verbindungen zuapi.telegram.orgblockiert sind.
Befehle zur Gerätekopplung (device-pair-Plugin)
Wenn installiert:/pairerzeugt einen Einrichtungscode- Fügen Sie den Code in die iOS-App ein
/pair pendinglistet ausstehende Anfragen auf (einschließlich Rolle/Berechtigungsumfängen)- Genehmigen:
/pair approve <requestId>,/pair approve(nur ausstehende Anfrage) oder/pair approve latest
requestId ersetzt; führen Sie vor der Genehmigung /pair pending erneut aus.Weitere Einzelheiten: Kopplung.Inline-Schaltflächen
Inline-Schaltflächen
off, dm, group, all, allowlist (Standard). Das veraltete capabilities: ["inlineButtons"] wird "all" zugeordnet.Beispiel für eine Nachrichtenaktion:web_app-Schaltflächen funktionieren nur in privaten Chats zwischen einem Benutzer und dem Bot.Callback-Klicks, die nicht von einem registrierten interaktiven Plugin-Handler übernommen werden, werden als Text an den Agenten weitergegeben: callback_data: <value>.Telegram-Nachrichtenaktionen für Agenten und Automatisierung
Telegram-Nachrichtenaktionen für Agenten und Automatisierung
sendMessage(to,content, optionalmediaUrl,replyToMessageId,messageThreadId)react(chatId,messageId,emoji)deleteMessage(chatId,messageId)editMessage(chatId,messageId,contentodercaption, optionalepresentation-Inline-Schaltflächen; Änderungen, die nur Schaltflächen betreffen, aktualisieren das Antwort-Markup)createForumTopic(chatId,name, optionaliconColor,iconCustomEmojiId)
send, react, delete, edit, sticker, sticker-search, topic-create.Aktivierung: channels.telegram.actions.sendMessage, deleteMessage, reactions, sticker (Standard: deaktiviert). edit, createForumTopic und editForumTopic sind standardmäßig ohne eigenen Umschalter aktiviert.
Laufzeitsendungen verwenden den aktiven Konfigurations-/Secret-Snapshot vom Start bzw. Neuladen, daher lösen Aktionspfade die SecretRef-Werte nicht bei jeder Sendung erneut auf.Semantik beim Entfernen von Reaktionen: /tools/reactions.Forenthemen und Thread-Verhalten
Forenthemen und Thread-Verhalten
:topic:<threadId> angehängt; Antworten und Tippanzeigen richten sich an den Themen-Thread; der Konfigurationspfad für Themen lautet channels.telegram.groups.<chatId>.topics.<threadId>.Das allgemeine Thema (threadId=1) ist ein Sonderfall: Beim Senden von Nachrichten wird message_thread_id weggelassen (Telegram lehnt sendMessage(...thread_id=1) mit „Thread nicht gefunden“ ab), Tippaktionen enthalten jedoch weiterhin message_thread_id (empirisch erforderlich, damit die Tippanzeige erscheint).Themeneinträge erben Gruppeneinstellungen, sofern diese nicht überschrieben werden (requireMention, allowFrom, skills, systemPrompt, enabled, groupPolicy). agentId gilt nur für Themen und wird nicht von den Gruppenstandards geerbt. topics."*" legt Standards für jedes Thema in dieser Gruppe fest; exakte Themen-IDs haben weiterhin Vorrang vor "*".Agent-Routing pro Thema: Jedes Thema kann über agentId in der Themenkonfiguration an einen anderen Agenten weitergeleitet werden und erhält dadurch einen eigenen Arbeitsbereich, Speicher und eine eigene Sitzung:agent:zu:telegram:group:-1001234567890:topic:3.Persistente ACP-Themenbindung: Forenthemen können ACP-Harness-Sitzungen über typisierte Bindungen auf oberster Ebene anheften (bindings[] mit type: "acp", match.channel: "telegram", peer.kind: "group" und einer themenspezifischen ID wie -1001234567890:topic:42). Derzeit auf Forenthemen in Gruppen/Supergruppen beschränkt. Siehe ACP-Agenten.Thread-gebundener ACP-Start aus dem Chat: /acp spawn <agent> --thread here|auto bindet das aktuelle Thema an eine neue ACP-Sitzung; Folgenachrichten werden direkt dorthin weitergeleitet, und OpenClaw heftet die Startbestätigung im Thema an. Gesteuert durch session.threadBindings.spawnSessions (Standard: true).Der Vorlagenkontext stellt MessageThreadId und IsForum bereit. Direktnachrichten-Chats mit message_thread_id behalten Antwortmetadaten bei, verwenden Thread-bezogene Sitzungsschlüssel jedoch nur, wenn Telegram getMe als has_topics_enabled: true meldet.
Die außer Betrieb genommenen Überschreibungen dm.threadReplies und direct.*.threadReplies wurden entfernt; der Thread-Modus von BotFather ist die alleinige maßgebliche Quelle. Führen Sie openclaw doctor --fix aus, um veraltete Konfigurationsschlüssel zu entfernen.Audio, Video und Sticker
Audio, Video und Sticker
Audionachrichten
Telegram unterscheidet Sprachnachrichten von Audiodateien. Standard: Verhalten einer Audiodatei; verwenden Sie im Agenten-Reply das Tag[[audio_as_voice]], um das Senden als Sprachnachricht zu erzwingen. Transkripte eingehender Sprachnachrichten werden im Agentenkontext als maschinell erzeugter, nicht vertrauenswürdiger Text gekennzeichnet, die Erwähnungserkennung verwendet jedoch weiterhin das Rohtranskript, damit durch Erwähnungen gesteuerte Sprachnachrichten weiterhin funktionieren.Videonachrichten
Telegram unterscheidet Videodateien von Videonachrichten. Videonachrichten unterstützen keine Beschriftungen; bereitgestellter Nachrichtentext wird separat gesendet.Standorte und Orte
Verwenden Sie die vorhandene Aktionsend mit einem eigenständigen location-Objekt. Koordinaten senden eine native Markierung; wenn sowohl name als auch address hinzugefügt werden, wird eine native Ortskarte gesendet. Standortsendungen können nicht mit Nachrichtentext oder Medien kombiniert werden.Sticker
Eingehend: Statisches WEBP wird heruntergeladen und verarbeitet (Platzhalter<media:sticker>); animiertes TGS und Video-WEBM werden übersprungen.Sticker-Kontextfelder: Sticker.emoji, Sticker.setName, Sticker.fileId, Sticker.fileUniqueId, Sticker.cachedDescription. Beschreibungen werden im SQLite-Plugin-Status von OpenClaw zwischengespeichert, um wiederholte Vision-Aufrufe zu reduzieren.Sticker-Aktionen aktivieren:Reaktionsbenachrichtigungen
Reaktionsbenachrichtigungen
message_reaction-Updates getrennt von Nachrichten-Payloads ein. Wenn dies aktiviert ist, stellt OpenClaw Systemereignisse wie Telegram reaction added: 👍 by Alice (@alice) on msg 42 in die Warteschlange.channels.telegram.reactionNotifications:off | own | all(Standard:own)channels.telegram.reactionLevel:off | ack | minimal | extensive(Standard:minimal)
own bedeutet nur Benutzerreaktionen auf vom Bot gesendete Nachrichten (Best-Effort über einen Cache gesendeter Nachrichten). Reaktionsereignisse berücksichtigen weiterhin die Telegram-Zugriffskontrollen (dmPolicy, allowFrom, groupPolicy, groupAllowFrom); nicht autorisierte Absender werden verworfen.Telegram stellt in Reaktionsupdates keine Thread-IDs bereit: Gruppen ohne Forum werden zur Gruppenchat-Sitzung weitergeleitet; Forum-Gruppen zur Sitzung des allgemeinen Themas (:topic:1), nicht zum exakten Ursprungsthema.allowed_updates für Polling/Webhook schließt message_reaction automatisch ein.Bestätigungsreaktionen
Bestätigungsreaktionen
ackReaction sendet ein Bestätigungs-Emoji, während OpenClaw eine eingehende Nachricht verarbeitet. messages.ackReactionScope bestimmt, wann es gesendet wird.Reihenfolge der Emoji-Auflösung:channels.telegram.accounts.<accountId>.ackReactionchannels.telegram.ackReactionmessages.ackReaction- Fallback auf das Emoji der Agentenidentität (
agents.entries.*.identity.emoji, andernfalls „👀“)
"", um die Reaktion für einen Kanal oder ein Konto zu deaktivieren.Geltungsbereich (messages.ackReactionScope, Standard "group-mentions"; derzeit keine Überschreibung pro Telegram-Konto oder Telegram-Kanal):all (Direktnachrichten + Gruppen, einschließlich Ereignissen in Umgebungsräumen), direct (nur Direktnachrichten), group-all (jede Gruppennachricht außer Ereignissen in Umgebungsräumen, keine Direktnachrichten), group-mentions (Gruppen, wenn der Bot erwähnt wird; keine Direktnachrichten — Standard), off / none (deaktiviert).group-mentions) löst in Direktnachrichten oder bei Ereignissen in Umgebungsräumen keine Bestätigungsreaktionen aus. Verwenden Sie direct oder all für Direktnachrichten; nur all bestätigt Ereignisse in Umgebungsräumen. Dieser Wert wird beim Start des Telegram-Providers gelesen, daher ist ein Neustart des Gateways erforderlich, damit die Änderung wirksam wird.Konfigurationsschreibvorgänge durch Telegram-Ereignisse und -Befehle
Konfigurationsschreibvorgänge durch Telegram-Ereignisse und -Befehle
configWrites !== false). Von Telegram ausgelöste Schreibvorgänge umfassen Gruppenmigrationsereignisse (migrate_to_chat_id, aktualisiert channels.telegram.groups) sowie /config set / /config unset (erfordert die Aktivierung von Befehlen).Deaktivieren:Long Polling im Vergleich zu Webhook
Long Polling im Vergleich zu Webhook
channels.telegram.webhookUrl und channels.telegram.webhookSecret fest; optional webhookPath (Standard /telegram-webhook), webhookHost (Standard 127.0.0.1), webhookPort (Standard 8787), webhookCertPath (selbstsigniertes Zertifikat im PEM-Format für Einrichtungen mit direkter IP oder ohne Domain).Im Long-Polling-Modus persistiert OpenClaw seine Neustart-Wassermarke erst, nachdem ein Update erfolgreich verarbeitet wurde; bei einem fehlgeschlagenen Handler kann dieses Update im selben Prozess erneut versucht werden, statt es als abgeschlossen zu markieren.Der lokale Listener bindet sich standardmäßig an 127.0.0.1:8787. Stellen Sie für öffentlichen Eingang einen Reverse-Proxy vor den lokalen Port oder setzen Sie webhookHost: "0.0.0.0" bewusst.Der Webhook-Modus validiert Anfrageschutzmechanismen, das geheime Telegram-Token und den JSON-Body und übergibt das Update anschließend an seine persistente Eingangswarteschlange, bevor eine leere 200-Antwort zurückgegeben wird. Eine erfolgreiche persistente Übernahme enthält x-openclaw-delivery-accepted: durable; Antworten für Integritätsprüfung, Routing, Authentifizierung, Validierung und Speicherfehler lassen diesen Header weg. Reverse-Proxys und Host-Controller können den Header voraussetzen, um die Übernahme durch OpenClaw von einer generischen leeren 200-Antwort zu unterscheiden, ohne die Annahme aus dem Antwortzeitpunkt abzuleiten.Nach dem persistenten Schreibvorgang beansprucht und verarbeitet OpenClaw Updates über die zentrale Kanal-Eingangsverarbeitung (Lanes pro Chat/pro Thema, Abschluss bei Übernahme des Turns, Zeitüberschreitung bei Stillstand vor der Übernahme). Langsame Agenten-Turns halten die Telegram-Zustellbestätigung nicht auf.Limits und CLI-Ziele
Limits und CLI-Ziele
channels.telegram.textChunkLimitstandardmäßig 4000;streaming.chunkMode="newline"bevorzugt Absatzgrenzen (Leerzeilen) vor der Aufteilung nach Länge.channels.telegram.mediaMaxMb(Standardwert 100) begrenzt die Größe eingehender und ausgehender Medien.- Der Gruppen-Kontextverlauf verwendet
channels.telegram.historyLimitodermessages.groupChat.historyLimit(Standardwert 50);0deaktiviert ihn. - Zusätzlicher Kontext aus Antworten/Zitaten/Weiterleitungen wird in einem ausgewählten Konversationskontextfenster zusammengeführt, wenn das Gateway die übergeordneten Nachrichten erfasst hat; der Cache erfasster Nachrichten befindet sich im SQLite-Plugin-Status von OpenClaw, und
openclaw doctor --fiximportiert veraltete Sidecars. Telegram enthält pro Aktualisierung nur einen flachenreply_to_message, daher sind Ketten, die älter als der Cache sind, auf diese Nutzlast beschränkt. - Telegram-Zulassungslisten steuern in erster Linie, wer den Agenten auslösen kann; sie bilden keine vollständige Schwärzungsgrenze für zusätzlichen Kontext.
- DM-Verlauf:
channels.telegram.dmHistoryLimit,channels.telegram.dms["<user_id>"].historyLimit.
openclaw message poll und unterstützen Forenthemen:--poll-duration-seconds (5-600), --poll-anonymous, --poll-public, --thread-id (oder ein :topic:-Ziel). --poll-option wird 2-12 Mal wiederholt (Telegrams Begrenzung für Optionen).Das Senden über Telegram unterstützt außerdem --presentation mit buttons-Blöcken für Inline-Tastaturen (wenn channels.telegram.capabilities.inlineButtons dies erlaubt), --pin oder --delivery '{"pin":true}', um eine angeheftete Zustellung anzufordern, sofern der Bot in diesem Chat Nachrichten anheften kann, sowie --force-document, um ausgehende Bilder, GIFs und Videos als Dokumente statt als komprimierte, animierte oder Video-Uploads zu senden.Aktionssteuerung: channels.telegram.actions.sendMessage=false deaktiviert alle ausgehenden Nachrichten einschließlich Umfragen; channels.telegram.actions.poll=false deaktiviert die Erstellung von Umfragen, während reguläre Sendungen aktiviert bleiben.Ausführungsgenehmigungen in Telegram
Ausführungsgenehmigungen in Telegram
channels.telegram.execApprovals.enabled("auto"aktiviert die Funktion, wenn mindestens eine genehmigende Person aufgelöst werden kann)channels.telegram.execApprovals.approvers(greift auf numerische Eigentümer-IDs auscommands.ownerAllowFromzurück)channels.telegram.execApprovals.target:dm(Standardwert) |channel|bothagentFilter,sessionFilter
channels.telegram.allowFrom, groupAllowFrom und defaultTo steuern, wer mit dem Bot kommunizieren kann und wohin er normale Antworten sendet – sie machen eine Person nicht zu einer genehmigenden Person für Ausführungen. Die erste genehmigte DM-Kopplung initialisiert commands.ownerAllowFrom, wenn noch kein Befehlseigentümer vorhanden ist, sodass Konfigurationen mit einem Eigentümer funktionieren, ohne IDs unter execApprovals.approvers zu duplizieren.Bei der Zustellung im Kanal wird der Befehlstext im Chat angezeigt; aktivieren Sie channel oder both nur in vertrauenswürdigen Gruppen/Themen. Wenn die Aufforderung in einem Forenthema eingeht, behält OpenClaw das Thema für die Genehmigungsaufforderung und die nachfolgende Nachricht bei. Ausführungsgenehmigungen laufen standardmäßig nach 30 Minuten ab.Inline-Genehmigungsschaltflächen erfordern außerdem, dass channels.telegram.capabilities.inlineButtons die Zieloberfläche zulässt (dm, group oder all). Genehmigungs-IDs mit dem Präfix plugin: werden über Plugin-Genehmigungen aufgelöst; andere werden zuerst über Ausführungsgenehmigungen aufgelöst.Siehe Ausführungsgenehmigungen.Steuerung von Fehlerantworten
Wenn beim Agenten ein Zustellungs- oder Provider-Fehler auftritt, steuert die Fehlerrichtlinie, ob Fehlermeldungen den Telegram-Chat erreichen:Fehlerbehebung
Bot antwortet nicht auf Gruppennachrichten ohne Erwähnung
Bot antwortet nicht auf Gruppennachrichten ohne Erwähnung
- Wenn
requireMention=false, muss der Datenschutzmodus von Telegram vollständige Sichtbarkeit erlauben: BotFather/setprivacy-> Disable, entfernen Sie den Bot anschließend aus der Gruppe und fügen Sie ihn erneut hinzu. openclaw channels statuswarnt, wenn die Konfiguration Gruppennachrichten ohne Erwähnung erwartet.openclaw channels status --probeprüft explizite numerische Gruppen-IDs; beim Platzhalter"*"kann die Mitgliedschaft nicht geprüft werden.- Schneller Sitzungstest:
/activation always.
Bot sieht überhaupt keine Gruppennachrichten
Bot sieht überhaupt keine Gruppennachrichten
- Wenn
channels.telegram.groupsvorhanden ist, muss die Gruppe aufgeführt sein (oder"*"enthalten). - Überprüfen Sie die Mitgliedschaft des Bots in der Gruppe.
- Prüfen Sie
openclaw logs --followauf Gründe für das Überspringen.
Befehle funktionieren teilweise oder gar nicht
Befehle funktionieren teilweise oder gar nicht
- Autorisieren Sie Ihre Absenderidentität (Kopplung und/oder numerische
allowFrom); die Befehlsautorisierung gilt auch dann, wenn die Gruppenrichtlinieopenlautet. setMyCommands failedmitBOT_COMMANDS_TOO_MUCHbedeutet, dass das native Menü zu viele Einträge enthält; reduzieren Sie Plugin-/Skill-/benutzerdefinierte Befehle oder deaktivieren Sie native Menüs.- Die Startaufrufe
deleteMyCommands/setMyCommandsund die TippstatusaufrufesendChatActionsind zeitlich begrenzt und werden bei einer Anfragezeitüberschreitung einmal über Telegrams Transport-Fallback wiederholt. Dauerhafte Netzwerk-/Abruffehler bedeuten üblicherweise, dass DNS/HTTPS zuapi.telegram.orgnicht erreichbar ist.
Beim Start wird ein nicht autorisiertes Token gemeldet
Beim Start wird ein nicht autorisiertes Token gemeldet
getMe returned 401ist ein Telegram-Authentifizierungsfehler für das konfigurierte Bot-Token. Kopieren Sie das Token erneut oder generieren Sie es in BotFather neu und aktualisieren Sie anschließendchannels.telegram.botToken,tokenFile,accounts.<id>.botTokenoderTELEGRAM_BOT_TOKEN(Standardkonto).deleteWebhook 401 Unauthorizedwährend des Starts ist ebenfalls ein Authentifizierungsfehler; die Behandlung als „kein Webhook vorhanden“ würde denselben Fehler aufgrund eines ungültigen Tokens lediglich bis zu einem späteren API-Aufruf verzögern.
Polling- oder Netzwerkinstabilität
Polling- oder Netzwerkinstabilität
- Node 22+ mit einer benutzerdefinierten Fetch-/Proxy-Konfiguration kann sofortiges Abbruchverhalten auslösen, wenn die Typen von
AbortSignalnicht übereinstimmen. - Einige Hosts lösen
api.telegram.orgzuerst zu IPv6 auf; ein fehlerhafter ausgehender IPv6-Zugriff verursacht sporadische API-Fehler. - Protokolleinträge mit
TypeError: fetch failedoderNetwork request for 'getUpdates' failed!werden als behebbare Netzwerkfehler erneut versucht. - Beim Polling-Start verwendet OpenClaw die erfolgreiche anfängliche
getMe-Prüfung für grammY erneut, sodass der Runner vor dem erstengetUpdateskeinen zweitengetMebenötigt. - Wenn
deleteWebhookbeim Polling-Start aufgrund eines vorübergehenden Netzwerkfehlers fehlschlägt, fährt OpenClaw mit Long Polling fort, statt einen weiteren Kontrollaufruf vor dem Polling auszuführen. Ein noch aktiver Webhook wird dann alsgetUpdates-Konflikt sichtbar; OpenClaw erstellt den Transport neu und versucht die Webhook-Bereinigung erneut. Polling stall detectedin den Protokollen bedeutet, dass OpenClaw das Polling neu startet und den Transport neu erstellt, nachdem standardmäßig 120 Sekunden lang keine abgeschlossene Long-Poll-Aktivität festgestellt wurde.openclaw channels status --probeundopenclaw doctorwarnen, wenn ein aktives Polling-Konto nach der StarttoleranzzeitgetUpdatesnoch nicht abgeschlossen hat, ein aktives Webhook-Konto nach der StarttoleranzzeitsetWebhooknoch nicht abgeschlossen hat oder die letzte erfolgreiche Polling-Transportaktivität veraltet ist.- Telegram berücksichtigt die Proxy-Umgebungsvariablen des Prozesses für den Bot-API-Transport:
HTTP_PROXY,HTTPS_PROXY,ALL_PROXYsowie Varianten in Kleinbuchstaben.NO_PROXY/no_proxykönnenapi.telegram.orgweiterhin umgehen. - Wenn
OPENCLAW_PROXY_URLfür eine Dienstumgebung festgelegt ist und keine standardmäßige Proxy-Umgebungsvariable vorhanden ist, verwendet Telegram diese URL ebenfalls für den Bot-API-Transport. - Leiten Sie auf VPS-Hosts mit instabilem direkten ausgehenden Zugriff/TLS Telegram-API-Aufrufe über einen Proxy:
- Node 22+ verwendet standardmäßig
autoSelectFamily=true(außer unter WSL2). Die Reihenfolge der Telegram-DNS-Ergebnisse berücksichtigtOPENCLAW_TELEGRAM_DNS_RESULT_ORDER, dannchannels.telegram.network.dnsResultOrderund anschließend den Prozessstandard (beispielsweiseNODE_OPTIONS=--dns-result-order=ipv4first); wenn keine Einstellung greift, wird unter Node 22+ aufipv4firstzurückgegriffen. - Erzwingen Sie unter WSL2 oder wenn reines IPv4-Verhalten besser funktioniert die Auswahl der Adressfamilie:
- Antworten aus dem RFC-2544-Benchmarkbereich (
198.18.0.0/15) sind für Telegram-Mediendownloads bereits standardmäßig zulässig. Wenn ein vertrauenswürdiger Fake-IP- oder transparenter Proxyapi.telegram.orgbei Mediendownloads in eine andere private/interne/für besondere Zwecke reservierte Adresse umschreibt, aktivieren Sie die ausschließlich für Telegram vorgesehene Umgehung:
- Dieselbe Aktivierung ist pro Konto unter
channels.telegram.accounts.<accountId>.network.dangerouslyAllowPrivateNetworkverfügbar. - Wenn Ihr Proxy Telegram-Medienhosts in
198.18.x.xauflöst, lassen Sie das gefährliche Flag zunächst deaktiviert – dieser Bereich ist bereits standardmäßig zulässig.
- Temporäre Umgebungsüberschreibungen:
OPENCLAW_TELEGRAM_DISABLE_AUTO_SELECT_FAMILY=1,OPENCLAW_TELEGRAM_ENABLE_AUTO_SELECT_FAMILY=1,OPENCLAW_TELEGRAM_DNS_RESULT_ORDER=ipv4first. - DNS-Antworten überprüfen:
Konfigurationsreferenz
Primäre Referenz: Konfigurationsreferenz – Telegram.Wesentliche Telegram-Felder
Wesentliche Telegram-Felder
- Start/Authentifizierung:
enabled,botToken,tokenFile(muss eine reguläre Datei sein; symbolische Links werden abgelehnt),accounts.* - Zugriffskontrolle:
dmPolicy,allowFrom,groupPolicy,groupAllowFrom,groups,groups.*.topics.*,bindings[]auf oberster Ebene (type: "acp") - Themenstandards:
groups.<chatId>.topics."*"gilt für nicht zugeordnete Forenthemen; exakte Themen-IDs haben Vorrang - Ausführungsgenehmigungen:
execApprovals,accounts.*.execApprovals - Befehle/Menü:
commands.native,commands.nativeSkills,customCommands - Threads/Antworten:
replyToMode,threadBindings - Streaming:
streaming(Modioff | partial | block | progress),streaming.preview.toolProgress - Formatierung/Zustellung:
textChunkLimit,streaming.chunkMode,richMessages,markdown.tables(off | bullets | code | block),linkPreview,responsePrefix - Medien/Netzwerk:
mediaMaxMb,network.autoSelectFamily,network.dangerouslyAllowPrivateNetwork,proxy - benutzerdefinierter API-Stammpfad:
apiRoot(nur Bot-API-Stammpfad;/bot<TOKEN>nicht einschließen),trustedLocalFileRoots(absolutefile_path-Stammpfade der selbst gehosteten Bot API) - Webhook:
webhookUrl,webhookSecret,webhookPath,webhookHost,webhookPort,webhookCertPath - Aktionen/Funktionen:
capabilities.inlineButtons,actions.sendMessage|editMessage|deleteMessage|reactions|sticker|createForumTopic|editForumTopic - Reaktionen:
reactionNotifications,reactionLevel - Fehler:
errorPolicy,silentErrorReplies - Schreibvorgänge/Verlauf:
configWrites,historyLimit,dmHistoryLimit,dms.*.historyLimit
channels.telegram.defaultAccount fest (oder schließen Sie channels.telegram.accounts.default ein), um das Standard-Routing eindeutig festzulegen. Andernfalls greift OpenClaw auf die erste normalisierte Konto-ID zurück und openclaw doctor gibt eine Warnung aus. Benannte Konten übernehmen channels.telegram.allowFrom / groupAllowFrom, jedoch keine accounts.default.*-Werte.