Passer au contenu principal

Documentation Index

Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt

Use this file to discover all available pages before exploring further.

Prise en charge du chat Twitch via une connexion IRC. OpenClaw se connecte en tant qu’utilisateur Twitch (compte de bot) pour recevoir et envoyer des messages dans les chaînes.

Plugin intégré

Twitch est fourni comme Plugin intégré dans les versions actuelles d’OpenClaw ; les builds empaquetés normaux ne nécessitent donc pas d’installation séparée.
Si vous utilisez un build plus ancien ou une installation personnalisée qui exclut Twitch, installez directement le paquet npm :
openclaw plugins install @openclaw/twitch
Utilisez le paquet nu pour suivre l’étiquette de version officielle actuelle. N’épinglez une version exacte que lorsque vous avez besoin d’une installation reproductible. Détails : Plugins

Configuration rapide (débutant)

1

Ensure plugin is available

Les versions empaquetées actuelles d’OpenClaw l’intègrent déjà. Les installations plus anciennes/personnalisées peuvent l’ajouter manuellement avec les commandes ci-dessus.
2

Create a Twitch bot account

Créez un compte Twitch dédié pour le bot (ou utilisez un compte existant).
3

Generate credentials

Utilisez Twitch Token Generator :
  • Sélectionnez Bot Token
  • Vérifiez que les portées chat:read et chat:write sont sélectionnées
  • Copiez le Client ID et l’Access Token
4

Find your Twitch user ID

Utilisez https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/ pour convertir un nom d’utilisateur en ID utilisateur Twitch.
5

Configure the token

  • Env : OPENCLAW_TWITCH_ACCESS_TOKEN=... (compte par défaut uniquement)
  • Ou config : channels.twitch.accessToken
Si les deux sont définis, la configuration est prioritaire (le repli sur l’env concerne uniquement le compte par défaut).
6

Start the gateway

Démarrez le Gateway avec la chaîne configurée.
Ajoutez un contrôle d’accès (allowFrom ou allowedRoles) pour empêcher les utilisateurs non autorisés de déclencher le bot. requireMention vaut true par défaut.
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

  • Une chaîne Twitch détenue par le Gateway.
  • Routage déterministe : les réponses retournent toujours vers Twitch.
  • Chaque compte correspond à une clé de session isolée agent:<agentId>:twitch:<accountName>.
  • username est le compte du bot (celui qui s’authentifie), channel est le salon de chat à rejoindre.

Configuration (détaillée)

Générer les identifiants

Utilisez Twitch Token Generator :
  • Sélectionnez Bot Token
  • Vérifiez que les portées chat:read et chat:write sont sélectionnées
  • Copiez le Client ID et l’Access Token
Aucun enregistrement manuel d’application n’est nécessaire. Les jetons expirent après plusieurs heures.

Configurer le bot

OPENCLAW_TWITCH_ACCESS_TOKEN=oauth:abc123...
Si l’env et la configuration sont tous deux définis, la configuration est prioritaire.

Contrôle d’accès (recommandé)

{
  channels: {
    twitch: {
      allowFrom: ["123456789"], // (recommended) Your Twitch user ID only
    },
  },
}
Préférez allowFrom pour une liste d’autorisation stricte. Utilisez plutôt allowedRoles si vous souhaitez un accès basé sur les rôles. Rôles disponibles : "moderator", "owner", "vip", "subscriber", "all".
Pourquoi des ID utilisateur ? Les noms d’utilisateur peuvent changer, ce qui permet l’usurpation d’identité. Les ID utilisateur sont permanents.Trouvez votre ID utilisateur Twitch : https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/ (Convertir votre nom d’utilisateur Twitch en ID)

Actualisation du jeton (facultatif)

Les jetons de Twitch Token Generator ne peuvent pas être actualisés automatiquement ; régénérez-les lorsqu’ils expirent. Pour l’actualisation automatique du jeton, créez votre propre application Twitch dans la Twitch Developer Console et ajoutez ceci à la configuration :
{
  channels: {
    twitch: {
      clientSecret: "your_client_secret",
      refreshToken: "your_refresh_token",
    },
  },
}
Le bot actualise automatiquement les jetons avant expiration et journalise les événements d’actualisation.

Prise en charge multi-comptes

