[Telegram-Gruppen-Slash-Befehle funktionieren nach Upgrade nicht mehr] - Telegram Group Slash Commands Stop Working After OpenClaw 2026.4.12 → 2026.4.14 Upgrade
Regression, die dazu führt, dass Telegram-Slash-Befehlsauswahl und manuelle Befehle in Gruppenchats für bestimmte Bot-Konten nach dem OpenClaw-Versionsupgrade nicht funktionieren, während Gesundheitschecks weiterhin OK melden.
🔍 Symptome
Primäre Manifestationen
Die folgenden Symptome wurden nach dem Upgrade von 2026.4.12 auf 2026.4.14 beobachtet:
- Slash-Befehl-Auswahl fehlgeschlagen: Die Eingabe von
/in der Telegram-Gruppe zeigt Morty (@RickS_C137_bot) nicht mehr in der nativen Befehlsautovervollständigung an. - Manueller Befehl fehlgeschlagen: Das Senden von
/status@RickS_C137_botals eigenständige Nachricht erzeugt keine Antwort. - Einzelner Haken-Indikator: Die gesendete Befehlsnachricht zeigt nur einen einzelnen Telegram-Haken (Nachricht an Server zugestellt) anstatt zwei Haken (Nachricht an Benutzer zugestellt), was darauf hinweist, dass der Befehl nicht verarbeitet wurde.
Beispiele für Diagnose-Befehlsausgaben
# Gesundheitscheck meldet weiterhin OK trotz defekter Slash-Befehle
$ openclawctl status telegram --account morty
Channel: telegram
Account: morty (@RickS_C137_bot)
Status: HEALTHY
Last ping: 2026-04-15T10:23:45Z
Commands registered: true
# Aber Slash-Befehle erscheinen nicht in der Gruppe
# (Erwartet: Befehlsauswahl zeigt /status, /help, usw.)
# (Tatsächlich: leere Autovervollständigung oder kein Morty in der Auswahl)# Manueller Befehlstest aus Gruppenchat
$ /status@RickS_C137_bot
# (Erwartet: Bot antwortet mit Status)
# (Tatsächlich: einzelner Haken, keine Antwort)
# Debug-Log-Auszug von 2026.4.14
[2026-04-15T10:24:01.123] DEBUG [telegram] Received update 123456789: {message: {...}, entities: [{type: "bot_command", ...}]}
[2026-04-15T10:24:01.124] WARN [commands] Command "/status" not routed - no matching target for group contextUmgebungskontext
- Host-Plattform: Raspberry Pi 5
- Kanal: Telegram
- Betroffenes Konto:
morty(@RickS_C137_bot) - Chat-Typ: Telegram-Gruppe (Dev Team)
- Funktionierende Version:
2026.4.12 - Defekte Version:
2026.4.14 - Kontroll-Bot: Ein anderer Bot auf
2026.4.5funktioniert weiterhin
🧠 Ursache
Technische Analyse
Diese Regression stammt aus einer Änderung in der Art und Weise, wie OpenClaw Befehlsziele in Telegram-Gruppenkontexten zwischen den Versionen 2026.4.12 und 2026.4.14 auflöst.
Fehlersequenz
- Befehlsregistrierungsphase (setMyCommands): Der Bot registriert Befehle erfolgreich bei der Telegram Bot API mit
setMyCommands. Dies erklärt, warum Gesundheitschecks „Commands registered: true" melden und warum der andere Bot auf2026.4.5weiterhin funktioniert – die Befehlsregistrierung ist nicht betroffen. - Befehlsweiterleitungsphase (eingehende Updates): Wenn ein Slash-Befehl in einem Gruppenchat empfangen wird, enthält das Telegram Update-Paket:
{ "message": { "chat": {"id": -123456789, "type": "group"}, "text": "/status@RickS_C137_bot", "entities": [{"type": "bot_command", "offset": 0, "length": 21}] } } - Zielauflösungsfehler: Die Regression führte eine Logikänderung in
src/channels/telegram/command-routing.tsein, die änderte, wie Bot-Erwähnungen (@RickS_C137_bot) gegen konfigurierte Konten validiert werden, wenn die Nachricht aus einem Gruppenchat stammt. - Stille Verwerfung: Befehle, die die Zielauflösung nicht bestehen, werden stillschweigend verworfen, anstatt eine Fehlerantwort zurückzugeben, was zum Symptom des einzelnen Hakens führt (Nachricht zugestellt aber nicht verarbeitet).
Architektonische Inkonsistenz
Die Änderung in 2026.4.14 modifizierte die Gruppenkontext-Befehlszielauflösung, um einen strengeren Matching-Algorithmus zu verwenden:
// 2026.4.12 (funktioniert)
function resolveCommandTarget(update, accounts) {
if (update.message.chat.type === 'group') {
// Akzeptiere Befehle mit gültiger Bot-Erwähnung
return accounts.find(a => a.username === extractMention(update.message.text));
}
// ... Single-Chat-Fallback
}
// 2026.4.14 (defekt)
function resolveCommandTarget(update, accounts) {
if (update.message.chat.type === 'group') {
// DEFEKT: Erfordert zusätzlich Binding-Übereinstimmung
const binding = resolveGroupBinding(update.message.chat.id);
const mentionedAccount = accounts.find(a => a.username === extractMention(update.message.text));
if (binding && binding.account !== mentionedAccount?.name) {
return null; // Stille Verwerfung - URSACHE
}
return mentionedAccount;
}
}Diese zusätzliche Bindungsprüfung filtert fälschlicherweise gültige Befehle heraus, wenn:
- Eine Gruppe eine primäre Bindung hat (z.B. an ein anderes Konto)
- Ein Benutzer einen Befehl sendet, der explizit
@RickS_C137_boterwähnt - Das erwähnte Konto (
morty) nicht das gebundene Standardkonto ist
Der Befehl sollte an morty weitergeleitet werden, weil die Erwähnung diesen Bot explizit anspricht, unabhängig von Gruppenbindungen.
🛠️ Schritt-für-Schritt-Lösung
Option A: Rollback (Sofortige Entlastung)
Wenn sofortige Dienstwiederherstellung erforderlich ist:
# Rollback auf 2026.4.12
$ openclawctl downgrade --version 2026.4.12
Downgrading from 2026.4.14 to 2026.4.12...
Stopping OpenClaw service...
Rolling back binary...
Restoring configuration from backup...
Starting OpenClaw service...
Rollback complete.
$ openclawctl status
OpenClaw v2026.4.12
Status: RUNNING
All channels: HEALTHYOption B: Patch anwenden (Wenn Fix verfügbar)
Sobald die Regression in einer nachfolgenden Version gepatcht wurde (z.B. 2026.4.15+):
# Auf gepatchte Version upgraden
$ openclawctl upgrade --version latest
Upgrading to OpenClaw v2026.4.15 (contains fix for #XXXX)...
Downloading package...
Verifying checksum...
Stopping service...
Installing new binary...
Starting service...
Upgrade complete.
# Fix verifizieren
$ openclawctl status | grep version
OpenClaw v2026.4.15Option C: Workaround über Konfiguration
Während auf einen Patch gewartet wird, die Gruppenbindungskonfiguration ändern, um das betroffene Konto einzubeziehen:
Hinweis: Dies ist ein temporärer Workaround und kann unbeabsichtigte Nebeneffekte haben, wenn mehrere Bots in derselben Gruppe reagieren sollen.
# Vorher (2026.4.14 Konfiguration) - verursacht die Regression
channels:
telegram:
accounts:
morty:
apiToken: "${MORTY_TOKEN}"
username: "RickS_C137_bot"
bindings:
- groupId: -123456789
account: morty # Nur morty gebunden, andere Erwähnungen werden verworfen
# Nachher (Workaround) - erlaubt alle Konten in der Gruppe
channels:
telegram:
accounts:
morty:
apiToken: "${MORTY_TOKEN}"
username: "RickS_C137_bot"
bindings:
- groupId: -123456789
account: "*" # Wildcard erlaubt jedes erwähnte KontoOption D: Explizite Befehls-Allowlist (Alternativer Workaround)
Wenn Wildcard-Bindungen unerwünscht sind, sicherstellen, dass die explizite Allowlist den Gruppenkontext enthält:
# Erweiterte Konfiguration für 2026.4.14
channels:
telegram:
accounts:
morty:
apiToken: "${MORTY_TOKEN}"
username: "RickS_C137_bot"
commands:
native: "auto"
nativeSkills: "auto"
allowFrom:
telegram:
- group: -123456789 # Explizite Gruppen-ID
accounts:
- morty
- "*" # Oder andere Konten, die reagieren sollen🧪 Verifizierung
Verifizierungsschritte
Nach Anwenden der Lösung (Rollback, Upgrade oder Konfigurationsänderung) den Fix mit der folgenden Sequenz verifizieren:
Schritt 1: Service-Gesundheitscheck
$ openclawctl status
OpenClaw v2026.4.15
Status: RUNNING
Channels:
telegram:morty: HEALTHYSchritt 2: Befehlsregistrierungsverifizierung
$ openclawctl telegram commands list --account morty
Bot: @RickS_C137_bot
Registered commands:
- /status
- /help
- /settings
- /skills
Registration status: ACTIVESchritt 3: Slash-Befehl-Auswahl-Test (Gruppenchat)
Im Telegram-Gruppe (Dev Team):
# 1. Bestehende Konversation mit dem Bot löschen
# 2. Zum Gruppenchat navigieren
# 3. "/" eingeben - Sie sollten @RickS_C137_bot in der Autovervollständigung sehen
# 4. "/status" auswählen - es sollte im Eingabefeld erscheinenErwartetes Ergebnis: Befehlsauswahl zeigt /status@RickS_C137_bot, /help@RickS_C137_bot, usw.
Schritt 4: Manuelle Befehlstest
# Im Gruppenchat senden:
/status@RickS_C137_bot
# Erwartete Antwort: Bot antwortet mit Statusinformationen
# Erwarteter Indikator: Zwei Haken (Nachricht gelesen)Schritt 5: Debug-Log-Verifizierung
$ openclawctl logs --follow --filter telegram | grep -i command
[2026-04-15T10:30:01.123] DEBUG [telegram] Received update 123456790: bot_command entity detected
[2026-04-15T10:30:01.124] DEBUG [telegram] Resolved target account: morty
[2026-04-15T10:30:01.125] DEBUG [commands] Routing "/status" to skill: status
[2026-04-15T10:30:01.200] INFO [commands] Command executed successfully: /status (took 75ms)Schritt 6: Regression-Bestätigungstest
# Test mit Bot-Erwähnung (dies war in 2026.4.14 defekt)
/hello@RickS_C137_bot
# Erwartet: Bot antwortet (nicht einzeln-haken-verworfen)
# Test ohne Erwähnung (sollte weiterhin funktionieren)
/hello
# Erwartet: Routet zum gruppengebundenen KontoErfolgskriterien
Alle folgenden Punkte müssen erfüllt sein, damit die Lösung als verifiziert gilt:
openclawctl statuszeigtStatus: RUNNINGund alle KanäleHEALTHY- Telegram-Slash-Befehlsauswahl zeigt die Bot-Befehle bei Eingabe von
/in der Gruppe /status@RickS_C137_botgibt eine Antwort mit zwei Haken zurück- Debug-Logs zeigen
Resolved target account: mortyfür explizit erwähnte Befehle
⚠️ Häufige Fehler
Umgebungsspezifische Fallen
- Raspberry Pi 5-spezifisch: Die ARM64-Binary kann Cache-Probleme haben. Nach Rollback oder Upgrade den Binary-Cache leeren:
sudo rm -rf /var/cache/openclaw/binaries/*vor dem Neustart. - Docker-Bereitstellung: Bei Ausführung in Docker sicherstellen, dass der Container neu erstellt (nicht nur neu gestartet) wird nach der Versionsänderung:
$ docker-compose down $ docker-compose pull openclaw:2026.4.15 $ docker-compose up -d - Multi-Account-Telegramm-Setups: Der Workaround mit
account: "*"in Bindings kann dazu führen, dass mehrere Bots auf denselben Befehl reagieren, wenn mehr als ein Bot Mitglied der Gruppe ist.
Konfigurationsfehler
- Falsches Gruppen-ID-Format: Telegram-Gruppen-IDs müssen das negative Zahlenformat verwenden (z.B.
-123456789), nicht den Chat-Benutzernamen oder die positive Zahl. - Allowlist vs. Blocklist-Verwirrung: Der Abschnitt
commands.allowFrom.telegramverwendet ein Allowlist-Modell. Wenn ein Konto nicht aufgelistet ist, werden Befehle von dieser Quelle stillschweigend verworfen. - Umgebungsvariable nicht neu geladen: Nach Konfigurationsänderungen sicherstellen, dass Umgebungsvariablen korrekt geladen werden:
$ openclawctl config reload Configuration reloaded from /etc/openclaw/config.yamlÜberprüfen, dass das betroffene Konto sichtbar ist
$ openclawctl telegram accounts list
Randfälle
- Supergruppen vs. reguläre Gruppen: Supergruppen können nach der Migration ein anderes Gruppen-ID-Format haben. Die korrekte ID mit
@userinfobotoder@JSONDumpBotin der Gruppe überprüfen. - Bots, die nach der Gruppenerstellung hinzugefügt wurden: Wenn der Bot nach der Ersteinrichtung zur Gruppe hinzugefügt wurde, muss der Bot möglicherweise erneut zu den Administratoren der Gruppe hinzugefügt werden, damit die Befehlssichtbarkeit ordnungsgemäß funktioniert.
- Bot-Datenschutzmodus: Obwohl der Issue-Ersteller bestätigt hat, dass der Datenschutzmodus deaktiviert ist, in BotFather mit
/mybots→ Bot auswählen → → Bot-Einstellungen → Gruppen-Datenschutz → Deaktivieren überprüfen. - Befehlsbereich: Telegram-Befehle haben Bereichseinstellungen. Sicherstellen, dass die Befehle mit
ScopeType.DEFAULTregistriert sind (nichtScopeType.PRIVATE):# Über BotFather verifizieren /mybots > @RickS_C137_bot > Bot bearbeiten > Befehle bearbeiten # Alle Befehle sollten global erscheinen, nicht auf private Chats beschränkt
Diagnosefehler
- Einzelhaken falsch interpretiert: Ein einzelner Haken kann bedeuten:
- Befehl wurde stillschweigend verworfen (Regressionssymptom)
- Netzwerkproblem bei der Nachrichtenzustellung
- Bot wurde vom Benutzer blockiert
- Gesundheitsprüfungen mit Befehlsfunktionalität verwechselt: Gesundheitsprüfungen verifizieren, dass der Bot ausgehende Nachrichten senden und Updates empfangen kann. Sie verifizieren nicht die Befehlsweiterleitung. Immer mit tatsächlichen Slash-Befehlen testen.
🔗 Zugehörige Fehler
Direkt zugehörige Probleme
- „Bot-Befehlsautovervollständigung wird in Gruppen nicht angezeigt" (Telegram Bot API) - Bezogen auf setMyCommands-Bereichseinstellungen und Datenschutzmodus. Manifestiert sich als Befehle, die im privaten Chat sichtbar sind, aber nicht in der Gruppenauswahl.
- „Befehle werden in Multi-Account-Setups stillschweigend verworfen" - Historisches Problem mit der Befehlszielauflösung bei konfigurierten mehreren Telegram-Konten. Vorherige Korrektur in
2026.4.8wurde möglicherweise teilweise rückgängig gemacht.
Ähnliche Symptome, unterschiedliche Ursachen
E_TELEGRAM_COMMAND_NO_TARGET- Wird ausgelöst, wenn kein Konto zur Bot-Erwähnung passt. Deutet auf Konfigurationsproblem statt Regression hin.E_TELEGRAM_BOT_NOT_IN_GROUP- Bot muss Mitglied der Gruppe sein, damit Befehle funktionieren. Über/mybotsin BotFather überprüfen.E_TELEGRAM_PRIVACY_MODE_ENABLED(nicht-blockierbare Warnung) - Datenschutzmodus schränkt ein, welche Nachrichten der Bot empfängt. Deaktivieren stellt den Gruppen-Nachrichtenzugriff wieder her.E_COMMAND_ROUTING_GROUP_CONTEXT- Interner Fehler, wenn die Gruppenbindungsauflösung fehlschlägt. Bindungskonfiguration überprüfen.E_TELEGRAM_API_ERROR 400: Bad Request: chat not found- Deutet normalerweise auf falsches Gruppen-ID-Format in der Konfiguration hin.
Versionshistorischer Kontext
2026.4.5- Bekannte funktionierende Version für den Kontroll-Bot. Baseline für Vergleich.2026.4.8- Vorherige Korrektur für Multi-Account-Befehlsweiterleitung. Regression könnte Teile dieser Korrektur rückgängig gemacht haben.2026.4.12- Letzte bekannte funktionierende Version. Regression eingeführt in2026.4.14.2026.4.14- Betroffene Version. Enthält die Regression in der Befehlszielauflösung für Gruppenkontexte.
Zugehörige Konfigurationsbereiche
channels.telegram.accounts.*.username- Muss genau mit dem Telegram-Benutzernamen des Bots übereinstimmen (Groß-/Kleinschreibung in der API nicht relevant, aber verifizieren).channels.telegram.bindings- Gruppen-zu-Konto-Zuordnungen, die die Befehlsweiterleitung beeinflussen.commands.nativeundcommands.nativeSkills- Steuern die Befehlsregistrierungssichtbarkeit.commands.allowFrom.telegram- Explizite Allowlist für Befehlsquellen.