Developer and self-hosted

Twitch

Twitch-chatondersteuning via de chatinterface (IRC) van Twitch met de Twurple-client. OpenClaw meldt zich aan met een Twitch-botaccount, neemt per geconfigureerd account deel aan één kanaal en antwoordt in dat kanaal.

Installeren

Twitch wordt geleverd als officiële plugin; het maakt geen deel uit van de kerninstallatie.

npm-register

bash
openclaw plugins install @openclaw/twitch

Lokale checkout

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

plugins install registreert en activeert de plugin. Als je Twitch kiest tijdens openclaw onboard of openclaw channels add, wordt deze op aanvraag geïnstalleerd. Gebruik alleen de pakketnaam om de huidige release te volgen; zet alleen voor reproduceerbare installaties een exacte versie vast. Vereist OpenClaw 2026.4.10 of nieuwer.

Details: Plugins

Snelle configuratie

  • Installeer de plugin

    Zie Installeren hierboven.

  • Maak een Twitch-botaccount

    Maak een afzonderlijk Twitch-account voor de bot (of gebruik een bestaand account).

  • Genereer aanmeldgegevens

    Gebruik Twitch Token Generator:

    • Selecteer Bot Token
    • Controleer of de scopes chat:read en chat:write zijn geselecteerd
    • Kopieer de Client ID en Access Token
  • Zoek je Twitch-gebruikers-ID

    Gebruik https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/ om een gebruikersnaam naar een Twitch-gebruikers-ID om te zetten.

  • Configureer het token

    • Omgevingsvariabele: OPENCLAW_TWITCH_ACCESS_TOKEN=... (alleen standaardaccount)
    • Of configuratie: channels.twitch.accessToken

    Als beide zijn ingesteld, heeft de configuratie voorrang (de omgevingsvariabele dient alleen als terugvaloptie voor het standaardaccount).

  • Start de Gateway

    bash
    openclaw gateway run
  • Minimale configuratie:

    json5
    {  channels: {    twitch: {      enabled: true,      username: "openclaw", // Twitch-account van de bot (voor authenticatie)      accessToken: "oauth:abc123...", // OAuth-toegangstoken (of gebruik de omgevingsvariabele OPENCLAW_TWITCH_ACCESS_TOKEN)      clientId: "xyz789...", // Client-ID uit Token Generator      channel: "yourchannel", // Aan welke Twitch-kanaalchat moet worden deelgenomen (verplicht)      allowFrom: ["123456789"], // (aanbevolen) Alleen jouw Twitch-gebruikers-ID    },  },}

    Wat het is

    • Een Twitch-kanaal dat eigendom is van de Gateway.
    • Deterministische routering: antwoorden gaan altijd terug naar het Twitch-kanaal waaruit het bericht afkomstig is.
    • Elk kanaal waaraan wordt deelgenomen, wordt toegewezen aan een geïsoleerde groepssessiesleutel agent:<agentId>:twitch:group:<channel>.
    • username is het account van de bot (dat zich authenticeert), channel is de chatruimte waaraan wordt deelgenomen. Elke accountvermelding neemt aan precies één kanaal deel.
    • Tokens werken met of zonder het voorvoegsel oauth:; OpenClaw normaliseert beide vormen (de configuratiewizard verwacht de vorm oauth:).

    Duurzaamheid van inkomende berichten

    OpenClaw plaatst elk geaccepteerd Twitch-chatbericht duurzaam in de wachtrij vóór de normale verwerking. Berichten die in behandeling zijn of opnieuw kunnen worden geprobeerd, blijven behouden na een herstart van de Gateway, worden voor het geconfigureerde kanaal sequentieel verwerkt en gebruiken de bericht-ID van Twitch om dubbele wachtrijvermeldingen te onderdrukken zolang de actieve of bewaarde voltooiingsregistratie bestaat.

    Twitch-chat speelt een PRIVMSG niet opnieuw af nadat de client het heeft geaccepteerd. Dit beschermt het lokale crashvenster tussen acceptatie en verwerking, maar kan geen berichten herstellen die vóór duurzame opname zijn gemist. Als het toevoegen aan de wachtrij zelf mislukt, registreert OpenClaw de fout; opnieuw verbinding maken vraagt Twitch niet om dat bericht opnieuw te verzenden.

    Tokenvernieuwing (optioneel)

    Tokens van Twitch Token Generator kunnen niet door OpenClaw worden vernieuwd. Genereer ze opnieuw wanneer ze zijn verlopen (ze blijven enkele uren geldig; er is geen appregistratie nodig).

    Maak voor automatische vernieuwing je eigen app in de Twitch Developer Console en voeg het volgende toe:

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

    Als beide zijn ingesteld, gebruikt de plugin een vernieuwende authenticatieprovider die tokens vóór het verlopen vernieuwt en elke vernieuwing registreert. Zonder refreshToken registreert deze token refresh disabled (no refresh token); zonder clientSecret valt deze terug op een statisch (niet-vernieuwend) token.

    Ondersteuning voor meerdere accounts

    Gebruik channels.twitch.accounts met aanmeldgegevens per account. Zie Configuratie voor het gedeelde patroon.

    Voorbeeld (één botaccount in twee kanalen):

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

    Toegangsbeheer

    allowFrom is een strikte toelatingslijst van Twitch-gebruikers-ID's. Wanneer deze is ingesteld, wordt allowedRoles genegeerd; laat allowFrom oningesteld om in plaats daarvan rolgebaseerde toegang te gebruiken.

    Beschikbare rollen: "moderator", "owner", "vip", "subscriber", "all".

    Toelatingslijst met gebruikers-ID's (veiligst)

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

    Rolgebaseerd

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

    Vereiste voor @vermelding uitschakelen

    Standaard is requireMention true. Om op alle toegestane berichten te reageren:

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

    Problemen oplossen

    Voer eerst diagnostische opdrachten uit:

    bash
    openclaw doctoropenclaw channels status --probe
    Bot reageert niet op berichten
    • Controleer het toegangsbeheer: Zorg dat je gebruikers-ID in allowFrom staat, of verwijder tijdelijk allowFrom en stel allowedRoles: ["all"] in om te testen.
    • Controleer de vermeldingspoort: Met requireMention: true (standaard) moeten berichten de gebruikersnaam van de bot met een @vermelden.
    • Controleer of de bot in het kanaal aanwezig is: De bot neemt alleen deel aan het kanaal dat in channel is opgegeven.
    Tokenproblemen

    Fouten zoals "Kan geen verbinding maken" of authenticatiefouten:

    • Controleer of accessToken de waarde van het OAuth-toegangstoken is (het voorvoegsel oauth: is optioneel)
    • Controleer of het token de scopes chat:read en chat:write heeft
    • Controleer bij gebruik van tokenvernieuwing of clientSecret en refreshToken zijn ingesteld
    Tokenvernieuwing werkt niet

    Controleer de logboeken op vernieuwingsgebeurtenissen:

    text
    Omgevingsvariabel tokenbron wordt gebruikt voor mybotToegangstoken vernieuwd voor gebruiker 123456 (verloopt over 14400s)

    Als je token refresh disabled (no refresh token) ziet:

    • Zorg dat clientSecret is opgegeven
    • Zorg dat refreshToken is opgegeven

    Configuratie

    Accountconfiguratie

    usernamestringrequired

    Gebruikersnaam van de bot (het account dat zich authenticeert).

    accessTokenstringrequired

    OAuth-toegangstoken met chat:read en chat:write (configuratie of omgevingsvariabele voor het standaardaccount).

    clientIdstringrequired

    Twitch-client-ID (uit Token Generator of je app). Optioneel in het schema, maar vereist om verbinding te maken.

    channelstringrequired

    Kanaal waaraan moet worden deelgenomen.

    enabledbooleandefault: true

    Activeer dit account.

    clientSecretstring

    Optioneel: voor automatische tokenvernieuwing.

    refreshTokenstring

    Optioneel: voor automatische tokenvernieuwing.

    expiresInnumber

    Vervaltijd van het token in seconden (bijhouden van vernieuwing).

    obtainmentTimestampnumber

    Tijdstempel waarop het token is verkregen (bijhouden van vernieuwing).

    allowFromstring[]

    Toelatingslijst met gebruikers-ID's. Wanneer deze is ingesteld, worden rollen genegeerd.

    allowedRoles'Array<"moderator"
    requireMentionbooleandefault: true

    Vereis een @vermelding om de bot te activeren.

    responsePrefixstring

    Overschrijving van het voorvoegsel voor uitgaande antwoorden voor dit account.

    Provideropties

    • channels.twitch.enabled - Opstarten van het kanaal in-/uitschakelen
    • channels.twitch.username / accessToken / clientId / channel - Vereenvoudigde configuratie voor één account (impliciet account default; heeft voorrang op accounts.default)
    • channels.twitch.accounts.<accountName> - Configuratie voor meerdere accounts (alle bovenstaande accountvelden)
    • channels.twitch.defaultAccount - Welke accountnaam de standaard is
    • channels.twitch.markdown.tables - Weergavemodus voor Markdown-tabellen (off | bullets | code | block)

    Volledig voorbeeld:

    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"],        },      },    },  },}

    Toolacties

    De agent kan Twitch-berichten verzenden via de actie send van de berichtentool:

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

    to is optioneel en gebruikt standaard de geconfigureerde channel van het account.

    Veiligheid en beheer

    • Behandel tokens als wachtwoorden - commit tokens nooit naar git.
    • Gebruik automatische tokenvernieuwing voor bots die langdurig actief zijn.
    • Gebruik toelatingslijsten met gebruikers-ID's in plaats van gebruikersnamen voor toegangsbeheer.
    • Controleer logboeken op gebeurtenissen rond tokenvernieuwing en de verbindingsstatus.
    • Beperk het bereik van tokens tot het minimum - vraag alleen chat:read en chat:write aan.
    • Als je vastloopt: start de Gateway opnieuw nadat je hebt gecontroleerd dat geen ander proces eigenaar is van de sessie.

    Limieten

    • 500 tekens per bericht; langere antwoorden worden bij woordgrenzen opgesplitst.
    • Markdown wordt vóór verzending verwijderd (Twitch-chat bestaat uit platte tekst; nieuwe regels worden spaties).
    • OpenClaw voegt zelf geen snelheidsbeperking toe; de Twurple-chatclient handelt de snelheidslimieten van Twitch af.

    Gerelateerd

    Was this useful?
    On this page

    On this page