Telegram (Bot API)
Status: produktionsreif für Bot-DMs und -Gruppen über grammY. Long Polling ist der Standardmodus; der Webhook-Modus ist optional.Pairing
Kanal-Fehlerbehebung
Gateway-Konfiguration
Schnelleinrichtung
Das Bot-Token in BotFather erstellen
@BotFather ist).Führen Sie /newbot aus, folgen Sie den Eingabeaufforderungen und speichern Sie das Token.Token und DM-Richtlinie konfigurieren
TELEGRAM_BOT_TOKEN=... (nur Standardkonto).
Telegram verwendet nicht openclaw channels login telegram; konfigurieren Sie das Token in der Konfiguration/Umgebung und starten Sie dann das Gateway.TELEGRAM_BOT_TOKEN gilt nur für das Standardkonto.Einstellungen auf Telegram-Seite
Datenschutzmodus und Gruppensichtbarkeit
Datenschutzmodus und Gruppensichtbarkeit
- deaktivieren Sie den Datenschutzmodus über
/setprivacy, oder - machen Sie den Bot zum Gruppenadmin.
Gruppenberechtigungen
Gruppenberechtigungen
Hilfreiche BotFather-Umschalter
Hilfreiche BotFather-Umschalter
/setjoingroups, um Gruppenbeitritte zu erlauben/verbieten/setprivacyfür das Sichtbarkeitsverhalten in Gruppen
Zugriffskontrolle und Aktivierung
- DM-Richtlinie
- Gruppenrichtlinie und Allowlists
- Mention-Verhalten
channels.telegram.dmPolicy steuert den Zugriff auf Direktnachrichten:pairing(Standard)allowlist(erfordert mindestens eine Absender-ID inallowFrom)open(erfordert, dassallowFrom"*"enthält)disabled
channels.telegram.allowFrom akzeptiert numerische Telegram-Benutzer-IDs. Präfixe telegram: / tg: werden akzeptiert und normalisiert.
dmPolicy: "allowlist" mit leerem allowFrom blockiert alle DMs und wird von der Konfigurationsvalidierung abgelehnt.
Das Onboarding akzeptiert @username-Eingaben und löst sie zu numerischen IDs auf.
Wenn Sie ein Upgrade durchgeführt haben und Ihre Konfiguration @username-Allowlist-Einträge enthält, führen Sie openclaw doctor --fix aus, um sie aufzulösen (Best-Effort; erfordert ein Telegram-Bot-Token).
Wenn Sie zuvor auf Allowlist-Dateien aus dem Pairing-Store vertraut haben, kann openclaw doctor --fix Einträge in channels.telegram.allowFrom für Allowlist-Abläufe wiederherstellen (zum Beispiel, wenn dmPolicy: "allowlist" noch keine expliziten IDs hat).Für Bots mit einem Eigentümer bevorzugen Sie dmPolicy: "allowlist" mit expliziten numerischen allowFrom-IDs, damit die Zugriffsrichtlinie dauerhaft in der Konfiguration bleibt (anstatt von vorherigen Pairing-Genehmigungen abzuhängen).Häufiges Missverständnis: Die Genehmigung des DM-Pairings bedeutet nicht „dieser Absender ist überall autorisiert“.
Pairing gewährt nur DM-Zugriff. Die Autorisierung von Gruppenabsendern kommt weiterhin aus expliziten Konfigurations-Allowlists.
Wenn Sie möchten, dass „ich einmal autorisiert bin und sowohl DMs als auch Gruppenbefehle funktionieren“, tragen Sie Ihre numerische Telegram-Benutzer-ID in channels.telegram.allowFrom ein.Ihre Telegram-Benutzer-ID finden
Sicherer (kein Drittanbieter-Bot):- Senden Sie Ihrem Bot eine DM.
- Führen Sie
openclaw logs --followaus. - Lesen Sie
from.id.
@userinfobot oder @getidsbot.Runtime-Verhalten
- Telegram wird vom Gateway-Prozess verwaltet.
- Das Routing ist deterministisch: Eingehende Telegram-Nachrichten antworten zurück an Telegram (das Modell wählt keine Kanäle aus).
- Eingehende Nachrichten werden in das gemeinsame Kanal-Envelope mit Antwortmetadaten und Medien-Platzhaltern normalisiert.
- Gruppensitzungen werden nach Gruppen-ID isoliert. Forum-Topics hängen
:topic:<threadId>an, um Topics isoliert zu halten. - DM-Nachrichten können
message_thread_identhalten; OpenClaw routet sie mit threadbewussten Sitzungsschlüsseln und bewahrt die Thread-ID für Antworten. - Long Polling verwendet grammY runner mit Sequenzierung pro Chat/pro Thread. Die gesamte Runner-Sink-Parallelität verwendet
agents.defaults.maxConcurrent. - Die Telegram Bot API unterstützt keine Lesebestätigungen (
sendReadReceiptsgilt nicht).
Funktionsreferenz
Live-Stream-Vorschau (Nachrichtenbearbeitungen)
Live-Stream-Vorschau (Nachrichtenbearbeitungen)
- Direktchats: Vorschaunachricht +
editMessageText - Gruppen/Topics: Vorschaunachricht +
editMessageText
channels.telegram.streamingistoff | partial | block | progress(Standard:partial)progresswird auf Telegram zupartialabgebildet (Kompatibilität mit kanalübergreifender Benennung)- veraltete Werte
channels.telegram.streamModeund booleschestreaming-Werte werden automatisch abgebildet
- DM: OpenClaw behält dieselbe Vorschaunachricht und führt zum Abschluss eine finale Bearbeitung an Ort und Stelle aus (keine zweite Nachricht)
- Gruppe/Topic: OpenClaw behält dieselbe Vorschaunachricht und führt zum Abschluss eine finale Bearbeitung an Ort und Stelle aus (keine zweite Nachricht)
sendMessage + editMessageText zurück.Nur Telegram-Reasoning-Stream:/reasoning streamsendet Reasoning während der Generierung an die Live-Vorschau- die endgültige Antwort wird ohne Reasoning-Text gesendet
Formatierung und HTML-Fallback
Formatierung und HTML-Fallback
parse_mode: "HTML".- Markdown-artiger Text wird in Telegram-sicheres HTML gerendert.
- Rohes Modell-HTML wird escaped, um Telegram-Parse-Fehler zu reduzieren.
- Wenn Telegram geparstes HTML ablehnt, versucht OpenClaw es erneut als Klartext.
channels.telegram.linkPreview: false deaktiviert werden.Native Befehle und benutzerdefinierte Befehle
Native Befehle und benutzerdefinierte Befehle
setMyCommands durchgeführt.Standardwerte für native Befehle:commands.native: "auto"aktiviert native Befehle für Telegram
- Namen werden normalisiert (führendes
/entfernen, kleinschreiben) - gültiges Muster:
a-z,0-9,_, Länge1..32 - benutzerdefinierte Befehle können native Befehle nicht überschreiben
- Konflikte/Duplikate werden übersprungen und protokolliert
- benutzerdefinierte Befehle sind nur Menüeinträge; sie implementieren Verhalten nicht automatisch
- Plugin-/Skills-Befehle können weiterhin funktionieren, wenn sie eingegeben werden, auch wenn sie nicht im Telegram-Menü angezeigt werden
setMyCommands failedmitBOT_COMMANDS_TOO_MUCHbedeutet, dass das Telegram-Menü auch nach dem Kürzen noch überläuft; reduzieren Sie Plugin-/Skill-/benutzerdefinierte Befehle oder deaktivieren Siechannels.telegram.commands.native.setMyCommands failedmit Netzwerk-/Fetch-Fehlern bedeutet gewöhnlich, dass ausgehendes DNS/HTTPS zuapi.telegram.orgblockiert ist.
Geräte-Pairing-Befehle (device-pair-Plugin)
Wenn das Plugin device-pair installiert ist:/pairerzeugt einen Einrichtungscode- fügen Sie den Code in die iOS-App ein
/pair pendinglistet ausstehende Anfragen auf (einschließlich Rolle/Scopes)- genehmigen Sie die Anfrage:
/pair approve <requestId>für explizite Genehmigung/pair approve, wenn es nur eine ausstehende Anfrage gibt/pair approve latestfür die zuletzt eingegangene
scopes: []; jedes weitergereichte Operator-Token bleibt auf operator.approvals, operator.read, operator.talk.secrets und operator.write begrenzt. Bootstrap-Scopes werden rollenpräfixiert geprüft, sodass diese Operator-Allowlist nur Operator-Anfragen erfüllt; Rollen ohne Operator-Präfix benötigen weiterhin Scopes unter ihrem eigenen Rollenpräfix.Wenn ein Gerät es mit geänderten Auth-Details erneut versucht (zum Beispiel Rolle/Scopes/Public Key), wird die vorherige ausstehende Anfrage ersetzt und die neue Anfrage verwendet eine andere requestId. Führen Sie /pair pending erneut aus, bevor Sie genehmigen.Weitere Details: Pairing.Inline-Schaltflächen
Inline-Schaltflächen
offdmgroupallallowlist(Standard)
capabilities: ["inlineButtons"] wird zu inlineButtons: "all" abgebildet.Beispiel für Nachrichtenaktion: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,content)createForumTopic(chatId,name, optionaliconColor,iconCustomEmojiId)
send, react, delete, edit, sticker, sticker-search, topic-create).Gating-Steuerungen:channels.telegram.actions.sendMessagechannels.telegram.actions.deleteMessagechannels.telegram.actions.reactionschannels.telegram.actions.sticker(Standard: deaktiviert)
edit und topic-create sind derzeit standardmäßig aktiviert und haben keine separaten channels.telegram.actions.*-Schalter.
Runtime-Sendungen verwenden den aktiven Snapshot von Konfiguration/Secrets (Start/Reload), daher führen Aktionspfade keine ad-hoc-SecretRef-Neuauflösung pro Sendung durch.Semantik zum Entfernen von Reaktionen: /tools/reactionsAntwort-Threading-Tags
Antwort-Threading-Tags
Forum-Topics und Thread-Verhalten
Forum-Topics und Thread-Verhalten
- Topic-Sitzungsschlüssel hängen
:topic:<threadId>an - Antworten und Typing zielen auf den Topic-Thread
- Topic-Konfigurationspfad:
channels.telegram.groups.<chatId>.topics.<threadId>
threadId=1):- Nachrichtensendungen lassen
message_thread_idweg (Telegram lehntsendMessage(...thread_id=1)ab) - Typing-Aktionen enthalten weiterhin
message_thread_id
requireMention, allowFrom, skills, systemPrompt, enabled, groupPolicy).
agentId gilt nur für Topics und wird nicht von Gruppenstandards geerbt.Agent-Routing pro Topic: Jedes Topic kann durch Setzen von agentId in der Topic-Konfiguration zu einem anderen Agenten geroutet werden. Dadurch erhält jedes Topic einen eigenen isolierten Workspace, Speicher und eine eigene Sitzung. Beispiel:agent:zu:telegram:group:-1001234567890:topic:3Persistente ACP-Topic-Bindung: Forum-Topics können ACP-Harness-Sitzungen über typisierte ACP-Bindings auf oberster Ebene fixieren:bindings[]mittype: "acp"undmatch.channel: "telegram"
/acp spawn <agent> --thread here|autokann das aktuelle Telegram-Topic an eine neue ACP-Sitzung binden.- Nachfolgende Topic-Nachrichten werden direkt an die gebundene ACP-Sitzung weitergeleitet (kein
/acp steererforderlich). - OpenClaw pinnt die Spawn-Bestätigungsnachricht nach erfolgreicher Bindung im Topic.
- Erfordert
channels.telegram.threadBindings.spawnAcpSessions=true.
MessageThreadIdIsForum
- private Chats mit
message_thread_idbehalten DM-Routing bei, verwenden aber threadbewusste Sitzungsschlüssel/Antwortziele.
Audio, Video und Sticker
Audio, Video und Sticker
Audionachrichten
Telegram unterscheidet zwischen Sprachnachrichten und Audiodateien.- Standard: Verhalten von Audiodateien
- Tag
[[audio_as_voice]]in der Agentenantwort, um das Senden als Sprachnachricht zu erzwingen
Videonachrichten
Telegram unterscheidet zwischen Videodateien und Video Notes.Beispiel für Nachrichtenaktion:Sticker
Verarbeitung eingehender Sticker:- statisches WEBP: heruntergeladen und verarbeitet (Platzhalter
<media:sticker>) - animiertes TGS: übersprungen
- Video-WEBM: übersprungen
Sticker.emojiSticker.setNameSticker.fileIdSticker.fileUniqueIdSticker.cachedDescription
~/.openclaw/telegram/sticker-cache.json
Reaktionsbenachrichtigungen
Reaktionsbenachrichtigungen
message_reaction-Updates an (getrennt von Nachrichten-Payloads).Wenn aktiviert, reiht OpenClaw Systemereignisse ein wie:Telegram reaction added: 👍 by Alice (@alice) on msg 42
channels.telegram.reactionNotifications:off | own | all(Standard:own)channels.telegram.reactionLevel:off | ack | minimal | extensive(Standard:minimal)
ownbedeutet nur Benutzerreaktionen auf vom Bot gesendete Nachrichten (Best-Effort über den Cache gesendeter Nachrichten).- Reaktionsereignisse beachten weiterhin die Telegram-Zugriffskontrollen (
dmPolicy,allowFrom,groupPolicy,groupAllowFrom); nicht autorisierte Absender werden verworfen. - Telegram stellt in Reaktions-Updates keine Thread-IDs bereit.
- Nicht-Forum-Gruppen werden zur Gruppenchatsitzung geroutet
- Forum-Gruppen werden zur General-Topic-Sitzung der Gruppe (
:topic:1) geroutet, nicht zum genauen Ursprungsthema
allowed_updates für Polling/Webhook enthalten automatisch message_reaction.Ack-Reaktionen
Ack-Reaktionen
ackReaction sendet ein Bestätigungs-Emoji, während OpenClaw eine eingehende Nachricht verarbeitet.Reihenfolge der Auflösung:channels.telegram.accounts.<accountId>.ackReactionchannels.telegram.ackReactionmessages.ackReaction- Fallback auf Agent-Identity-Emoji (
agents.list[].identity.emoji, sonst ”👀”)
- Telegram erwartet Unicode-Emoji (zum Beispiel ”👀”).
- Verwenden Sie
"", um die Reaktion für einen Kanal oder ein Konto zu deaktivieren.
Konfigurationsschreibvorgänge aus Telegram-Ereignissen und -Befehlen
Konfigurationsschreibvorgänge aus Telegram-Ereignissen und -Befehlen
configWrites !== false).Durch Telegram ausgelöste Schreibvorgänge umfassen:- Gruppenmigrationsereignisse (
migrate_to_chat_id) zum Aktualisieren vonchannels.telegram.groups /config setund/config unset(erfordert aktivierte Befehle)
Long Polling vs Webhook
Long Polling vs Webhook
- setzen Sie
channels.telegram.webhookUrl - setzen Sie
channels.telegram.webhookSecret(erforderlich, wenn eine Webhook-URL gesetzt ist) - optional
channels.telegram.webhookPath(Standard/telegram-webhook) - optional
channels.telegram.webhookHost(Standard127.0.0.1) - optional
channels.telegram.webhookPort(Standard8787)
127.0.0.1:8787.Wenn sich Ihr öffentlicher Endpunkt unterscheidet, platzieren Sie einen Reverse Proxy davor und zeigen Sie mit webhookUrl auf die öffentliche URL.
Setzen Sie webhookHost (zum Beispiel 0.0.0.0), wenn Sie absichtlich externen Ingress benötigen.Limits, Wiederholungen und CLI-Ziele
Limits, Wiederholungen und CLI-Ziele
- Standard für
channels.telegram.textChunkLimitist 4000. channels.telegram.chunkMode="newline"bevorzugt Absatzgrenzen (Leerzeilen), bevor nach Länge aufgeteilt wird.channels.telegram.mediaMaxMb(Standard 100) begrenzt die Größe eingehender und ausgehender Telegram-Medien.channels.telegram.timeoutSecondsüberschreibt das Timeout des Telegram-API-Clients (wenn nicht gesetzt, gilt der grammY-Standard).- Der Gruppenkontextverlauf verwendet
channels.telegram.historyLimitodermessages.groupChat.historyLimit(Standard 50);0deaktiviert ihn. - zusätzlicher Kontext für Antwort/Zitat/Weiterleitung wird derzeit unverändert weitergegeben.
- Telegram-Allowlists steuern in erster Linie, wer den Agenten auslösen kann, nicht eine vollständige Redaktionsgrenze für zusätzlichen Kontext.
- DM-Verlaufssteuerungen:
channels.telegram.dmHistoryLimitchannels.telegram.dms["<user_id>"].historyLimit
- die Konfiguration
channels.telegram.retrygilt für Telegram-Sendehelfer (CLI/Tools/Aktionen) bei behebbaren ausgehenden API-Fehlern.
openclaw message poll und unterstützen Forum-Topics:--poll-duration-seconds(5-600)--poll-anonymous--poll-public--thread-idfür Forum-Topics (oder verwenden Sie ein:topic:-Ziel)
--buttonsfür Inline-Tastaturen, wennchannels.telegram.capabilities.inlineButtonsdies für die Zieloberfläche erlaubt--force-document, um ausgehende Bilder und GIFs als Dokumente statt als komprimierte Fotos oder Uploads animierter Medien zu senden
channels.telegram.actions.sendMessage=falsedeaktiviert ausgehende Telegram-Nachrichten, einschließlich Umfragenchannels.telegram.actions.poll=falsedeaktiviert die Erstellung von Telegram-Umfragen, während normale Sendungen aktiviert bleiben
Exec-Genehmigungen in Telegram
Exec-Genehmigungen in Telegram
channels.telegram.execApprovals.enabledchannels.telegram.execApprovals.approvers(optional; verwendet, wenn möglich, numerische Eigentümer-IDs als Fallback, die ausallowFromund direktemdefaultToabgeleitet werden)channels.telegram.execApprovals.target(dm|channel|both, Standard:dm)agentFilter,sessionFilter
enabled nicht gesetzt oder "auto" ist und mindestens ein Approver aufgelöst werden kann, entweder aus execApprovals.approvers oder aus der numerischen Eigentümerkonfiguration des Kontos (allowFrom und Direktnachrichten-defaultTo). Setzen Sie enabled: false, um Telegram explizit als nativen Genehmigungsclient zu deaktivieren. Genehmigungsanfragen fallen ansonsten auf andere konfigurierte Genehmigungsrouten oder die Fallback-Richtlinie für Exec-Genehmigungen zurück.Telegram rendert außerdem die gemeinsamen Genehmigungsschaltflächen, die von anderen Chat-Kanälen verwendet werden. Der native Telegram-Adapter ergänzt hauptsächlich Approver-DM-Routing, Fanout in Kanal/Topic und Typing-Hinweise vor der Zustellung.
Wenn diese Schaltflächen vorhanden sind, bilden sie die primäre UX für Genehmigungen; OpenClaw
sollte einen manuellen /approve-Befehl nur dann einschließen, wenn das Tool-Ergebnis angibt,
dass Chat-Genehmigungen nicht verfügbar sind oder manuelle Genehmigung der einzige Weg ist.Zustellregeln:target: "dm"sendet Genehmigungsaufforderungen nur an aufgelöste Approver-DMstarget: "channel"sendet die Aufforderung zurück in den auslösenden Telegram-Chat/das Topictarget: "both"sendet an Approver-DMs und den auslösenden Chat/das Topic
/approve verwenden noch Telegram-Genehmigungsschaltflächen nutzen.Verhalten bei der Genehmigungsauflösung:- IDs mit Präfix
plugin:werden immer über Plugin-Genehmigungen aufgelöst. - Andere Genehmigungs-IDs versuchen zuerst
exec.approval.resolve. - Wenn Telegram auch für Plugin-Genehmigungen autorisiert ist und das Gateway meldet,
dass die Exec-Genehmigung unbekannt/abgelaufen ist, versucht Telegram es einmal erneut über
plugin.approval.resolve. - Echte Ablehnungen/Fehler bei Exec-Genehmigungen fallen nicht stillschweigend auf die Plugin-Genehmigungsauflösung zurück.
channel oder both also nur in vertrauenswürdigen Gruppen/Topics. Wenn die Aufforderung in einem Forum-Topic landet, bewahrt OpenClaw das Topic sowohl für die Genehmigungsaufforderung als auch für das Follow-up nach der Genehmigung. Exec-Genehmigungen laufen standardmäßig nach 30 Minuten ab.Inline-Genehmigungsschaltflächen hängen außerdem davon ab, dass channels.telegram.capabilities.inlineButtons die Zieloberfläche erlaubt (dm, group oder all).Zugehörige Dokumentation: Exec approvalsFehlerantwort-Steuerungen
Wenn der Agent auf einen Zustellungs- oder Provider-Fehler stößt, kann Telegram entweder mit dem Fehlertext antworten oder ihn unterdrücken. Zwei Konfigurationsschlüssel steuern dieses Verhalten:| Schlüssel | Werte | Standard | Beschreibung |
|---|---|---|---|
channels.telegram.errorPolicy | reply, silent | reply | reply sendet eine freundliche Fehlermeldung in den Chat. silent unterdrückt Fehlerantworten vollständig. |
channels.telegram.errorCooldownMs | number (ms) | 60000 | Mindestzeit zwischen Fehlerantworten an denselben Chat. Verhindert Fehler-Spam bei Ausfällen. |
Fehlerbehebung
Bot antwortet nicht auf Gruppennachrichten ohne Mention
Bot antwortet nicht auf Gruppennachrichten ohne Mention
- Wenn
requireMention=false, muss der Telegram-Datenschutzmodus volle Sichtbarkeit erlauben.- BotFather:
/setprivacy-> Deaktivieren - dann Bot aus der Gruppe entfernen und erneut hinzufügen
- BotFather:
openclaw channels statuswarnt, wenn die Konfiguration nicht erwähnte Gruppennachrichten erwartet.openclaw channels status --probekann explizite numerische Gruppen-IDs prüfen; Wildcard"*"kann nicht auf Mitgliedschaft geprüft werden.- schneller Sitzungstest:
/activation always.
Bot sieht Gruppennachrichten überhaupt nicht
Bot sieht Gruppennachrichten überhaupt nicht
- wenn
channels.telegram.groupsexistiert, muss die Gruppe aufgeführt sein (oder"*"enthalten) - Bot-Mitgliedschaft in der Gruppe prüfen
- Protokolle prüfen:
openclaw logs --follownach Gründen für das Überspringen
Befehle funktionieren teilweise oder gar nicht
Befehle funktionieren teilweise oder gar nicht
- autorisieren Sie Ihre Absenderidentität (Pairing und/oder numerisches
allowFrom) - Befehlsautorisierung gilt weiterhin, auch wenn die Gruppenrichtlinie
openist setMyCommands failedmitBOT_COMMANDS_TOO_MUCHbedeutet, dass das native Menü zu viele Einträge hat; reduzieren Sie Plugin-/Skill-/benutzerdefinierte Befehle oder deaktivieren Sie native MenüssetMyCommands failedmit Netzwerk-/Fetch-Fehlern weist normalerweise auf DNS-/HTTPS-Erreichbarkeitsprobleme zuapi.telegram.orghin
Polling- oder Netzwerk-Instabilität
Polling- oder Netzwerk-Instabilität
- Node 22+ + benutzerdefiniertes Fetch/Proxy kann sofortiges Abort-Verhalten auslösen, wenn
AbortSignal-Typen nicht übereinstimmen. - Einige Hosts lösen
api.telegram.orgzuerst zu IPv6 auf; fehlerhafter IPv6-Egress kann intermittierende Telegram-API-Fehler verursachen. - Wenn Protokolle
TypeError: fetch failedoderNetwork request for 'getUpdates' failed!enthalten, versucht OpenClaw diese nun als behebbare Netzwerkfehler erneut. - Auf VPS-Hosts mit instabilem direktem Egress/TLS leiten Sie Telegram-API-Aufrufe über
channels.telegram.proxy:
- Node 22+ verwendet standardmäßig
autoSelectFamily=true(außer WSL2) unddnsResultOrder=ipv4first. - Wenn Ihr Host WSL2 ist oder explizit besser mit IPv4-only-Verhalten funktioniert, erzwingen Sie die Familienauswahl:
- Antworten aus dem RFC-2544-Benchmark-Bereich (
198.18.0.0/15) sind bereits standardmäßig für Telegram-Mediendownloads erlaubt. Wenn ein vertrauenswürdiges Fake-IP- oder transparenter Proxyapi.telegram.orgbei Mediendownloads auf eine andere private/interne/special-use-Adresse umschreibt, können Sie den nur für Telegram geltenden Bypass aktivieren:
- Dieselbe Aktivierung ist pro Konto verfügbar unter
channels.telegram.accounts.<accountId>.network.dangerouslyAllowPrivateNetwork. - Wenn Ihr Proxy Telegram-Media-Hosts zu
198.18.x.xauflöst, lassen Sie das gefährliche Flag zunächst deaktiviert. Telegram-Medien erlauben den RFC-2544- Benchmark-Bereich bereits standardmäßig.
- Umgebungsüberschreibungen (temporär):
OPENCLAW_TELEGRAM_DISABLE_AUTO_SELECT_FAMILY=1OPENCLAW_TELEGRAM_ENABLE_AUTO_SELECT_FAMILY=1OPENCLAW_TELEGRAM_DNS_RESULT_ORDER=ipv4first
- DNS-Antworten validieren:
Verweise auf die Telegram-Konfigurationsreferenz
Primäre Referenz:-
channels.telegram.enabled: Start des Kanals aktivieren/deaktivieren. -
channels.telegram.botToken: Bot-Token (BotFather). -
channels.telegram.tokenFile: Token aus einem regulären Dateipfad lesen. Symlinks werden abgelehnt. -
channels.telegram.dmPolicy:pairing | allowlist | open | disabled(Standard: pairing). -
channels.telegram.allowFrom: DM-Allowlist (numerische Telegram-Benutzer-IDs).allowlisterfordert mindestens eine Absender-ID.openerfordert"*".openclaw doctor --fixkann veraltete@username-Einträge zu IDs auflösen und Allowlist-Einträge aus Pairing-Store-Dateien in Allowlist-Migrationsabläufen wiederherstellen. -
channels.telegram.actions.poll: Erstellung von Telegram-Umfragen aktivieren oder deaktivieren (standardmäßig aktiviert; erfordert weiterhinsendMessage). -
channels.telegram.defaultTo: Standard-Telegram-Ziel, das von CLI--deliververwendet wird, wenn kein explizites--reply-toangegeben wird. -
channels.telegram.groupPolicy:open | allowlist | disabled(Standard: allowlist). -
channels.telegram.groupAllowFrom: Gruppenabsender-Allowlist (numerische Telegram-Benutzer-IDs).openclaw doctor --fixkann veraltete@username-Einträge zu IDs auflösen. Nicht numerische Einträge werden zur Auth-Zeit ignoriert. Gruppen-Auth verwendet keinen DM-Pairing-Store-Fallback (2026.2.25+). -
Präzedenz bei mehreren Konten:
- Wenn zwei oder mehr Konto-IDs konfiguriert sind, setzen Sie
channels.telegram.defaultAccount(oder fügen Siechannels.telegram.accounts.defaultein), um das Standard-Routing explizit zu machen. - Wenn keines von beiden gesetzt ist, verwendet OpenClaw als Fallback die erste normalisierte Konto-ID, und
openclaw doctorwarnt. channels.telegram.accounts.default.allowFromundchannels.telegram.accounts.default.groupAllowFromgelten nur für das Kontodefault.- Benannte Konten erben
channels.telegram.allowFromundchannels.telegram.groupAllowFrom, wenn Werte auf Kontoebene nicht gesetzt sind. - Benannte Konten erben nicht
channels.telegram.accounts.default.allowFrom/groupAllowFrom.
- Wenn zwei oder mehr Konto-IDs konfiguriert sind, setzen Sie
-
channels.telegram.groups: Standardwerte pro Gruppe + Allowlist (verwenden Sie"*"für globale Standardwerte).channels.telegram.groups.<id>.groupPolicy: Überschreibung pro Gruppe fürgroupPolicy(open | allowlist | disabled).channels.telegram.groups.<id>.requireMention: Standard für Mention-Gating.channels.telegram.groups.<id>.skills: Skill-Filter (weggelassen = alle Skills, leer = keine).channels.telegram.groups.<id>.allowFrom: Überschreibung der Absender-Allowlist pro Gruppe.channels.telegram.groups.<id>.systemPrompt: zusätzlicher System-Prompt für die Gruppe.channels.telegram.groups.<id>.enabled: deaktiviert die Gruppe, wennfalse.channels.telegram.groups.<id>.topics.<threadId>.*: Überschreibungen pro Topic (Gruppenfelder + Topic-onlyagentId).channels.telegram.groups.<id>.topics.<threadId>.agentId: dieses Topic an einen bestimmten Agenten routen (überschreibt Routing auf Gruppenebene und Binding-Routing).
-
channels.telegram.groups.<id>.topics.<threadId>.groupPolicy: Überschreibung pro Topic fürgroupPolicy(open | allowlist | disabled). -
channels.telegram.groups.<id>.topics.<threadId>.requireMention: Überschreibung des Mention-Gatings pro Topic. -
bindings[]auf oberster Ebene mittype: "acp"und kanonischer Topic-IDchatId:topic:topicIdinmatch.peer.id: Felder für persistente ACP-Topic-Bindung (siehe ACP Agents). -
channels.telegram.direct.<id>.topics.<threadId>.agentId: DM-Topics an einen bestimmten Agenten routen (gleiches Verhalten wie Forum-Topics). -
channels.telegram.execApprovals.enabled: Telegram als chatbasierten Exec-Genehmigungsclient für dieses Konto aktivieren. -
channels.telegram.execApprovals.approvers: Telegram-Benutzer-IDs, die Exec-Anfragen genehmigen oder ablehnen dürfen. Optional, wennchannels.telegram.allowFromoder ein direkteschannels.telegram.defaultToden Eigentümer bereits identifiziert. -
channels.telegram.execApprovals.target:dm | channel | both(Standard:dm).channelundbothbewahren vorhandene ursprüngliche Telegram-Topics. -
channels.telegram.execApprovals.agentFilter: optionaler Agent-ID-Filter für weitergeleitete Genehmigungsaufforderungen. -
channels.telegram.execApprovals.sessionFilter: optionaler Sitzungsschlüssel-Filter (Teilzeichenfolge oder Regex) für weitergeleitete Genehmigungsaufforderungen. -
channels.telegram.accounts.<account>.execApprovals: Überschreibung pro Konto für Telegram-Exec-Genehmigungsrouting und Approver-Autorisierung. -
channels.telegram.capabilities.inlineButtons:off | dm | group | all | allowlist(Standard: allowlist). -
channels.telegram.accounts.<account>.capabilities.inlineButtons: Überschreibung pro Konto. -
channels.telegram.commands.nativeSkills: Telegram-native Skills-Befehle aktivieren/deaktivieren. -
channels.telegram.replyToMode:off | first | all(Standard:off). -
channels.telegram.textChunkLimit: Größe ausgehender Chunks (Zeichen). -
channels.telegram.chunkMode:length(Standard) odernewline, um an Leerzeilen (Absatzgrenzen) zu teilen, bevor nach Länge gechunked wird. -
channels.telegram.linkPreview: Link-Vorschauen für ausgehende Nachrichten umschalten (Standard: true). -
channels.telegram.streaming:off | partial | block | progress(Live-Stream-Vorschau; Standard:partial;progresswird aufpartialabgebildet;blockist Kompatibilität für den veralteten Vorschaumodus). Die Telegram-Vorschau verwendet eine einzelne Vorschaunachricht, die an Ort und Stelle bearbeitet wird. -
channels.telegram.mediaMaxMb: Begrenzung für eingehende/ausgehende Telegram-Medien (MB, Standard: 100). -
channels.telegram.retry: Wiederholungsrichtlinie für Telegram-Sendehelfer (CLI/Tools/Aktionen) bei behebbaren ausgehenden API-Fehlern (Versuche,minDelayMs,maxDelayMs,jitter). -
channels.telegram.network.autoSelectFamily: Node-autoSelectFamilyüberschreiben (true=aktivieren, false=deaktivieren). Standardmäßig aktiviert unter Node 22+, bei WSL2 standardmäßig deaktiviert. -
channels.telegram.network.dnsResultOrder: DNS-Ergebnisreihenfolge überschreiben (ipv4firstoderverbatim). Standardmäßigipv4firstunter Node 22+. -
channels.telegram.network.dangerouslyAllowPrivateNetwork: gefährliches Opt-in für vertrauenswürdige Fake-IP- oder transparente Proxy-Umgebungen, in denen Telegram-Mediendownloadsapi.telegram.orgzu privaten/internen/special-use-Adressen außerhalb des standardmäßigen RFC-2544-Benchmark-Bereichs auflösen. -
channels.telegram.proxy: Proxy-URL für Bot-API-Aufrufe (SOCKS/HTTP). -
channels.telegram.webhookUrl: Webhook-Modus aktivieren (erfordertchannels.telegram.webhookSecret). -
channels.telegram.webhookSecret: Webhook-Secret (erforderlich, wennwebhookUrlgesetzt ist). -
channels.telegram.webhookPath: lokaler Webhook-Pfad (Standard/telegram-webhook). -
channels.telegram.webhookHost: lokaler Webhook-Bind-Host (Standard127.0.0.1). -
channels.telegram.webhookPort: lokaler Webhook-Bind-Port (Standard8787). -
channels.telegram.actions.reactions: Telegram-Tool-Reaktionen steuern. -
channels.telegram.actions.sendMessage: Telegram-Tool-Nachrichtensendungen steuern. -
channels.telegram.actions.deleteMessage: Telegram-Tool-Nachrichtenlöschungen steuern. -
channels.telegram.actions.sticker: Telegram-Sticker-Aktionen steuern — Senden und Suchen (Standard: false). -
channels.telegram.reactionNotifications:off | own | all— steuert, welche Reaktionen Systemereignisse auslösen (Standard:own, wenn nicht gesetzt). -
channels.telegram.reactionLevel:off | ack | minimal | extensive— steuert die Reaktionsfähigkeit des Agenten (Standard:minimal, wenn nicht gesetzt). -
channels.telegram.errorPolicy:reply | silent— steuert das Verhalten von Fehlerantworten (Standard:reply). Überschreibungen pro Konto/Gruppe/Topic werden unterstützt. -
channels.telegram.errorCooldownMs: Mindest-ms zwischen Fehlerantworten an denselben Chat (Standard:60000). Verhindert Fehler-Spam bei Ausfällen. - Konfigurationsreferenz - Telegram
- Start/Auth:
enabled,botToken,tokenFile,accounts.*(tokenFilemuss auf eine reguläre Datei zeigen; Symlinks werden abgelehnt) - Zugriffskontrolle:
dmPolicy,allowFrom,groupPolicy,groupAllowFrom,groups,groups.*.topics.*,bindings[]auf oberster Ebene (type: "acp") - Exec-Genehmigungen:
execApprovals,accounts.*.execApprovals - Befehl/Menü:
commands.native,commands.nativeSkills,customCommands - Threading/Antworten:
replyToMode - Streaming:
streaming(Vorschau),blockStreaming - Formatierung/Zustellung:
textChunkLimit,chunkMode,linkPreview,responsePrefix - Medien/Netzwerk:
mediaMaxMb,timeoutSeconds,retry,network.autoSelectFamily,network.dangerouslyAllowPrivateNetwork,proxy - Webhook:
webhookUrl,webhookSecret,webhookPath,webhookHost - Aktionen/Fähigkeiten:
capabilities.inlineButtons,actions.sendMessage|editMessage|deleteMessage|reactions|sticker - Reaktionen:
reactionNotifications,reactionLevel - Fehler:
errorPolicy,errorCooldownMs - Schreibvorgänge/Verlauf:
configWrites,historyLimit,dmHistoryLimit,dms.*.historyLimit