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
openclaw plugins install @openclaw/twitchLokale checkout
openclaw plugins install ./path/to/local/twitch-pluginplugins 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:readenchat:writezijn 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
openclaw gateway runMinimale configuratie:
{ 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>. usernameis het account van de bot (dat zich authenticeert),channelis 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 vormoauth:).
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:
{ 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):
{ 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)
{ channels: { twitch: { accounts: { default: { allowFrom: ["123456789", "987654321"], }, }, }, },}Rolgebaseerd
{ channels: { twitch: { accounts: { default: { allowedRoles: ["moderator", "vip"], }, }, }, },}Vereiste voor @vermelding uitschakelen
Standaard is requireMention true. Om op alle toegestane berichten te reageren:
{ channels: { twitch: { accounts: { default: { requireMention: false, }, }, }, },}Problemen oplossen
Voer eerst diagnostische opdrachten uit:
openclaw doctoropenclaw channels status --probeBot reageert niet op berichten
- Controleer het toegangsbeheer: Zorg dat je gebruikers-ID in
allowFromstaat, of verwijder tijdelijkallowFromen stelallowedRoles: ["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
channelis opgegeven.
Tokenproblemen
Fouten zoals "Kan geen verbinding maken" of authenticatiefouten:
- Controleer of
accessTokende waarde van het OAuth-toegangstoken is (het voorvoegseloauth:is optioneel) - Controleer of het token de scopes
chat:readenchat:writeheeft - Controleer bij gebruik van tokenvernieuwing of
clientSecretenrefreshTokenzijn ingesteld
Tokenvernieuwing werkt niet
Controleer de logboeken op vernieuwingsgebeurtenissen:
Omgevingsvariabel tokenbron wordt gebruikt voor mybotToegangstoken vernieuwd voor gebruiker 123456 (verloopt over 14400s)Als je token refresh disabled (no refresh token) ziet:
- Zorg dat
clientSecretis opgegeven - Zorg dat
refreshTokenis opgegeven
Configuratie
Accountconfiguratie
usernamestringrequiredGebruikersnaam van de bot (het account dat zich authenticeert).
accessTokenstringrequiredOAuth-toegangstoken met chat:read en chat:write (configuratie of omgevingsvariabele voor het standaardaccount).
clientIdstringrequiredTwitch-client-ID (uit Token Generator of je app). Optioneel in het schema, maar vereist om verbinding te maken.
channelstringrequiredKanaal waaraan moet worden deelgenomen.
enabledbooleandefault: trueActiveer dit account.
clientSecretstringOptioneel: voor automatische tokenvernieuwing.
refreshTokenstringOptioneel: voor automatische tokenvernieuwing.
expiresInnumberVervaltijd van het token in seconden (bijhouden van vernieuwing).
obtainmentTimestampnumberTijdstempel 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: trueVereis een @vermelding om de bot te activeren.
responsePrefixstringOverschrijving van het voorvoegsel voor uitgaande antwoorden voor dit account.
Provideropties
channels.twitch.enabled- Opstarten van het kanaal in-/uitschakelenchannels.twitch.username/accessToken/clientId/channel- Vereenvoudigde configuratie voor één account (impliciet accountdefault; heeft voorrang opaccounts.default)channels.twitch.accounts.<accountName>- Configuratie voor meerdere accounts (alle bovenstaande accountvelden)channels.twitch.defaultAccount- Welke accountnaam de standaard ischannels.twitch.markdown.tables- Weergavemodus voor Markdown-tabellen (off|bullets|code|block)
Volledig voorbeeld:
{ 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:
{ 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:readenchat:writeaan. - 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
- Kanaalroutering — sessieroutering voor berichten
- Overzicht van kanalen — alle ondersteunde kanalen
- Groepen — gedrag van groepschats en filtering op vermeldingen
- Koppelen — DM-authenticatie en koppelingsproces
- Beveiliging — toegangsmodel en versterking