Developer and self-hosted
Twitch
Prise en charge du chat Twitch via l’interface de chat (IRC) de Twitch, au moyen du client Twurple. OpenClaw se connecte avec un compte de bot Twitch, rejoint un canal par compte configuré et répond dans ce canal.
Installation
Twitch est distribué en tant que Plugin officiel ; il ne fait pas partie de l’installation principale.
Registre npm
openclaw plugins install @openclaw/twitchCopie de travail locale
openclaw plugins install ./path/to/local/twitch-pluginplugins install enregistre et active le Plugin. Sélectionner Twitch pendant openclaw onboard ou openclaw channels add l’installe à la demande. Utilisez le nom de paquet seul pour suivre la version actuelle ; épinglez une version exacte uniquement pour obtenir des installations reproductibles. Nécessite OpenClaw 2026.4.10 ou une version ultérieure.
Détails : Plugins
Configuration rapide
Installer le Plugin
Consultez la section Installation ci-dessus.
Créer un compte de bot Twitch
Créez un compte Twitch dédié au bot (ou utilisez un compte existant).
Générer les identifiants
Utilisez Twitch Token Generator :
- Sélectionnez Bot Token
- Vérifiez que les autorisations
chat:readetchat:writesont sélectionnées - Copiez le Client ID et l’Access Token
Trouver votre identifiant utilisateur Twitch
Utilisez https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/ pour convertir un nom d’utilisateur en identifiant utilisateur Twitch.
Configurer le jeton
- Variable d’environnement :
OPENCLAW_TWITCH_ACCESS_TOKEN=...(compte par défaut uniquement) - Ou configuration :
channels.twitch.accessToken
Si les deux sont définis, la configuration est prioritaire (la variable d’environnement sert uniquement de solution de repli pour le compte par défaut).
Démarrer le Gateway
openclaw gateway runConfiguration minimale :
{ channels: { twitch: { enabled: true, username: "openclaw", // Compte Twitch du bot (utilisé pour l’authentification) accessToken: "oauth:abc123...", // Jeton d’accès OAuth (ou utilisez la variable d’environnement OPENCLAW_TWITCH_ACCESS_TOKEN) clientId: "xyz789...", // Identifiant client provenant du générateur de jetons channel: "yourchannel", // Canal Twitch dont rejoindre le chat (obligatoire) allowFrom: ["123456789"], // (recommandé) Votre identifiant utilisateur Twitch uniquement }, },}Présentation
- Un canal Twitch détenu par le Gateway.
- Routage déterministe : les réponses sont toujours renvoyées vers le canal Twitch d’où provient le message.
- Chaque canal rejoint correspond à une clé de session de groupe isolée
agent:<agentId>:twitch:group:<channel>. usernamedésigne le compte du bot (celui qui s’authentifie) etchannelle salon de discussion à rejoindre. Chaque entrée de compte rejoint exactement un canal.- Les jetons fonctionnent avec ou sans le préfixe
oauth:; OpenClaw normalise les deux formes (l’assistant de configuration attend la formeoauth:).
Actualisation du jeton (facultatif)
Les jetons provenant de Twitch Token Generator ne peuvent pas être actualisés par OpenClaw : régénérez-les lorsqu’ils expirent (ils durent quelques heures ; aucun enregistrement d’application n’est nécessaire).
Pour une actualisation automatique, créez votre propre application dans la console de développement Twitch et ajoutez :
{ channels: { twitch: { clientSecret: "your_client_secret", refreshToken: "your_refresh_token", }, },}Lorsque les deux sont définis, le Plugin utilise un fournisseur d’authentification avec actualisation qui renouvelle les jetons avant leur expiration et journalise chaque actualisation. Sans refreshToken, il journalise token refresh disabled (no refresh token) ; sans clientSecret, il utilise à la place un jeton statique (non actualisé).
Prise en charge de plusieurs comptes
Utilisez channels.twitch.accounts avec des identifiants propres à chaque compte. Consultez Configuration pour connaître le modèle commun.
Exemple (un compte de bot dans deux canaux) :
{ channels: { twitch: { accounts: { channel1: { username: "openclaw", accessToken: "oauth:abc123...", clientId: "xyz789...", channel: "yourchannel", }, channel2: { username: "openclaw", accessToken: "oauth:def456...", clientId: "uvw012...", channel: "secondchannel", }, }, }, },}Contrôle d’accès
allowFrom est une liste d’autorisation stricte d’identifiants utilisateur Twitch. Lorsqu’elle est définie, allowedRoles est ignoré ; ne définissez pas allowFrom pour utiliser à la place l’accès fondé sur les rôles.
Rôles disponibles : "moderator", "owner", "vip", "subscriber", "all".
Liste d’autorisation d’identifiants utilisateur (la plus sûre)
{ channels: { twitch: { accounts: { default: { allowFrom: ["123456789", "987654321"], }, }, }, },}Fondé sur les rôles
{ channels: { twitch: { accounts: { default: { allowedRoles: ["moderator", "vip"], }, }, }, },}Désactiver l’exigence de mention @
Par défaut, requireMention vaut true. Pour répondre à tous les messages autorisés :
{ channels: { twitch: { accounts: { default: { requireMention: false, }, }, }, },}Dépannage
Commencez par exécuter les commandes de diagnostic :
openclaw doctoropenclaw channels status --probeLe bot ne répond pas aux messages
- Vérifiez le contrôle d’accès : assurez-vous que votre identifiant utilisateur figure dans
allowFrom, ou supprimez temporairementallowFromet définissezallowedRoles: ["all"]pour effectuer un test. - Vérifiez le filtre de mention : avec
requireMention: true(valeur par défaut), les messages doivent mentionner le nom d’utilisateur du bot avec @. - Vérifiez que le bot se trouve dans le canal : le bot rejoint uniquement le canal indiqué dans
channel.
Problèmes de jeton
Erreurs Failed to connect ou erreurs d’authentification :
- Vérifiez que
accessTokencontient la valeur du jeton d’accès OAuth (le préfixeoauth:est facultatif) - Vérifiez que le jeton possède les autorisations
chat:readetchat:write - Si vous utilisez l’actualisation du jeton, vérifiez que
clientSecretetrefreshTokensont définis
L’actualisation du jeton ne fonctionne pas
Recherchez les événements d’actualisation dans les journaux :
Using env token source for mybotAccess token refreshed for user 123456 (expires in 14400s)Si vous voyez token refresh disabled (no refresh token) :
- Assurez-vous que
clientSecretest fourni - Assurez-vous que
refreshTokenest fourni
Configuration
Configuration du compte
usernamestringrequiredNom d’utilisateur du bot (le compte utilisé pour l’authentification).
accessTokenstringrequiredJeton d’accès OAuth avec chat:read et chat:write (configuration ou variable d’environnement pour le compte par défaut).
clientIdstringrequiredIdentifiant client Twitch (provenant du générateur de jetons ou de votre application). Facultatif dans le schéma, mais obligatoire pour se connecter.
channelstringrequiredCanal à rejoindre.
enabledbooleandefault: trueActive ce compte.
clientSecretstringFacultatif : permet l’actualisation automatique du jeton.
refreshTokenstringFacultatif : permet l’actualisation automatique du jeton.
expiresInnumberDélai d’expiration du jeton en secondes (suivi de l’actualisation).
obtainmentTimestampnumberHorodatage de l’obtention du jeton (suivi de l’actualisation).
allowFromstring[]Liste d’autorisation d’identifiants utilisateur. Lorsqu’elle est définie, les rôles sont ignorés.
allowedRoles'Array<"moderator"requireMentionbooleandefault: trueExige une mention @ pour déclencher le bot.
responsePrefixstringRemplacement du préfixe des réponses sortantes pour ce compte.
Options du fournisseur
channels.twitch.enabled- Activer ou désactiver le démarrage du canalchannels.twitch.username/accessToken/clientId/channel- Configuration simplifiée pour un seul compte (comptedefaultimplicite ; prioritaire suraccounts.default)channels.twitch.accounts.<accountName>- Configuration de plusieurs comptes (tous les champs de compte ci-dessus)channels.twitch.defaultAccount- Nom du compte utilisé par défautchannels.twitch.markdown.tables- Mode de rendu des tableaux Markdown (off|bullets|code|block)
Exemple complet :
{ 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"], }, }, }, },}Actions de l’outil
L’agent peut envoyer des messages Twitch au moyen de l’action send de l’outil de messagerie :
{ channel: "twitch", action: "send", to: "#mychannel", message: "Hello Twitch!",}to est facultatif et utilise par défaut le channel configuré pour le compte.
Sécurité et exploitation
- Traitez les jetons comme des mots de passe : ne validez jamais de jetons dans git.
- Utilisez l’actualisation automatique des jetons pour les bots fonctionnant sur de longues périodes.
- Utilisez des listes d’autorisation d’identifiants utilisateur plutôt que des noms d’utilisateur pour le contrôle d’accès.
- Surveillez les journaux pour suivre les événements d’actualisation des jetons et l’état de la connexion.
- Limitez autant que possible la portée des jetons : demandez uniquement
chat:readetchat:write. - En cas de blocage : redémarrez le Gateway après avoir vérifié qu’aucun autre processus ne détient la session.
Limites
- 500 caractères par message ; les réponses plus longues sont découpées aux limites des mots.
- Le Markdown est supprimé avant l’envoi (le chat Twitch utilise du texte brut ; les sauts de ligne deviennent des espaces).
- OpenClaw n’ajoute aucune limitation de débit propre ; le client de chat Twurple gère les limites de débit de Twitch.
Pages connexes
- Routage des canaux — routage des sessions pour les messages
- Vue d’ensemble des canaux — tous les canaux pris en charge
- Groupes — comportement des discussions de groupe et filtrage par mention
- Appairage — authentification par message privé et processus d’appairage
- Sécurité — modèle d’accès et renforcement de la sécurité