Developer and self-hosted
Twitch
Suporte ao chat da Twitch pela interface de chat (IRC) da Twitch usando o cliente Twurple. O OpenClaw entra com uma conta de bot da Twitch, participa de um canal por conta configurada e responde nesse canal.
Instalação
A Twitch é distribuída como um plugin oficial; ela não faz parte da instalação principal.
Registro npm
openclaw plugins install @openclaw/twitchCheckout local
openclaw plugins install ./path/to/local/twitch-pluginplugins install registra e ativa o plugin. Selecionar Twitch durante openclaw onboard ou openclaw channels add instala o plugin sob demanda. Use apenas o nome do pacote para acompanhar a versão atual; fixe uma versão exata somente para instalações reproduzíveis. Requer o OpenClaw 2026.4.10 ou mais recente.
Detalhes: Plugins
Configuração rápida
Instale o plugin
Consulte Instalação acima.
Crie uma conta de bot da Twitch
Crie uma conta dedicada da Twitch para o bot (ou use uma conta existente).
Gere as credenciais
Use o Twitch Token Generator:
- Selecione Bot Token
- Verifique se os escopos
chat:readechat:writeestão selecionados - Copie o Client ID e o Access Token
Encontre seu ID de usuário da Twitch
Use https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/ para converter um nome de usuário em um ID de usuário da Twitch.
Configure o token
- Variável de ambiente:
OPENCLAW_TWITCH_ACCESS_TOKEN=...(somente para a conta padrão) - Ou configuração:
channels.twitch.accessToken
Se ambos estiverem definidos, a configuração terá precedência (a variável de ambiente será apenas uma alternativa para a conta padrão).
Inicie o Gateway
openclaw gateway runConfiguração mínima:
{ channels: { twitch: { enabled: true, username: "openclaw", // Conta da Twitch do bot (faz a autenticação) accessToken: "oauth:abc123...", // Token de acesso OAuth (ou use a variável de ambiente OPENCLAW_TWITCH_ACCESS_TOKEN) clientId: "xyz789...", // ID do cliente fornecido pelo Token Generator channel: "yourchannel", // Chat de qual canal da Twitch participar (obrigatório) allowFrom: ["123456789"], // (recomendado) Somente seu ID de usuário da Twitch }, },}O que é
- Um canal da Twitch gerenciado pelo Gateway.
- Roteamento determinístico: as respostas sempre retornam ao canal da Twitch de onde veio a mensagem.
- Cada canal do qual o bot participa é associado a uma chave de sessão de grupo isolada:
agent:<agentId>:twitch:group:<channel>. usernameé a conta do bot (que faz a autenticação), enquantochannelé a sala de chat da qual ele participará. Cada entrada de conta participa de exatamente um canal.- Os tokens funcionam com ou sem o prefixo
oauth:; o OpenClaw normaliza os dois formatos (o assistente de configuração espera o formato comoauth:).
Renovação de token (opcional)
Os tokens do Twitch Token Generator não podem ser renovados pelo OpenClaw — gere outro quando o token expirar (eles duram algumas horas; não é necessário registrar um aplicativo).
Para a renovação automática, crie seu próprio aplicativo no Twitch Developer Console e adicione:
{ channels: { twitch: { clientSecret: "your_client_secret", refreshToken: "your_refresh_token", }, },}Com ambos definidos, o plugin usa um provedor de autenticação com renovação que renova os tokens antes da expiração e registra cada renovação. Sem refreshToken, ele registra token refresh disabled (no refresh token); sem clientSecret, ele usa como alternativa um token estático (sem renovação).
Suporte a várias contas
Use channels.twitch.accounts com credenciais específicas para cada conta. Consulte Configuração para conhecer o padrão compartilhado.
Exemplo (uma conta de bot em dois canais):
{ channels: { twitch: { accounts: { channel1: { username: "openclaw", accessToken: "oauth:abc123...", clientId: "xyz789...", channel: "yourchannel", }, channel2: { username: "openclaw", accessToken: "oauth:def456...", clientId: "uvw012...", channel: "secondchannel", }, }, }, },}Controle de acesso
allowFrom é uma lista rígida de IDs de usuário da Twitch permitidos. Quando ela está definida, allowedRoles é ignorado; deixe allowFrom sem definição para usar o acesso baseado em funções.
Funções disponíveis: "moderator", "owner", "vip", "subscriber", "all".
Lista de IDs de usuário permitidos (mais segura)
{ channels: { twitch: { accounts: { default: { allowFrom: ["123456789", "987654321"], }, }, }, },}Baseado em funções
{ channels: { twitch: { accounts: { default: { allowedRoles: ["moderator", "vip"], }, }, }, },}Desativar a exigência de @menção
Por padrão, requireMention é true. Para responder a todas as mensagens permitidas:
{ channels: { twitch: { accounts: { default: { requireMention: false, }, }, }, },}Solução de problemas
Primeiro, execute os comandos de diagnóstico:
openclaw doctoropenclaw channels status --probeO bot não responde às mensagens
- Verifique o controle de acesso: certifique-se de que seu ID de usuário esteja em
allowFromou remova temporariamenteallowFrome definaallowedRoles: ["all"]para testar. - Verifique a exigência de menção: com
requireMention: true(padrão), as mensagens devem usar @menção ao nome de usuário do bot. - Verifique se o bot está no canal: o bot participa somente do canal indicado em
channel.
Problemas com o token
Erros de autenticação ou "Failed to connect":
- Verifique se
accessTokencontém o valor do token de acesso OAuth (o prefixooauth:é opcional) - Verifique se o token tem os escopos
chat:readechat:write - Se estiver usando renovação de token, verifique se
clientSecreterefreshTokenestão definidos
A renovação do token não funciona
Verifique os registros em busca de eventos de renovação:
Using env token source for mybotAccess token refreshed for user 123456 (expires in 14400s)Se você vir token refresh disabled (no refresh token):
- Verifique se
clientSecretfoi fornecido - Verifique se
refreshTokenfoi fornecido
Configuração
Configuração da conta
usernamestringrequiredNome de usuário do bot (a conta que faz a autenticação).
accessTokenstringrequiredToken de acesso OAuth com chat:read e chat:write (configuração ou variável de ambiente para a conta padrão).
clientIdstringrequiredID do cliente da Twitch (do Token Generator ou do seu aplicativo). Opcional no esquema, mas obrigatório para estabelecer conexão.
channelstringrequiredCanal do qual participar.
enabledbooleandefault: trueAtiva esta conta.
clientSecretstringOpcional: usado para a renovação automática do token.
refreshTokenstringOpcional: usado para a renovação automática do token.
expiresInnumberExpiração do token em segundos (acompanhamento da renovação).
obtainmentTimestampnumberCarimbo de data e hora em que o token foi obtido (acompanhamento da renovação).
allowFromstring[]Lista de IDs de usuário permitidos. Quando definida, as funções são ignoradas.
allowedRoles'Array<"moderator"requireMentionbooleandefault: trueExige @menção para acionar o bot.
responsePrefixstringSubstituição do prefixo das respostas enviadas por esta conta.
Opções do provedor
channels.twitch.enabled- Ativa/desativa a inicialização do canalchannels.twitch.username/accessToken/clientId/channel- Configuração simplificada de uma única conta (contadefaultimplícita; tem precedência sobreaccounts.default)channels.twitch.accounts.<accountName>- Configuração de várias contas (todos os campos de conta acima)channels.twitch.defaultAccount- Nome da conta que será a padrãochannels.twitch.markdown.tables- Modo de renderização de tabelas Markdown (off|bullets|code|block)
Exemplo 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"], }, }, }, },}Ações da ferramenta
O agente pode enviar mensagens da Twitch por meio da ação send da ferramenta de mensagens:
{ channel: "twitch", action: "send", to: "#mychannel", message: "Hello Twitch!",}to é opcional e usa como padrão o channel configurado da conta.
Segurança e operações
- Trate os tokens como senhas — nunca faça commit de tokens no Git.
- Use a renovação automática de tokens para bots executados por longos períodos.
- Use listas de IDs de usuário permitidos em vez de nomes de usuário para controle de acesso.
- Monitore os registros para acompanhar eventos de renovação de token e o status da conexão.
- Restrinja os escopos dos tokens ao mínimo — solicite somente
chat:readechat:write. - Se estiver com dificuldades: reinicie o Gateway depois de confirmar que nenhum outro processo é proprietário da sessão.
Limites
- 500 caracteres por mensagem; respostas mais longas são divididas nos limites entre palavras.
- O Markdown é removido antes do envio (o chat da Twitch usa texto simples; quebras de linha tornam-se espaços).
- O OpenClaw não adiciona limitação de taxa própria; o cliente de chat Twurple gerencia os limites de taxa da Twitch.
Conteúdo relacionado
- Roteamento de canais — roteamento de sessões para mensagens
- Visão geral dos canais — todos os canais compatíveis
- Grupos — comportamento de chats em grupo e exigência de menção
- Pareamento — autenticação por mensagem direta e fluxo de pareamento
- Segurança — modelo de acesso e proteção