Utilisez channels.twitch.accounts avec des jetons propres à chaque compte. Consultez Configuration pour le modèle partagé. Exemple (un compte de bot dans deux chaînes) :
{
  channels: {
    twitch: {
      accounts: {
        channel1: {
          username: "openclaw",
          accessToken: "oauth:abc123...",
          clientId: "xyz789...",
          channel: "vevisk",
        },
        channel2: {
          username: "openclaw",
          accessToken: "oauth:def456...",
          clientId: "uvw012...",
          channel: "secondchannel",
        },
      },
    },
  },
}
Chaque compte a besoin de son propre jeton (un jeton par chaîne).

Contrôle d’accès

{
  channels: {
    twitch: {
      accounts: {
        default: {
          allowFrom: ["123456789", "987654321"],
        },
      },
    },
  },
}

Dépannage

Commencez par exécuter les commandes de diagnostic :
openclaw doctor
openclaw channels status --probe
  • Vérifiez le contrôle d’accès : Assurez-vous que votre ID utilisateur figure dans allowFrom, ou supprimez temporairement allowFrom et définissez allowedRoles: ["all"] pour tester.
  • Vérifiez que le bot est dans la chaîne : Le bot doit rejoindre la chaîne spécifiée dans channel.
« Échec de la connexion » ou erreurs d’authentification :
  • Vérifiez que accessToken est la valeur du jeton d’accès OAuth (elle commence généralement par le préfixe oauth:)
  • Vérifiez que le jeton possède les portées chat:read et chat:write
  • Si vous utilisez l’actualisation du jeton, vérifiez que clientSecret et refreshToken sont définis
Consultez les journaux pour les événements d’actualisation :
Using env token source for mybot
Access token refreshed for user 123456 (expires in 14400s)
Si vous voyez « token refresh disabled (no refresh token) » :
  • Assurez-vous que clientSecret est fourni
  • Assurez-vous que refreshToken est fourni

Configuration

Configuration du compte

username
string
Nom d’utilisateur du bot.
accessToken
string
Jeton d’accès OAuth avec chat:read et chat:write.
clientId
string
Twitch Client ID (depuis Token Generator ou votre application).
channel
string
requis
Chaîne à rejoindre.
enabled
boolean
défaut:"true"
Activer ce compte.
clientSecret
string
Facultatif : pour l’actualisation automatique du jeton.
refreshToken
string
Facultatif : pour l’actualisation automatique du jeton.
expiresIn
number
Expiration du jeton en secondes.
obtainmentTimestamp
number
Horodatage d’obtention du jeton.
allowFrom
string[]
Liste d’autorisation des ID utilisateur.
allowedRoles
Array<"moderator" | "owner" | "vip" | "subscriber" | "all">
Contrôle d’accès basé sur les rôles.
requireMention
boolean
défaut:"true"
Exiger une @mention.

Options du fournisseur

  • channels.twitch.enabled - Activer/désactiver le démarrage de la chaîne
  • channels.twitch.username - Nom d’utilisateur du bot (configuration simplifiée à compte unique)
  • channels.twitch.accessToken - Jeton d’accès OAuth (configuration simplifiée à compte unique)
  • channels.twitch.clientId - Twitch Client ID (configuration simplifiée à compte unique)
  • channels.twitch.channel - Chaîne à rejoindre (configuration simplifiée à compte unique)
  • channels.twitch.accounts.<accountName> - Configuration multi-comptes (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 d’outil

L’agent peut appeler twitch avec l’action :
  • send - Envoyer un message à une chaîne
Exemple :
{
  action: "twitch",
  params: {
    message: "Hello Twitch!",
    to: "#mychannel",
  },
}

Sécurité et opérations

  • Traitez les jetons comme des mots de passe — Ne validez jamais de jetons dans git.
  • Utilisez l’actualisation automatique des jetons pour les bots de longue durée.
  • Utilisez des listes d’autorisation d’ID utilisateur plutôt que des noms d’utilisateur pour le contrôle d’accès.
  • Surveillez les journaux pour les événements d’actualisation des jetons et l’état de connexion.
  • Limitez les portées des jetons au minimum — Ne demandez que chat:read et chat:write.
  • Si vous êtes bloqué : Redémarrez le Gateway après avoir confirmé qu’aucun autre processus ne possède la session.

Limites

  • 500 caractères par message (découpage automatique aux limites de mots).
  • Le Markdown est supprimé avant le découpage.
  • Aucune limitation de débit (utilise les limites de débit intégrées de Twitch).

Connexe