Developer and self-hosted

Twitch

Twitch-Chat-Unterstützung über die Chat-Schnittstelle (IRC) von Twitch mithilfe des Twurple-Clients. OpenClaw meldet sich als Twitch-Bot-Konto an, tritt pro konfiguriertem Konto einem Kanal bei und antwortet in diesem Kanal.

Installation

Twitch wird als offizielles Plugin bereitgestellt und ist nicht Teil der Kerninstallation.

npm-Registry

bash
openclaw plugins install @openclaw/twitch

Lokaler Checkout

bash
openclaw plugins install ./path/to/local/twitch-plugin

plugins install registriert und aktiviert das Plugin. Wenn Sie Twitch während openclaw onboard oder openclaw channels add auswählen, wird es bei Bedarf installiert. Verwenden Sie den reinen Paketnamen, um der aktuellen Version zu folgen; legen Sie nur für reproduzierbare Installationen eine genaue Version fest. Erfordert OpenClaw 2026.4.10 oder neuer.

Details: Plugins

Schnelleinrichtung

  • Plugin installieren

    Siehe Installation oben.

  • Twitch-Bot-Konto erstellen

    Erstellen Sie ein dediziertes Twitch-Konto für den Bot (oder verwenden Sie ein vorhandenes Konto).

  • Anmeldedaten generieren

    Verwenden Sie den Twitch Token Generator:

    • Wählen Sie Bot Token
    • Vergewissern Sie sich, dass die Berechtigungsbereiche chat:read und chat:write ausgewählt sind
    • Kopieren Sie Client ID und Access Token
  • Ihre Twitch-Benutzer-ID ermitteln

    Verwenden Sie https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/, um einen Benutzernamen in eine Twitch-Benutzer-ID umzuwandeln.

  • Token konfigurieren

    • Umgebungsvariable: OPENCLAW_TWITCH_ACCESS_TOKEN=... (nur für das Standardkonto)
    • Oder Konfiguration: channels.twitch.accessToken

    Wenn beide gesetzt sind, hat die Konfiguration Vorrang (die Umgebungsvariable dient nur als Rückfalloption für das Standardkonto).

  • Gateway starten

    bash
    openclaw gateway run
  • Minimale Konfiguration:

    json5
    {  channels: {    twitch: {      enabled: true,      username: "openclaw", // Twitch-Konto des Bots (authentifiziert sich)      accessToken: "oauth:abc123...", // OAuth-Zugriffstoken (oder Umgebungsvariable OPENCLAW_TWITCH_ACCESS_TOKEN verwenden)      clientId: "xyz789...", // Client-ID aus dem Token Generator      channel: "yourchannel", // Chat des Twitch-Kanals, dem beigetreten werden soll (erforderlich)      allowFrom: ["123456789"], // (empfohlen) Nur Ihre Twitch-Benutzer-ID    },  },}

    Funktionsweise

    • Ein Twitch-Kanal im Besitz des Gateways.
    • Deterministisches Routing: Antworten gehen immer an den Twitch-Kanal zurück, aus dem die Nachricht stammt.
    • Jeder beigetretene Kanal wird einem isolierten Gruppensitzungsschlüssel agent:<agentId>:twitch:group:<channel> zugeordnet.
    • username ist das Konto des Bots (das sich authentifiziert), channel ist der Chatraum, dem beigetreten wird. Jeder Kontoeintrag tritt genau einem Kanal bei.
    • Tokens funktionieren mit oder ohne Präfix oauth:; OpenClaw normalisiert beide Formen (der Einrichtungsassistent erwartet die Form mit oauth:).

    Token-Aktualisierung (optional)

    Tokens vom Twitch Token Generator können von OpenClaw nicht aktualisiert werden – generieren Sie sie nach Ablauf neu (sie sind einige Stunden gültig; keine App-Registrierung erforderlich).

    Erstellen Sie für eine automatische Aktualisierung Ihre eigene App in der Twitch Developer Console und fügen Sie Folgendes hinzu:

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

    Wenn beide Werte gesetzt sind, verwendet das Plugin einen aktualisierenden Authentifizierungs-Provider, der Tokens vor ihrem Ablauf erneuert und jede Aktualisierung protokolliert. Ohne refreshToken wird token refresh disabled (no refresh token) protokolliert; ohne clientSecret wird auf ein statisches (nicht aktualisierendes) Token zurückgegriffen.

    Unterstützung mehrerer Konten

    Verwenden Sie channels.twitch.accounts mit kontospezifischen Anmeldedaten. Das gemeinsame Muster finden Sie unter Konfiguration.

    Beispiel (ein Bot-Konto in zwei Kanälen):

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

    Zugriffskontrolle

    allowFrom ist eine feste Zulassungsliste von Twitch-Benutzer-IDs. Wenn sie gesetzt ist, wird allowedRoles ignoriert; lassen Sie allowFrom ungesetzt, um stattdessen rollenbasierten Zugriff zu verwenden.

    Verfügbare Rollen: "moderator", "owner", "vip", "subscriber", "all".

    Zulassungsliste mit Benutzer-IDs (am sichersten)

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

    Rollenbasiert

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

    @Erwähnungsanforderung deaktivieren

    Standardmäßig ist requireMention auf true gesetzt. So antwortet der Bot auf alle zulässigen Nachrichten:

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

    Fehlerbehebung

    Führen Sie zunächst Diagnosebefehle aus:

    bash
    openclaw doctoropenclaw channels status --probe
    Bot antwortet nicht auf Nachrichten
    • Zugriffskontrolle prüfen: Stellen Sie sicher, dass Ihre Benutzer-ID in allowFrom enthalten ist, oder entfernen Sie allowFrom vorübergehend und setzen Sie zum Testen allowedRoles: ["all"].
    • Erwähnungssperre prüfen: Bei requireMention: true (Standard) müssen Nachrichten den Benutzernamen des Bots mit @ erwähnen.
    • Prüfen, ob der Bot im Kanal ist: Der Bot tritt nur dem in channel angegebenen Kanal bei.
    Token-Probleme

    Failed to connect oder Authentifizierungsfehler:

    • Vergewissern Sie sich, dass accessToken den Wert des OAuth-Zugriffstokens enthält (das Präfix oauth: ist optional)
    • Prüfen Sie, ob das Token über die Berechtigungsbereiche chat:read und chat:write verfügt
    • Prüfen Sie bei Verwendung der Token-Aktualisierung, ob clientSecret und refreshToken gesetzt sind
    Token-Aktualisierung funktioniert nicht

    Prüfen Sie die Protokolle auf Aktualisierungsereignisse:

    text
    Using env token source for mybotAccess token refreshed for user 123456 (expires in 14400s)

    Wenn token refresh disabled (no refresh token) angezeigt wird:

    • Stellen Sie sicher, dass clientSecret angegeben ist
    • Stellen Sie sicher, dass refreshToken angegeben ist

    Konfiguration

    Kontokonfiguration

    usernamestringrequired

    Benutzername des Bots (das authentifizierende Konto).

    accessTokenstringrequired

    OAuth-Zugriffstoken mit chat:read und chat:write (Konfiguration oder Umgebungsvariable für das Standardkonto).

    clientIdstringrequired

    Twitch-Client-ID (aus dem Token Generator oder Ihrer App). Im Schema optional, für die Verbindung jedoch erforderlich.

    channelstringrequired

    Kanal, dem beigetreten werden soll.

    enabledbooleandefault: true

    Dieses Konto aktivieren.

    clientSecretstring

    Optional: für die automatische Token-Aktualisierung.

    refreshTokenstring

    Optional: für die automatische Token-Aktualisierung.

    expiresInnumber

    Ablaufzeit des Tokens in Sekunden (Nachverfolgung der Aktualisierung).

    obtainmentTimestampnumber

    Zeitstempel, zu dem das Token abgerufen wurde (Nachverfolgung der Aktualisierung).

    allowFromstring[]

    Zulassungsliste mit Benutzer-IDs. Wenn sie gesetzt ist, werden Rollen ignoriert.

    allowedRolesArray<"moderator" | "owner" | "vip" | "subscriber" | "all"-F�ezvڲ
    requireMentionbooleandefault: true

    @Erwähnung zum Auslösen des Bots erforderlich machen.

    responsePrefixstring

    Überschreibung des Präfixes für ausgehende Antworten dieses Kontos.

    Provider-Optionen

    • channels.twitch.enabled – Start des Kanals aktivieren/deaktivieren
    • channels.twitch.username / accessToken / clientId / channel – Vereinfachte Einzelkontokonfiguration (implizites Konto default; hat Vorrang vor accounts.default)
    • channels.twitch.accounts.<accountName> – Mehrkontenkonfiguration (alle oben aufgeführten Kontofelder)
    • channels.twitch.defaultAccount – Kontoname, der als Standard verwendet wird
    • channels.twitch.markdown.tables – Darstellungsmodus für Markdown-Tabellen (off | bullets | code | block)

    Vollständiges Beispiel:

    json5
    {  channels: {    twitch: {      enabled: true,      username: "openclaw",      accessToken: "oauth:abc123...",      clientId: "xyz789...",      channel: "yourchannel",      clientSecret: "secret123...",      refreshToken: "refresh456...",      allowFrom: ["123456789"],      accounts: {        second: {          username: "mybot",          accessToken: "oauth:def456...",          clientId: "uvw012...",          channel: "your_channel",          enabled: true,          expiresIn: 14400,          obtainmentTimestamp: 1706092800000,          allowedRoles: ["moderator"],        },      },    },  },}

    Tool-Aktionen

    Der Agent kann Twitch-Nachrichten über die Aktion send des Nachrichten-Tools senden:

    json5
    {  channel: "twitch",  action: "send",  to: "#mychannel",  message: "Hello Twitch!",}

    to ist optional und verwendet standardmäßig den für das Konto konfigurierten channel.

    Sicherheit und Betrieb

    • Behandeln Sie Tokens wie Passwörter – übertragen Sie Tokens niemals in Git.
    • Verwenden Sie die automatische Token-Aktualisierung für dauerhaft laufende Bots.
    • Verwenden Sie Zulassungslisten mit Benutzer-IDs anstelle von Benutzernamen für die Zugriffskontrolle.
    • Überwachen Sie die Protokolle auf Token-Aktualisierungsereignisse und den Verbindungsstatus.
    • Beschränken Sie die Token-Berechtigungen auf das Minimum – fordern Sie nur chat:read und chat:write an.
    • Wenn Sie nicht weiterkommen: Starten Sie das Gateway neu, nachdem Sie sich vergewissert haben, dass kein anderer Prozess die Sitzung besitzt.

    Beschränkungen

    • 500 Zeichen pro Nachricht; längere Antworten werden an Wortgrenzen aufgeteilt.
    • Markdown wird vor dem Senden entfernt (der Twitch-Chat besteht aus Klartext; Zeilenumbrüche werden zu Leerzeichen).
    • OpenClaw fügt keine eigene Ratenbegrenzung hinzu; der Twurple-Chat-Client verarbeitet die Ratenbegrenzungen von Twitch.

    Verwandte Themen

    Was this useful?
    On this page

    On this page