Twitch (Plugin)
Twitch-Chat-Unterstützung via 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 in der Kerninstallation enthalten.
Installation über CLI (npm-Registry):
openclaw plugins install @openclaw/twitch
Lokaler Checkout (wenn aus einem Git-Repo ausgeführt):
openclaw plugins install ./extensions/twitch
Details: Plugins
Schnelleinrichtung (Einsteiger)
- Erstelle ein dediziertes Twitch-Konto für den Bot (oder verwende ein bestehendes Konto).
- Generiere Zugangsdaten: Twitch Token Generator
- Wähle Bot Token
- Überprüfe, dass die Scopes
chat:readundchat:writeausgewählt sind - Kopiere die Client ID und den Access Token
- Finde deine Twitch-Benutzer-ID: https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/
- Konfiguriere den Token:
- Umgebungsvariable:
OPENCLAW_TWITCH_ACCESS_TOKEN=...(nur Standardkonto) - Oder Konfiguration:
channels.twitch.accessToken - Wenn beides gesetzt ist, hat die Konfiguration Vorrang (Umgebungsvariable als Fallback nur für das Standardkonto).
- Umgebungsvariable:
- Starte das Gateway.
Warnung: Füge eine Zugriffssteuerung hinzu (
allowFromoderallowedRoles), um zu verhindern, dass unautorisierte Benutzer den Bot auslösen.requireMentionist standardmäßigtrue.
Minimale Konfiguration:
{
channels: {
twitch: {
enabled: true,
username: "openclaw", // Twitch-Konto des Bots
accessToken: "oauth:abc123...", // OAuth Access Token (oder OPENCLAW_TWITCH_ACCESS_TOKEN Umgebungsvariable)
clientId: "xyz789...", // Client ID vom Token Generator
channel: "vevisk", // Welchem Twitch-Kanal-Chat beitreten (erforderlich)
allowFrom: ["123456789"], // (empfohlen) Nur deine Twitch-Benutzer-ID - hole sie von https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/
},
},
}
Was es ist
- Ein Twitch-Kanal, der vom Gateway betrieben wird.
- Deterministisches Routing: Antworten gehen immer zurück zu Twitch.
- Jedes Konto bildet einen isolierten Session-Schlüssel ab:
agent:<agentId>:twitch:<accountName>. usernameist das Konto des Bots (wer sich authentifiziert),channelist welchem Chatraum beigetreten wird.
Einrichtung (detailliert)
Zugangsdaten generieren
Verwende den Twitch Token Generator:
- Wähle Bot Token
- Überprüfe, dass die Scopes
chat:readundchat:writeausgewählt sind - Kopiere die Client ID und den Access Token
Keine manuelle App-Registrierung nötig. Tokens verfallen nach mehreren Stunden.
Bot konfigurieren
Umgebungsvariable (nur Standardkonto):
OPENCLAW_TWITCH_ACCESS_TOKEN=oauth:abc123...
Oder Konfiguration:
{
channels: {
twitch: {
enabled: true,
username: "openclaw",
accessToken: "oauth:abc123...",
clientId: "xyz789...",
channel: "vevisk",
},
},
}
Wenn sowohl Umgebungsvariable als auch Konfiguration gesetzt sind, hat die Konfiguration Vorrang.
Zugriffssteuerung (empfohlen)
{
channels: {
twitch: {
allowFrom: ["123456789"], // (empfohlen) Nur deine Twitch-Benutzer-ID
},
},
}
Bevorzuge allowFrom für eine strikte Allowlist. Verwende stattdessen allowedRoles, wenn du rollenbasierten Zugriff möchtest.
Verfügbare Rollen: "moderator", "owner", "vip", "subscriber", "all".
Warum Benutzer-IDs? Benutzernamen können geändert werden, was Identitätsdiebstahl ermöglicht. Benutzer-IDs sind dauerhaft.
Finde deine Twitch-Benutzer-ID: https://www.streamweasels.com/tools/convert-twitch-username-%20to-user-id/ (Twitch-Benutzernamen in ID konvertieren)
Token-Aktualisierung (optional)
Tokens vom Twitch Token Generator können nicht automatisch aktualisiert werden - generiere sie bei Ablauf neu.
Für automatische Token-Aktualisierung erstelle deine eigene Twitch-Anwendung in der Twitch Developer Console und füge sie zur Konfiguration hinzu:
{
channels: {
twitch: {
clientSecret: "your_client_secret",
refreshToken: "your_refresh_token",
},
},
}
Der Bot aktualisiert Tokens automatisch vor dem Ablauf und protokolliert Aktualisierungsereignisse.
Multi-Account-Unterstützung
Verwende channels.twitch.accounts mit Pro-Konto-Tokens. 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 braucht seinen eigenen Token (ein Token pro Kanal).
Zugriffssteuerung
Rollenbasierte Einschränkungen
{
channels: {
twitch: {
accounts: {
default: {
allowedRoles: ["moderator", "vip"],
},
},
},
},
}
Allowlist nach Benutzer-ID (sicherste Option)
{
channels: {
twitch: {
accounts: {
default: {
allowFrom: ["123456789", "987654321"],
},
},
},
},
}
Rollenbasierter Zugriff (Alternative)
allowFrom ist eine strikte Allowlist. Wenn gesetzt, sind nur diese Benutzer-IDs erlaubt.
Wenn du rollenbasierten Zugriff möchtest, lasse allowFrom ungesetzt und konfiguriere stattdessen allowedRoles:
{
channels: {
twitch: {
accounts: {
default: {
allowedRoles: ["moderator"],
},
},
},
},
}
@Mention-Anforderung deaktivieren
Standardmäßig ist requireMention auf true gesetzt. Um sie zu deaktivieren und auf alle Nachrichten zu antworten:
{
channels: {
twitch: {
accounts: {
default: {
requireMention: false,
},
},
},
},
}
Fehlerbehebung
Führe zuerst die Diagnosebefehle aus:
openclaw doctor
openclaw channels status --probe
Bot antwortet nicht auf Nachrichten
Zugriffssteuerung prüfen: Stelle sicher, dass deine Benutzer-ID in allowFrom enthalten ist, oder entferne allowFrom vorübergehend und setze allowedRoles: ["all"] 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:
- Überprüfe, ob
accessTokender OAuth-Access-Token-Wert ist (beginnt üblicherweise mit dem Präfixoauth:) - Prüfe, ob der Token die Scopes
chat:readundchat:writehat - Bei Verwendung von Token-Aktualisierung überprüfe, ob
clientSecretundrefreshTokengesetzt sind
Token-Aktualisierung funktioniert nicht
Logs auf Aktualisierungsereignisse prüfen:
Using env token source for mybot
Access token refreshed for user 123456 (expires in 14400s)
Wenn du „token refresh disabled (no refresh token)” siehst:
- Stelle sicher, dass
clientSecretangegeben ist - Stelle sicher, dass
refreshTokenangegeben ist
Konfiguration
Konto-Konfiguration:
username- Bot-BenutzernameaccessToken- OAuth Access Token mitchat:readundchat:writeclientId- Twitch Client ID (vom Token Generator oder deiner App)channel- Kanal, dem beigetreten wird (erforderlich)enabled- Dieses Konto aktivieren (Standard:true)clientSecret- Optional: Für automatische Token-AktualisierungrefreshToken- Optional: Für automatische Token-AktualisierungexpiresIn- Token-Ablauf in SekundenobtainmentTimestamp- Zeitstempel des Token-ErhaltsallowFrom- Benutzer-ID-AllowlistallowedRoles- Rollenbasierte Zugriffssteuerung ("moderator" | "owner" | "vip" | "subscriber" | "all")requireMention- @Mention erforderlich (Standard:true)
Provider-Optionen:
channels.twitch.enabled- Kanal-Start aktivieren/deaktivierenchannels.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 zum Beitreten (vereinfachte Einzelkonto-Konfiguration)channels.twitch.accounts.<accountName>- Multi-Account-Konfiguration (alle oben genannten 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- Eine Nachricht an einen Kanal senden
Beispiel:
{
action: "twitch",
params: {
message: "Hello Twitch!",
to: "#mychannel",
},
}
Sicherheit & Betrieb
- Behandle Tokens wie Passwörter - Committe Tokens niemals in Git
- Verwende automatische Token-Aktualisierung für dauerlaufende Bots
- Verwende Benutzer-ID-Allowlists statt Benutzernamen für Zugriffssteuerung
- Überwache Logs auf Token-Aktualisierungsereignisse und Verbindungsstatus
- Minimale Token-Scopes - Fordere nur
chat:readundchat:writean - Bei Blockade: Starte das Gateway neu, nachdem du bestätigt hast, dass kein anderer Prozess die Session besitzt
Limits
- 500 Zeichen pro Nachricht (automatisch an Wortgrenzen aufgeteilt)
- Markdown wird vor dem Aufteilen entfernt
- Kein eigenes Rate-Limiting (verwendet Twitchs eingebaute Rate-Limits)