Developer and self-hosted
Twitch
Compatibilidad con el chat de Twitch mediante la interfaz de chat (IRC) de Twitch a través del cliente Twurple. OpenClaw inicia sesión como una cuenta de bot de Twitch, se une a un canal por cada cuenta configurada y responde en ese canal.
Instalación
Twitch se distribuye como un plugin oficial; no forma parte de la instalación principal.
Registro de npm
openclaw plugins install @openclaw/twitchCopia de trabajo local
openclaw plugins install ./path/to/local/twitch-pluginplugins install registra y habilita el plugin. Al elegir Twitch durante openclaw onboard o openclaw channels add, se instala bajo demanda. Use el nombre del paquete sin versión para seguir la versión actual; fije una versión exacta solo para instalaciones reproducibles. Requiere OpenClaw 2026.4.10 o posterior.
Detalles: Plugins
Configuración rápida
Instalar el plugin
Consulte Instalación arriba.
Crear una cuenta de bot de Twitch
Cree una cuenta de Twitch dedicada para el bot (o use una cuenta existente).
Generar credenciales
- Seleccione Bot Token
- Verifique que los ámbitos
chat:readychat:writeestén seleccionados - Copie Client ID y Access Token
Encontrar su ID de usuario de Twitch
Use https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/ para convertir un nombre de usuario en un ID de usuario de Twitch.
Configurar el token
- Variable de entorno:
OPENCLAW_TWITCH_ACCESS_TOKEN=...(solo para la cuenta predeterminada) - O configuración:
channels.twitch.accessToken
Si se establecen ambos, la configuración tiene prioridad (la variable de entorno solo se usa como alternativa para la cuenta predeterminada).
Iniciar el Gateway
openclaw gateway runConfiguración mínima:
{ channels: { twitch: { enabled: true, username: "openclaw", // Cuenta de Twitch del bot (se autentica) accessToken: "oauth:abc123...", // Token de acceso OAuth (o use la variable de entorno OPENCLAW_TWITCH_ACCESS_TOKEN) clientId: "xyz789...", // ID de cliente de Token Generator channel: "yourchannel", // Chat del canal de Twitch al que unirse (obligatorio) allowFrom: ["123456789"], // (recomendado) Solo su ID de usuario de Twitch }, },}Qué es
- Un canal de Twitch propiedad del Gateway.
- Enrutamiento determinista: las respuestas siempre vuelven al canal de Twitch del que procede el mensaje.
- Cada canal al que se une se asigna a una clave de sesión de grupo aislada
agent:<agentId>:twitch:group:<channel>. usernamees la cuenta del bot (la que se autentica);channelindica a qué sala de chat unirse. Cada entrada de cuenta se une exactamente a un canal.- Los tokens funcionan con o sin el prefijo
oauth:; OpenClaw normaliza ambos formatos (el asistente de configuración espera el formatooauth:).
Durabilidad de los mensajes entrantes
OpenClaw pone de forma duradera en cola cada mensaje de chat de Twitch aceptado antes del envío normal. Los mensajes pendientes o reintentables sobreviven a un reinicio del Gateway, permanecen serializados para el canal configurado y usan el ID de mensaje de Twitch para impedir entradas duplicadas en la cola mientras exista el registro de finalización activo o retenido.
El chat de Twitch no vuelve a enviar un PRIVMSG después de que el cliente lo haya aceptado. Esto protege la ventana de fallo local entre la aceptación y el envío, pero no permite recuperar mensajes perdidos antes de su admisión duradera. Si falla la propia adición a la cola, OpenClaw registra el fallo; al reconectarse, no solicita a Twitch que vuelva a enviar ese mensaje.
Renovación de tokens (opcional)
OpenClaw no puede renovar los tokens de Twitch Token Generator; genérelos de nuevo cuando caduquen (duran unas horas y no es necesario registrar una aplicación).
Para la renovación automática, cree su propia aplicación en Twitch Developer Console y añada:
{ channels: { twitch: { clientSecret: "your_client_secret", refreshToken: "your_refresh_token", }, },}Cuando ambos están establecidos, el plugin usa un proveedor de autenticación con renovación que renueva los tokens antes de que caduquen y registra cada renovación. Sin refreshToken, registra token refresh disabled (no refresh token); sin clientSecret, recurre a un token estático (sin renovación).
Compatibilidad con varias cuentas
Use channels.twitch.accounts con credenciales por cuenta. Consulte Configuración para conocer el patrón compartido.
Ejemplo (una cuenta de bot en dos canales):
{ channels: { twitch: { accounts: { channel1: { username: "openclaw", accessToken: "oauth:abc123...", clientId: "xyz789...", channel: "yourchannel", }, channel2: { username: "openclaw", accessToken: "oauth:def456...", clientId: "uvw012...", channel: "secondchannel", }, }, }, },}Control de acceso
allowFrom es una lista estricta de ID de usuario de Twitch permitidos. Cuando se establece, allowedRoles se ignora; deje allowFrom sin establecer para usar en su lugar el acceso basado en roles.
Roles disponibles: "moderator", "owner", "vip", "subscriber", "all".
Lista de ID de usuario permitidos (más segura)
{ channels: { twitch: { accounts: { default: { allowFrom: ["123456789", "987654321"], }, }, }, },}Basado en roles
{ channels: { twitch: { accounts: { default: { allowedRoles: ["moderator", "vip"], }, }, }, },}Deshabilitar el requisito de @mención
De forma predeterminada, requireMention es true. Para responder a todos los mensajes permitidos:
{ channels: { twitch: { accounts: { default: { requireMention: false, }, }, }, },}Solución de problemas
Primero, ejecute los comandos de diagnóstico:
openclaw doctoropenclaw channels status --probeEl bot no responde a los mensajes
- Compruebe el control de acceso: asegúrese de que su ID de usuario esté en
allowFrom, o elimine temporalmenteallowFromy establezcaallowedRoles: ["all"]para hacer una prueba. - Compruebe el filtro de menciones: con
requireMention: true(valor predeterminado), los mensajes deben incluir una @mención del nombre de usuario del bot. - Compruebe que el bot esté en el canal: el bot solo se une al canal indicado en
channel.
Problemas con los tokens
Errores de autenticación o "Failed to connect":
- Verifique que
accessTokensea el valor del token de acceso OAuth (el prefijooauth:es opcional) - Compruebe que el token tenga los ámbitos
chat:readychat:write - Si usa la renovación de tokens, verifique que
clientSecretyrefreshTokenestén establecidos
La renovación de tokens no funciona
Compruebe los registros para ver los eventos de renovación:
Usando la fuente de tokens de la variable de entorno para mybotToken de acceso renovado para el usuario 123456 (caduca en 14400s)Si aparece token refresh disabled (no refresh token):
- Asegúrese de proporcionar
clientSecret - Asegúrese de proporcionar
refreshToken
Configuración
Configuración de la cuenta
usernamestringrequiredNombre de usuario del bot (la cuenta que se autentica).
accessTokenstringrequiredToken de acceso OAuth con chat:read y chat:write (configuración o variable de entorno para la cuenta predeterminada).
clientIdstringrequiredID de cliente de Twitch (de Token Generator o de su aplicación). Es opcional en el esquema, pero obligatorio para conectarse.
channelstringrequiredCanal al que unirse.
enabledbooleandefault: trueHabilita esta cuenta.
clientSecretstringOpcional: para la renovación automática de tokens.
refreshTokenstringOpcional: para la renovación automática de tokens.
expiresInnumberCaducidad del token en segundos (seguimiento de la renovación).
obtainmentTimestampnumberMarca de tiempo de obtención del token (seguimiento de la renovación).
allowFromstring[]Lista de ID de usuario permitidos. Cuando se establece, los roles se ignoran.
allowedRoles'Array<"moderator"requireMentionbooleandefault: trueRequiere una @mención para activar el bot.
responsePrefixstringSustitución del prefijo de las respuestas salientes para esta cuenta.
Opciones del proveedor
channels.twitch.enabled- Habilita o deshabilita el inicio del canalchannels.twitch.username/accessToken/clientId/channel- Configuración simplificada de una sola cuenta (cuentadefaultimplícita; tiene prioridad sobreaccounts.default)channels.twitch.accounts.<accountName>- Configuración de varias cuentas (todos los campos de cuenta anteriores)channels.twitch.defaultAccount- Nombre de la cuenta predeterminadachannels.twitch.markdown.tables- Modo de representación de tablas Markdown (off|bullets|code|block)
Ejemplo 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"], }, }, }, },}Acciones de herramientas
El agente puede enviar mensajes de Twitch mediante la acción send de la herramienta de mensajes:
{ channel: "twitch", action: "send", to: "#mychannel", message: "¡Hola, Twitch!",}to es opcional y su valor predeterminado es el channel configurado de la cuenta.
Seguridad y operaciones
- Trate los tokens como contraseñas: nunca confirme tokens en git.
- Utilice la actualización automática de tokens para bots de larga duración.
- Utilice listas de usuarios permitidos basadas en el ID de usuario en lugar de nombres de usuario para el control de acceso.
- Supervise los registros para detectar eventos de actualización de tokens y el estado de la conexión.
- Limite al mínimo el alcance de los tokens: solicite únicamente
chat:readychat:write. - Si el problema persiste: reinicie el Gateway después de confirmar que ningún otro proceso controla la sesión.
Límites
- 500 caracteres por mensaje; las respuestas más largas se dividen respetando los límites entre palabras.
- Markdown se elimina antes del envío (el chat de Twitch es texto sin formato; los saltos de línea se convierten en espacios).
- OpenClaw no añade ninguna limitación de velocidad propia; el cliente de chat Twurple gestiona los límites de velocidad de Twitch.
Contenido relacionado
- Enrutamiento de canales — enrutamiento de sesiones para mensajes
- Descripción general de los canales — todos los canales compatibles
- Grupos — comportamiento del chat grupal y control mediante menciones
- Emparejamiento — autenticación de mensajes directos y flujo de emparejamiento
- Seguridad — modelo de acceso y refuerzo de la seguridad