Skip to Content
👋 Willkommen bei HowToUseOpenClaw Schnellstart
KanäleTwitch

Twitch (Plugin)

Twitch-Chat-Unterstützung über IRC-Verbindung. OpenClaw verbindet sich als Twitch-Benutzer (Bot-Konto), um Nachrichten in Kanälen zu empfangen und zu senden.

Plugin erforderlich

Twitch wird als Plugin ausgeliefert und ist nicht im Core-Install enthalten. Installation über CLI (npm-Registry):

openclaw plugins install @openclaw/twitch

Lokaler Checkout (bei Ausführung aus einem Git-Repo):

openclaw plugins install ./extensions/twitch

Details: Plugins

Schnelleinrichtung (Anfänger)

  1. Dediziertes Twitch-Konto für den Bot erstellen (oder bestehendes Konto nutzen).
  2. Anmeldedaten erzeugen: Twitch Token Generator 
    • Bot Token wählen
    • Sicherstellen, dass die Scopes chat:read und chat:write ausgewählt sind
    • Client ID und Access Token kopieren
  3. Twitch-Benutzer-ID ermitteln: https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/ 
  4. Token konfigurieren:
    • Umgebung: CLAWDBOT_TWITCH_ACCESS_TOKEN=... (nur Standardkonto)
    • Oder Konfig: channels.twitch.accessToken
    • Wenn beide gesetzt sind, hat die Konfiguration Vorrang (Umgebungs-Fallback nur Standardkonto).
  5. Gateway starten.

⚠️ Wichtig: Zugriffskontrolle hinzufügen (allowFrom oder allowedRoles), um unbefugte Nutzer vom Auslösen des Bots abzuhalten. requireMention ist standardmäßig true. Minimale Konfiguration:

