April 22, 2026 • Version: 2026.4.14

[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_bot als 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 context

Umgebungskontext

  • 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.5 funktioniert 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

  1. 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 auf 2026.4.5 weiterhin funktioniert – die Befehlsregistrierung ist nicht betroffen.
  2. 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}]
      }
    }
  3. Zielauflösungsfehler: Die Regression führte eine Logikänderung in src/channels/telegram/command-routing.ts ein, die änderte, wie Bot-Erwähnungen (@RickS_C137_bot) gegen konfigurierte Konten validiert werden, wenn die Nachricht aus einem Gruppenchat stammt.
  4. 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_bot erwä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: HEALTHY

Option 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.15

Option 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 Konto

Option 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: HEALTHY

Schritt 2: Befehlsregistrierungsverifizierung

$ openclawctl telegram commands list --account morty
Bot: @RickS_C137_bot
Registered commands:
  - /status
  - /help
  - /settings
  - /skills
Registration status: ACTIVE

Schritt 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 erscheinen

Erwartetes 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 Konto

Erfolgskriterien

Alle folgenden Punkte müssen erfüllt sein, damit die Lösung als verifiziert gilt:

  • openclawctl status zeigt Status: RUNNING und alle Kanäle HEALTHY
  • Telegram-Slash-Befehlsauswahl zeigt die Bot-Befehle bei Eingabe von / in der Gruppe
  • /status@RickS_C137_bot gibt eine Antwort mit zwei Haken zurück
  • Debug-Logs zeigen Resolved target account: morty fü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.telegram verwendet 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 @userinfobot oder @JSONDumpBot in 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.DEFAULT registriert sind (nicht ScopeType.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:
    1. Befehl wurde stillschweigend verworfen (Regressionssymptom)
    2. Netzwerkproblem bei der Nachrichtenzustellung
    3. Bot wurde vom Benutzer blockiert
    Debug-Logs zur Unterscheidung zwischen diesen Fällen verwenden.
  • 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.8 wurde 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 /mybots in 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 in 2026.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.native und commands.nativeSkills - Steuern die Befehlsregistrierungssichtbarkeit.
  • commands.allowFrom.telegram - Explizite Allowlist für Befehlsquellen.

Belege & Quellen

Diese Troubleshooting-Anleitung wurde automatisch von der FixClaw Intelligence Pipeline aus Community-Diskussionen synthetisiert.