Twitch
Prise en charge du chat Twitch via une connexion IRC. OpenClaw se connecte en tant qu’utilisateur Twitch (compte bot) pour recevoir et envoyer des messages dans les channels.
Plugin intégré
Section intitulée « Plugin intégré »Si vous utilisez une version ancienne ou une installation personnalisée qui exclut Twitch, installez directement le package npm :
bash openclaw plugins install @openclaw/twitch
bash openclaw plugins install ./path/to/local/twitch-plugin
Utilisez le package nu pour suivre le tag de version officiel actuel. Ne figez une version exacte que si vous avez besoin d’une installation reproductible.
Détails : Plugins
Configuration rapide (débutant)
Section intitulée « Configuration rapide (débutant) »S'assurer que le plugin est disponible
Les versions packagées actuelles de OpenClaw l’incluent déjà. Les installations anciennes/personnalisées peuvent l’ajouter manuellement avec les commandes ci-dessus.
Créer un compte bot Twitch
Créez un compte Twitch dédié pour le bot (ou utilisez un compte existant).
Générer les identifiants
Utilisez Twitch Token Generator :
- Sélectionnez Bot Token
- Vérifiez que les portées
chat:readetchat:writesont sélectionnées - Copiez le Client ID et le Access Token
Trouver votre ID utilisateur Twitch
Utilisez https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/ pour convertir un nom d’utilisateur en ID utilisateur Twitch.
Configurer le jeton
- Env :
OPENCLAW_TWITCH_ACCESS_TOKEN=...(compte par défaut uniquement) - Ou config :
channels.twitch.accessToken
Si les deux sont définis, la configuration prévaut (le repli de l’environnement est pour le compte par défaut uniquement).
- Env :
Démarrer la passerelle
Démarrez la passerelle avec le channel configuré.
Configuration minimale :
{ 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/ }, },}Ce que c’est
Section intitulée « Ce que c’est »- Un channel Twitch appartenant au Gateway.
- Routage déterministe : les réponses vont toujours vers Twitch.
- Chaque compte correspond à une clé de session isolée
agent:<agentId>:twitch:<accountName>. usernameest le compte du bot (celui qui s’authentifie),channelest le salon de chat à rejoindre.
Configuration (détaillée)
Section intitulée « Configuration (détaillée) »Générer les identifiants
Section intitulée « Générer les identifiants »Utilisez le Générateur de jetons Twitch :
- Sélectionnez Jeton de bot (Bot Token)
- Vérifiez que les portées
chat:readetchat:writesont sélectionnées - Copiez l’ID Client (Client ID) et le Jeton d’accès (Access Token)
Configurer le bot
Section intitulée « Configurer le bot »OPENCLAW_TWITCH_ACCESS_TOKEN=oauth:abc123...{ channels: { twitch: { enabled: true, username: "openclaw", accessToken: "oauth:abc123...", clientId: "xyz789...", channel: "vevisk", }, },}Si l’environnement et la configuration sont définis, la configuration prévaut.
Contrôle d’accès (recommandé)
Section intitulée « Contrôle d’accès (recommandé) »{ channels: { twitch: { allowFrom: ["123456789"], // (recommended) Your Twitch user ID only }, },}Privilégiez allowFrom pour une liste d’autorisation stricte. Utilisez allowedRoles à la place si vous souhaitez un contrôle basé sur les rôles.
Rôles disponibles : "moderator", "owner", "vip", "subscriber", "all".
Actualisation du jeton (optionnelle)
Section intitulée « Actualisation du jeton (optionnelle) »Les jetons du Générateur de jetons Twitch ne peuvent pas être actualisés automatiquement - régénérez-los lorsqu’ils expirent.
Pour une actualisation automatique des jetons, créez votre propre application Twitch sur la Console développeur Twitch et ajoutez-les à la configuration :
{ channels: { twitch: { clientSecret: "your_client_secret", refreshToken: "your_refresh_token", }, },}Le bot actualise automatiquement les jetons avant leur expiration et enregistre les événements d’actualisation.
Prise en charge multi-compte
Section intitulée « Prise en charge multi-compte »Utilisez channels.twitch.accounts avec des jetons par compte. Consultez la Configuration pour le modèle partagé.
Exemple (un compte bot dans deux salons) :
{ channels: { twitch: { accounts: { channel1: { username: "openclaw", accessToken: "oauth:abc123...", clientId: "xyz789...", channel: "vevisk", }, channel2: { username: "openclaw", accessToken: "oauth:def456...", clientId: "uvw012...", channel: "secondchannel", }, }, }, },}Contrôle d’accès
Section intitulée « Contrôle d’accès »{ channels: { twitch: { accounts: { default: { allowFrom: ["123456789", "987654321"], }, }, }, },}{ channels: { twitch: { accounts: { default: { allowedRoles: ["moderator", "vip"], }, }, }, },}allowFrom est une liste d’autorisation stricte. Lorsqu’elle est définie, seuls ces ID utilisateur sont autorisés. Si vous voulez un accès basé sur les rôles, laissez allowFrom non défini et configurez allowedRoles à la place.
Par défaut, requireMention est true. Pour désactiver et répondre à tous les messages :
{ channels: { twitch: { accounts: { default: { requireMention: false, }, }, }, },}Dépannage
Section intitulée « Dépannage »Tout d’abord, exécutez 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 ID utilisateur est dans
allowFrom, ou supprimez temporairementallowFromet définissezallowedRoles: ["all"]pour tester. - Vérifiez que le bot est dans le channel : Le bot doit rejoindre le channel spécifié dans
channel.
Problèmes de jeton
“Échec de la connexion” ou erreurs d’authentification :
- Vérifiez que
accessTokenest la valeur du jeton d’accès OAuth (commence généralement par le préfixeoauth:) - Vérifiez que le jeton dispose des portées
chat:readetchat:write - Si vous utilisez l’actualisation du jeton, vérifiez que
clientSecretetrefreshTokensont définis
L'actualisation du jeton ne fonctionne pas
Vérifiez les journaux pour les événements d’actualisation :
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
Config du compte
Section intitulée « Config du compte »Options du fournisseur
Section intitulée « Options du fournisseur »channels.twitch.enabled- Activer/désactiver le démarrage du channelchannels.twitch.username- Nom d’utilisateur du bot (configuration simplifiée à compte unique)channels.twitch.accessTokenOAuth - Jeton d’accès OAuth (configuration simplifiée à compte unique)channels.twitch.clientIdTwitch - ID Client Twitch (configuration simplifiée à compte unique)channels.twitch.channel- Channel à rejoindre (configuration simplifiée à compte unique)channels.twitch.accounts.<accountName>- Configuration multi-compte (tous les champs de compte ci-dessus)
Exemple complet :
{ 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"], }, }, }, },}Actions de l’outil
Section intitulée « Actions de l’outil »L’agent peut appeler twitch avec l’action :
send- Envoyer un message à un channel
Exemple :
{ action: "twitch", params: { message: "Hello Twitch!", to: "#mychannel", },}Sécurité et opérations
Section intitulée « Sécurité et opérations »- Traitez les jetons comme des mots de passe — Ne commettez jamais de jetons dans git.
- Utilisez le rafraîchissement automatique des jetons pour les bots de longue durée.
- Utilisez les listes d’autorisation par ID utilisateur au lieu des noms d’utilisateur pour le contrôle d’accès.
- Surveillez les journaux pour les événements de rafraîchissement de jeton et le statut de connexion.
- Limitez l’étendue des jetons au minimum — Ne demandez que
chat:readetchat:write. - En cas de blocage : Redémarrez la passerelle après avoir confirmé qu’aucun autre processus ne possède la session.
- 500 caractères par message (découpés automatiquement aux limites des mots).
- Le Markdown est supprimé avant le découpage.
- Aucune limitation de débit (utilise les limitations de débit intégrées de Twitch).
Connexes
Section intitulée « Connexes »- Routage de channel — routage de session pour les messages
- Aperçu des channels — tous les channels pris en charge
- Groupes — comportement du chat de groupe et filtrage des mentions
- Jumelage — authentification DM et processus de jumelage
- Sécurité — model d’accès et durcissement