{ channels: { twitch: { enabled: true, username: "openclaw", // Bot's Twitch account accessToken: "oauth:abc123...", // OAuth Access Token (or use CLAWDBOT_TWITCH_ACCESS_TOKEN env var) clientId: "xyz789...", // Client ID from Token Generator channel: "vevisk", // Which Twitch channel's chat to join (required) allowFrom: ["123456789"] // (recommended) Your Twitch user ID only - get it from https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/ } } }

Ziele

  • Ein Twitch-Kanal, der dem Gateway gehört.
  • Deterministisches Routing: Antworten gehen immer zurück zu Twitch.
  • Jedes Konto wird einem isolierten Sitzungsschlüssel agent:<agentId>:twitch:<accountName> zugeordnet.
  • username ist das Bot-Konto (wer sich anmeldet), channel ist der Chatraum, dem beigetreten wird.

Einrichtung (detailliert)

Anmeldedaten erzeugen

Twitch Token Generator  nutzen:

  • Bot Token wählen
  • Sicherstellen, dass die Scopes chat:read und chat:write ausgewählt sind
  • Client ID und Access Token kopieren

Keine manuelle App-Registrierung nötig. Tokens laufen nach einigen Stunden ab.

Bot konfigurieren

Umgebungsvariable (nur Standardkonto):

CLAWDBOT_TWITCH_ACCESS_TOKEN=oauth:abc123...

Oder Konfiguration:

{ channels: { twitch: { enabled: true, username: "openclaw", accessToken: "oauth:abc123...", clientId: "xyz789...", channel: "vevisk" } } }

Wenn sowohl Umgebung als auch Konfiguration gesetzt sind, hat die Konfiguration Vorrang.

Zugriffskontrolle (empfohlen)

{ channels: { twitch: { allowFrom: ["123456789"], // (recommended) Your Twitch user ID only allowedRoles: ["moderator"] // Or restrict to roles } } }

Verfügbare Rollen: "moderator", "owner", "vip", "subscriber", "all". Warum Benutzer-IDs? Benutzernamen können sich ändern und ermöglichen Identitätswechsel. Benutzer-IDs sind dauerhaft. Twitch-Benutzer-ID ermitteln: https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/  (Convert your Twitch username to ID)

Token-Aktualisierung (optional)

Tokens von Twitch Token Generator  können nicht automatisch aktualisiert werden – bei Ablauf neu erzeugen. Für automatische Token-Aktualisierung eigene Twitch-Anwendung unter Twitch Developer Console  erstellen und zur Konfiguration hinzufügen:

{ channels: { twitch: { clientSecret: "your_client_secret", refreshToken: "your_refresh_token" } } }

Der Bot aktualisiert Tokens vor Ablauf automatisch und protokolliert Refresh-Events.

Mehrkonten-Unterstützung

Nutzen Sie channels.twitch.accounts mit Token pro Konto. Siehe gateway/configuration für das gemeinsame Muster. Beispiel (ein Bot-Konto in zwei Kanälen):

{ channels: { twitch: { accounts: { channel1: { username: "openclaw", accessToken: "oauth:abc123...", clientId: "xyz789...", channel: "vevisk" }, channel2: { username: "openclaw", accessToken: "oauth:def456...", clientId: "uvw012...", channel: "secondchannel" } } } } }

Hinweis: Jedes Konto benötigt einen eigenen Token (ein Token pro Kanal).

Zugriffskontrolle

Rollenbasierte Einschränkungen

{ channels: { twitch: { accounts: { default: { allowedRoles: ["moderator", "vip"] } } } } }

Zulassen-Liste nach Benutzer-ID (am sichersten)

{ channels: { twitch: { accounts: { default: { allowFrom: ["123456789", "987654321"] } } } } }

Kombinierte Zulassen-Liste + Rollen

Benutzer in allowFrom umgehen Rollenprüfungen:

{ channels: { twitch: { accounts: { default: { allowFrom: ["123456789"], allowedRoles: ["moderator"] } } } } }

@Erwähnungspflicht deaktivieren

Standardmäßig ist requireMention true. Zum Deaktivieren und Antworten auf alle Nachrichten:

{ channels: { twitch: { accounts: { default: { requireMention: false } } } } }

Fehlerbehebung

Zuerst Diagnosebefehle ausführen:

openclaw doctor openclaw channels status --probe

Bot antwortet nicht auf Nachrichten

Zugriffskontrolle prüfen: Vorübergehend allowedRoles: ["all"] setzen zum Testen. Prüfen, ob der Bot im Kanal ist: Der Bot muss dem in channel angegebenen Kanal beitreten.

Token-Probleme

„Failed to connect“ oder Authentifizierungsfehler:

  • Prüfen, ob accessToken der OAuth-Access-Token-Wert ist (beginnt typischerweise mit oauth:)
  • Prüfen, ob der Token die Scopes chat:read und chat:write hat
  • Bei Token-Refresh prüfen, ob clientSecret und refreshToken gesetzt sind

Token-Refresh funktioniert nicht

Logs auf Refresh-Events prüfen:

Using env token source for mybot Access token refreshed for user 123456 (expires in 14400s)

Wenn „token refresh disabled (no refresh token)“ erscheint:

  • Sicherstellen, dass clientSecret gesetzt ist
  • Sicherstellen, dass refreshToken gesetzt ist

Konfiguration

Konto-Konfiguration:

  • username - Bot-Benutzername
  • accessToken - OAuth-Access-Token mit chat:read und chat:write
  • clientId - Twitch Client ID (vom Token Generator oder Ihrer App)
  • channel - Kanal, dem beigetreten wird (erforderlich)
  • enabled - Dieses Konto aktivieren (Standard: true)
  • clientSecret - Optional: Für automatischen Token-Refresh
  • refreshToken - Optional: Für automatischen Token-Refresh
  • expiresIn - Token-Ablauf in Sekunden
  • obtainmentTimestamp - Zeitstempel der Token-Erstellung
  • allowFrom - Benutzer-ID-Zulassen-Liste
  • allowedRoles - Rollenbasierte Zugriffskontrolle ("moderator" | "owner" | "vip" | "subscriber" | "all")
  • requireMention - @Erwähnung erforderlich (Standard: true)

Provider-Optionen:

  • channels.twitch.enabled - Kanalstart aktivieren/deaktivieren
  • channels.twitch.username - Bot-Benutzername (vereinfachte Einzelkonto-Konfiguration)
  • channels.twitch.accessToken - OAuth-Access-Token (vereinfachte Einzelkonto-Konfiguration)
  • channels.twitch.clientId - Twitch Client ID (vereinfachte Einzelkonto-Konfiguration)
  • channels.twitch.channel - Kanal, dem beigetreten wird (vereinfachte Einzelkonto-Konfiguration)
  • channels.twitch.accounts.<accountName> - Mehrkonten-Konfiguration (alle obigen Kontofelder)

Vollständiges Beispiel:

{ channels: { twitch: { enabled: true, username: "openclaw", accessToken: "oauth:abc123...", clientId: "xyz789...", channel: "vevisk", clientSecret: "secret123...", refreshToken: "refresh456...", allowFrom: ["123456789"], allowedRoles: ["moderator", "vip"], accounts: { default: { username: "mybot", accessToken: "oauth:abc123...", clientId: "xyz789...", channel: "your_channel", enabled: true, clientSecret: "secret123...", refreshToken: "refresh456...", expiresIn: 14400, obtainmentTimestamp: 1706092800000, allowFrom: ["123456789", "987654321"], allowedRoles: ["moderator"] } } } } }

Tool-Aktionen

Der Agent kann twitch mit Aktion aufrufen:

  • send - Nachricht an einen Kanal senden

Beispiel:

{ "action": "twitch", "params": { "message": "Hello Twitch!", "to": "#mychannel" } }

Sicherheit & Betrieb

  • Tokens wie Passwörter behandeln - Tokens niemals in Git committen
  • Automatischen Token-Refresh für dauerhaft laufende Bots nutzen
  • Benutzer-ID-Zulassen-Listen statt Benutzernamen für Zugriffskontrolle nutzen
  • Logs überwachen auf Token-Refresh-Events und Verbindungsstatus
  • Tokens minimal scopen - Nur chat:read und chat:write anfordern
  • Bei Hänger: Gateway neu starten, nachdem bestätigt wurde, dass kein anderer Prozess die Sitzung besitzt

Limits

  • 500 Zeichen pro Nachricht (automatisch an Wortgrenzen gechunkt)
  • Markdown wird vor dem Chunking entfernt
  • Keine Ratenbegrenzung (nutzt Twitchs eingebaute Ratenlimits)
Zuletzt aktualisiert am: