Developer and self-hosted
Twitch
Supporto della chat di Twitch tramite l'interfaccia chat (IRC) di Twitch usando il client Twurple. OpenClaw accede con un account bot Twitch, entra in un canale per ogni account configurato e risponde in quel canale.
Installazione
Twitch viene distribuito come Plugin ufficiale; non fa parte dell'installazione principale.
Registro npm
openclaw plugins install @openclaw/twitchCheckout locale
openclaw plugins install ./path/to/local/twitch-pluginplugins install registra e abilita il Plugin. Selezionando Twitch durante openclaw onboard o openclaw channels add, viene installato su richiesta. Usa il nome del pacchetto senza versione per seguire la release corrente; specifica una versione esatta solo per installazioni riproducibili. Richiede OpenClaw 2026.4.10 o versione successiva.
Dettagli: Plugin
Configurazione rapida
Installa il Plugin
Consulta la sezione Installazione precedente.
Crea un account bot Twitch
Crea un account Twitch dedicato al bot oppure usa un account esistente.
Genera le credenziali
- Seleziona Bot Token
- Verifica che gli ambiti
chat:readechat:writesiano selezionati - Copia Client ID e Access Token
Trova il tuo ID utente Twitch
Usa https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/ per convertire un nome utente in un ID utente Twitch.
Configura il token
- Variabile d'ambiente:
OPENCLAW_TWITCH_ACCESS_TOKEN=...(solo per l'account predefinito) - Oppure configurazione:
channels.twitch.accessToken
Se sono impostati entrambi, la configurazione ha la precedenza (la variabile d'ambiente viene usata solo come ripiego per l'account predefinito).
Avvia il Gateway
openclaw gateway runConfigurazione minima:
{ channels: { twitch: { enabled: true, username: "openclaw", // Account Twitch del bot (esegue l'autenticazione) accessToken: "oauth:abc123...", // Token di accesso OAuth (oppure usa la variabile d'ambiente OPENCLAW_TWITCH_ACCESS_TOKEN) clientId: "xyz789...", // ID client ottenuto da Token Generator channel: "yourchannel", // Chat del canale Twitch a cui accedere (obbligatorio) allowFrom: ["123456789"], // (consigliato) Solo il tuo ID utente Twitch }, },}Cos'è
- Un canale Twitch gestito dal Gateway.
- Instradamento deterministico: le risposte vengono sempre inviate al canale Twitch da cui proviene il messaggio.
- Ogni canale a cui si accede corrisponde a una chiave di sessione di gruppo isolata
agent:<agentId>:twitch:group:<channel>. usernameè l'account del bot che esegue l'autenticazione, mentrechannelè la chat a cui accedere. Ogni voce di account accede esattamente a un canale.- I token funzionano con o senza il prefisso
oauth:; OpenClaw normalizza entrambe le forme (la procedura guidata di configurazione richiede la forma conoauth:).
Aggiornamento del token (facoltativo)
I token ottenuti da Twitch Token Generator non possono essere aggiornati da OpenClaw: rigenerali quando scadono (durano alcune ore e non richiedono la registrazione di un'app).
Per l'aggiornamento automatico, crea una tua app nella Console per sviluppatori Twitch e aggiungi:
{ channels: { twitch: { clientSecret: "your_client_secret", refreshToken: "your_refresh_token", }, },}Quando entrambi sono impostati, il Plugin usa un provider di autenticazione con aggiornamento automatico, che rinnova i token prima della scadenza e registra ogni aggiornamento. Senza refreshToken, registra token refresh disabled (no refresh token); senza clientSecret, torna a usare un token statico, privo di aggiornamento automatico.
Supporto multi-account
Usa channels.twitch.accounts con credenziali specifiche per ogni account. Consulta Configurazione per il modello condiviso.
Esempio (un account bot in due canali):
{ channels: { twitch: { accounts: { channel1: { username: "openclaw", accessToken: "oauth:abc123...", clientId: "xyz789...", channel: "yourchannel", }, channel2: { username: "openclaw", accessToken: "oauth:def456...", clientId: "uvw012...", channel: "secondchannel", }, }, }, },}Controllo degli accessi
allowFrom è un elenco di autorizzazione rigido di ID utente Twitch. Quando è impostato, allowedRoles viene ignorato; lascia allowFrom non impostato per usare invece l'accesso basato sui ruoli.
Ruoli disponibili: "moderator", "owner", "vip", "subscriber", "all".
Elenco di autorizzazione degli ID utente (più sicuro)
{ channels: { twitch: { accounts: { default: { allowFrom: ["123456789", "987654321"], }, }, }, },}Basato sui ruoli
{ channels: { twitch: { accounts: { default: { allowedRoles: ["moderator", "vip"], }, }, }, },}Disabilita il requisito della @menzione
Per impostazione predefinita, requireMention è true. Per rispondere a tutti i messaggi autorizzati:
{ channels: { twitch: { accounts: { default: { requireMention: false, }, }, }, },}Risoluzione dei problemi
Per prima cosa, esegui i comandi diagnostici:
openclaw doctoropenclaw channels status --probeIl bot non risponde ai messaggi
- Controlla il controllo degli accessi: assicurati che il tuo ID utente sia presente in
allowFromoppure, temporaneamente, rimuoviallowFrome impostaallowedRoles: ["all"]per eseguire una prova. - Controlla il vincolo della menzione: con
requireMention: true(valore predefinito), i messaggi devono contenere una @menzione del nome utente del bot. - Controlla che il bot sia nel canale: il bot accede solo al canale specificato in
channel.
Problemi con il token
Errori "Failed to connect" o di autenticazione:
- Verifica che
accessTokencontenga il valore del token di accesso OAuth (il prefissooauth:è facoltativo) - Controlla che il token disponga degli ambiti
chat:readechat:write - Se usi l'aggiornamento del token, verifica che
clientSecreterefreshTokensiano impostati
L'aggiornamento del token non funziona
Controlla nei registri gli eventi di aggiornamento:
Using env token source for mybotAccess token refreshed for user 123456 (expires in 14400s)Se viene visualizzato token refresh disabled (no refresh token):
- Assicurati che
clientSecretsia specificato - Assicurati che
refreshTokensia specificato
Configurazione
Configurazione dell'account
usernamestringrequiredNome utente del bot, ossia l'account che esegue l'autenticazione.
accessTokenstringrequiredToken di accesso OAuth con chat:read e chat:write (tramite configurazione o variabile d'ambiente per l'account predefinito).
clientIdstringrequiredID client Twitch (da Token Generator o dalla tua app). Facoltativo nello schema, ma obbligatorio per la connessione.
channelstringrequiredCanale a cui accedere.
enabledbooleandefault: trueAbilita questo account.
clientSecretstringFacoltativo: per l'aggiornamento automatico del token.
refreshTokenstringFacoltativo: per l'aggiornamento automatico del token.
expiresInnumberScadenza del token in secondi (monitoraggio dell'aggiornamento).
obtainmentTimestampnumberIndicatore temporale dell'ottenimento del token (monitoraggio dell'aggiornamento).
allowFromstring[]Elenco di autorizzazione degli ID utente. Quando è impostato, i ruoli vengono ignorati.
allowedRoles'Array<"moderator"requireMentionbooleandefault: trueRichiede una @menzione per attivare il bot.
responsePrefixstringSostituzione del prefisso delle risposte in uscita per questo account.
Opzioni del provider
channels.twitch.enabled- Abilita o disabilita l'avvio del canalechannels.twitch.username/accessToken/clientId/channel- Configurazione semplificata per un singolo account (accountdefaultimplicito; ha la precedenza suaccounts.default)channels.twitch.accounts.<accountName>- Configurazione multi-account (tutti i campi dell'account indicati sopra)channels.twitch.defaultAccount- Nome dell'account predefinitochannels.twitch.markdown.tables- Modalità di rendering delle tabelle Markdown (off|bullets|code|block)
Esempio completo:
{ 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"], }, }, }, },}Azioni degli strumenti
L'agente può inviare messaggi Twitch tramite l'azione send dello strumento di messaggistica:
{ channel: "twitch", action: "send", to: "#mychannel", message: "Hello Twitch!",}to è facoltativo e usa come valore predefinito il channel configurato per l'account.
Sicurezza e operatività
- Tratta i token come password: non eseguire mai il commit dei token in git.
- Usa l'aggiornamento automatico del token per i bot in esecuzione prolungata.
- Usa elenchi di autorizzazione degli ID utente anziché nomi utente per il controllo degli accessi.
- Monitora i registri per gli eventi di aggiornamento del token e lo stato della connessione.
- Riduci al minimo gli ambiti dei token: richiedi solo
chat:readechat:write. - In caso di blocco: riavvia il Gateway dopo aver verificato che nessun altro processo sia proprietario della sessione.
Limiti
- 500 caratteri per messaggio; le risposte più lunghe vengono suddivise in corrispondenza dei confini tra parole.
- Markdown viene rimosso prima dell'invio (la chat di Twitch usa testo normale; le interruzioni di riga diventano spazi).
- OpenClaw non aggiunge una propria limitazione della frequenza; il client di chat Twurple gestisce i limiti di frequenza di Twitch.
Argomenti correlati
- Instradamento dei canali — instradamento delle sessioni per i messaggi
- Panoramica dei canali — tutti i canali supportati
- Gruppi — comportamento delle chat di gruppo e vincolo della menzione
- Associazione — autenticazione dei messaggi diretti e flusso di associazione
- Sicurezza — modello di accesso e protezione avanzata