Twitch (plugin)
Twitch-chatondersteuning via IRC-verbinding. OpenClaw maakt als Twitch-gebruiker (botaccount) verbinding om berichten te ontvangen en te versturen in kanalen.
Plugin vereist
Twitch wordt als plugin geleverd en is niet gebundeld met de kerninstallatie.
Installeren via CLI (npm-register):
openclaw plugins install @openclaw/twitch
Lokale checkout (vanuit een git-repo):
openclaw plugins install ./extensions/twitch
Details: Plugins
Snelle installatie (beginner)
- Maak een apart Twitch-account aan voor de bot (of gebruik een bestaand account).
- Genereer credentials: Twitch Token Generator
- Selecteer Bot Token
- Verifieer dat scopes
chat:readenchat:writezijn geselecteerd - Kopieer de Client ID en Access Token
- Zoek je Twitch-gebruikers-ID op: https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/
- Configureer het token:
- Omgevingsvariabele:
OPENCLAW_TWITCH_ACCESS_TOKEN=...(alleen standaardaccount) - Of config:
channels.twitch.accessToken - Als beide zijn ingesteld, heeft config voorrang (omgevingsvariabele is alleen terugval voor standaardaccount).
- Omgevingsvariabele:
- Start de gateway.
Waarschuwing: Voeg toegangscontrole toe (
allowFromofallowedRoles) om te voorkomen dat ongeautoriseerde gebruikers de bot triggeren.requireMentionstaat standaard optrue.
Minimale configuratie:
{
channels: {
twitch: {
enabled: true,
username: "openclaw", // Bot's Twitch account
accessToken: "oauth:abc123...", // OAuth Access Token (or use OPENCLAW_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/
},
},
}
Wat het is
- Een Twitch-kanaal beheerd door de Gateway.
- Deterministische routering: antwoorden gaan altijd terug naar Twitch.
- Elk account wordt gekoppeld aan een geïsoleerde sessiesleutel
agent:<agentId>:twitch:<accountName>. usernameis het botaccount (wie zich authenticeert),channelis de chatroom om toe te treden.
Installatie (gedetailleerd)
Credentials genereren
Gebruik Twitch Token Generator:
- Selecteer Bot Token
- Verifieer dat scopes
chat:readenchat:writezijn geselecteerd - Kopieer de Client ID en Access Token
Handmatige app-registratie is niet nodig. Tokens verlopen na enkele uren.
De bot configureren
Omgevingsvariabele (alleen standaardaccount):
OPENCLAW_TWITCH_ACCESS_TOKEN=oauth:abc123...
Of config:
{
channels: {
twitch: {
enabled: true,
username: "openclaw",
accessToken: "oauth:abc123...",
clientId: "xyz789...",
channel: "vevisk",
},
},
}
Als zowel omgevingsvariabele als config zijn ingesteld, heeft config voorrang.
Toegangscontrole (aanbevolen)
{
channels: {
twitch: {
allowFrom: ["123456789"], // (recommended) Your Twitch user ID only
},
},
}
Gebruik bij voorkeur allowFrom voor een strikte allowlist. Gebruik allowedRoles als je rolgebaseerde toegang wilt.
Beschikbare rollen: "moderator", "owner", "vip", "subscriber", "all".
Waarom gebruikers-ID’s? Gebruikersnamen kunnen worden gewijzigd, wat imitatie mogelijk maakt. Gebruikers-ID’s zijn permanent.
Zoek je Twitch-gebruikers-ID op: https://www.streamweasels.com/tools/convert-twitch-username-%20to-user-id/ (Converteer je Twitch-gebruikersnaam naar ID)
Token vernieuwen (optioneel)
Tokens van Twitch Token Generator kunnen niet automatisch worden vernieuwd — genereer opnieuw wanneer verlopen.
Voor automatische tokenvernieuwing maak je een eigen Twitch-applicatie aan via de Twitch Developer Console en voeg je toe aan de config:
{
channels: {
twitch: {
clientSecret: "your_client_secret",
refreshToken: "your_refresh_token",
},
},
}
De bot vernieuwt tokens automatisch voor het verlopen en logt vernieuwingsevents.
Multi-account-ondersteuning
Gebruik channels.twitch.accounts met per-account tokens. Zie gateway/configuration voor het gedeelde patroon.
Voorbeeld (een botaccount in twee kanalen):
{
channels: {
twitch: {
accounts: {
channel1: {
username: "openclaw",
accessToken: "oauth:abc123...",
clientId: "xyz789...",
channel: "vevisk",
},
channel2: {
username: "openclaw",
accessToken: "oauth:def456...",
clientId: "uvw012...",
channel: "secondchannel",
},
},
},
},
}
Opmerking: Elk account heeft een eigen token nodig (een token per kanaal).
Toegangscontrole
Rolgebaseerde beperkingen
{
channels: {
twitch: {
accounts: {
default: {
allowedRoles: ["moderator", "vip"],
},
},
},
},
}
Allowlist op gebruikers-ID (meest veilig)
{
channels: {
twitch: {
accounts: {
default: {
allowFrom: ["123456789", "987654321"],
},
},
},
},
}
Rolgebaseerde toegang (alternatief)
allowFrom is een strikte allowlist. Wanneer ingesteld, worden alleen die gebruikers-ID’s toegestaan.
Als je rolgebaseerde toegang wilt, laat allowFrom leeg en configureer in plaats daarvan allowedRoles:
{
channels: {
twitch: {
accounts: {
default: {
allowedRoles: ["moderator"],
},
},
},
},
}
@mention-vereiste uitschakelen
Standaard is requireMention true. Om uit te schakelen en op alle berichten te reageren:
{
channels: {
twitch: {
accounts: {
default: {
requireMention: false,
},
},
},
},
}
Probleemoplossing
Voer eerst de diagnostische commando’s uit:
openclaw doctor
openclaw channels status --probe
Bot reageert niet op berichten
Controleer de toegangscontrole: Zorg ervoor dat je gebruikers-ID in allowFrom staat, of verwijder tijdelijk allowFrom en stel allowedRoles: ["all"] in om te testen.
Controleer of de bot in het kanaal zit: De bot moet toetreden tot het kanaal dat is opgegeven in channel.
Tokenproblemen
“Failed to connect” of authenticatiefouten:
- Verifieer dat
accessTokende OAuth access token-waarde is (begint meestal met hetoauth:-prefix) - Controleer of het token de scopes
chat:readenchat:writeheeft - Als je tokenvernieuwing gebruikt, verifieer dan dat
clientSecretenrefreshTokenzijn ingesteld
Tokenvernieuwing werkt niet
Controleer logs op vernieuwingsevents:
Using env token source for mybot
Access token refreshed for user 123456 (expires in 14400s)
Als je “token refresh disabled (no refresh token)” ziet:
- Zorg ervoor dat
clientSecretis opgegeven - Zorg ervoor dat
refreshTokenis opgegeven
Config
Accountconfiguratie:
username- BotgebruikersnaamaccessToken- OAuth access token metchat:readenchat:writeclientId- Twitch Client ID (van Token Generator of je app)channel- Kanaal om toe te treden (vereist)enabled- Dit account inschakelen (standaard:true)clientSecret- Optioneel: voor automatische tokenvernieuwingrefreshToken- Optioneel: voor automatische tokenvernieuwingexpiresIn- Tokenvervaltijd in secondenobtainmentTimestamp- Tijdstempel tokenverkrijgingallowFrom- Gebruikers-ID-allowlistallowedRoles- Rolgebaseerde toegangscontrole ("moderator" | "owner" | "vip" | "subscriber" | "all")requireMention- @mention vereisen (standaard:true)
Provideropties:
channels.twitch.enabled- Kanaal in-/uitschakelen bij opstartchannels.twitch.username- Botgebruikersnaam (vereenvoudigde single-account-config)channels.twitch.accessToken- OAuth access token (vereenvoudigde single-account-config)channels.twitch.clientId- Twitch Client ID (vereenvoudigde single-account-config)channels.twitch.channel- Kanaal om toe te treden (vereenvoudigde single-account-config)channels.twitch.accounts.<accountName>- Multi-account-config (alle bovenstaande accountvelden)
Volledig voorbeeld:
{
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-acties
De agent kan twitch aanroepen met actie:
send- Een bericht naar een kanaal sturen
Voorbeeld:
{
action: "twitch",
params: {
message: "Hello Twitch!",
to: "#mychannel",
},
}
Veiligheid en beheer
- Behandel tokens als wachtwoorden - Commit nooit tokens naar git
- Gebruik automatische tokenvernieuwing voor langdraaiende bots
- Gebruik gebruikers-ID-allowlists in plaats van gebruikersnamen voor toegangscontrole
- Monitor logs op tokenvernieuwingsevents en verbindingsstatus
- Beperk tokenscopes - Vraag alleen
chat:readenchat:writeaan - Vastgelopen?: Herstart de gateway nadat je hebt bevestigd dat geen ander proces de sessie bezit
Limieten
- 500 tekens per bericht (automatisch opgesplitst bij woordgrenzen)
- Markdown wordt verwijderd voor het opsplitsen
- Geen snelheidsbeperking (gebruikt Twitch’s ingebouwde snelheidslimieten)