Canal Discord OpenClaw
Connectez OpenClaw à Discord via l'API Discord.js Bot Gateway. Créez un bot Discord dans le Developer Portal, activez les intents requis, invitez le bot sur votre serveur, et votre assistant IA est opérationnel sur Discord. Prend en charge les messages directs, les conversations dans les salons de serveur, les réactions, les fils de discussion, les commandes slash et les médias enrichis. L'un des canaux les plus faciles à configurer.
Discord Fonctionnalités prises en charge
Messages texte
Pris en charge
Médias et fichiers
Pris en charge
Réactions
Pris en charge
Fils de discussion
Pris en charge
Messages vocaux
Non pris en charge
Discussion de groupe
Pris en charge
Discord Prérequis
- Un compte Discord avec accès au Discord Developer Portal
- Un Bot Token depuis le Discord Developer Portal (Applications → New Application → Bot)
- Le Message Content Intent activé dans les Privileged Gateway Intents
- OpenClaw Gateway en cours d'exécution et configuré
Discord Configuration rapide
Créer un bot Discord et activer les intents
Rendez-vous sur le Discord Developer Portal (discord.com/developers), créez une New Application, ajoutez un utilisateur Bot, et copiez le Bot Token. Sous Privileged Gateway Intents, activez 'Message Content Intent' (requis) et 'Server Members Intent' (recommandé pour la recherche de membres).
Ajouter la configuration du canal Discord
Ajoutez la configuration du canal Discord dans ~/.openclaw/openclaw.json. Définissez le token (ou utilisez la variable d'environnement DISCORD_BOT_TOKEN) et configurez dm.policy pour contrôler qui peut envoyer des messages directs au bot.
Inviter le bot sur le serveur et tester
Dans le Developer Portal, accédez à OAuth2 → URL Generator. Sélectionnez les scopes 'bot' et 'applications.commands'. Choisissez les permissions : View Channels, Send Messages, Read Message History, Embed Links, Attach Files, Add Reactions. Ouvrez l'URL générée pour inviter le bot sur votre serveur. Envoyez '@NomDuBot bonjour' pour tester.
Discord Exemple de configuration
{
"channels": {
"discord": {
"enabled": true,
"token": "YOUR_DISCORD_BOT_TOKEN",
"dm": {
"policy": "pairing"
}
}
}
}Discord Documentation Détaillée
Vue d'ensemble de l'architecture
Créer votre bot
Politiques de DM
{
"channels": {
"discord": {
"dm": {
"policy": "pairing",
"allowFrom": ["123456789012345678"]
}
}
}
}Configuration des salons de serveur
{
"channels": {
"discord": {
"groupPolicy": "open",
"guilds": {
"YOUR_GUILD_ID": {
"slug": "my-server",
"requireMention": true,
"channels": {
"CHANNEL_ID": {
"allow": true,
"requireMention": false,
"systemPrompt": "You are a helpful assistant in this channel."
}
}
}
}
}
}
}Réactions et accusés de réception
{
"channels": {
"discord": {
"messages": {
"ackReaction": "👀",
"removeAckAfterReply": true
},
"guilds": {
"GUILD_ID": {
"reactionNotifications": "own"
}
}
}
}
}Formatage et découpage des messages
{
"channels": {
"discord": {
"textChunkLimit": 2000,
"chunkMode": "newline",
"historyLimit": 20
}
}
}Commandes slash et actions d'outils
Médias et gestion des fichiers
Intégration PluralKit
{
"channels": {
"discord": {
"pluralkit": {
"enabled": true,
"token": "pk_live_..."
}
}
}
}Approbations d'exécution (interface boutons)
{
"channels": {
"discord": {
"execApprovals": {
"enabled": true,
"approvers": ["USER_ID_1", "USER_ID_2"],
"agentFilter": [],
"sessionFilter": []
}
}
}
}Portes d'action
Résolution des listes blanches et correspondance
Discord Référence de Configuration
| Key | Type | Default | Description |
|---|---|---|---|
| enabled | boolean | true | Activer ou désactiver le canal Discord |
| token | string | "" | Bot Token Discord. Peut aussi utiliser la variable d'environnement DISCORD_BOT_TOKEN |
| dm.policy | string | "pairing" | Contrôle qui peut envoyer des DM au bot. Options : pairing, allowlist, open, disabled |
| dm.allowFrom | string[] | [] | Identifiants Discord des utilisateurs autorisés à envoyer des DM au bot (quand dm.policy est allowlist) |
| groupPolicy | string | "allowlist" | Politique de gestion des salons de serveur. Options : open, disabled, allowlist |
| guilds | object | {} | Configuration par serveur indexée par guild ID. Inclut slug, users, channels, requireMention, etc. |
| requireMention | boolean | true | Si le bot nécessite une @mention pour répondre dans les salons de serveur |
| messages.ackReaction | string | "" | Emoji de réaction comme accusé de réception pendant le traitement du message |
| messages.removeAckAfterReply | boolean | false | Supprimer la réaction d'accusé de réception après la réponse de l'IA |
| textChunkLimit | number | 2000 | Nombre maximum de caractères par segment de message (la limite Discord est 2000) |
| chunkMode | string | "length" | Comment découper les longues réponses. Options : length (limite stricte de caractères), newline (limites de paragraphes) |
| historyLimit | number | 20 | Nombre de messages récents du serveur à inclure comme contexte pour l'IA |
| mediaMaxMb | number | 8 | Taille maximale des fichiers multimédias en mégaoctets pour les uploads |
| replyToMode | string | "off" | Mode de threading des réponses. Options : off, first (premier segment uniquement en fil), all (chaque segment en fil) |
| configWrites | boolean | true | Autoriser les mises à jour de configuration initiées par Discord via les commandes /config set|unset |
| allowBots | boolean | false | Traiter les messages d'autres bots. À utiliser avec prudence pour éviter les boucles |
| retry.attempts | number | 3 | Nombre de tentatives de réessai pour les appels échoués à l'API Discord |
| retry.minDelayMs | number | 500 | Délai minimum en millisecondes entre les tentatives de réessai |
| retry.maxDelayMs | number | 30000 | Délai maximum en millisecondes entre les tentatives de réessai |
| retry.jitter | number | 0.1 | Facteur de gigue appliqué aux délais de réessai pour la randomisation |
| dm.enabled | boolean | true | Accepter ou non les messages directs |
| dm.groupEnabled | boolean | false | Activer la gestion des DM de groupe |
| dm.groupChannels | string[] | [] | Liste blanche des canaux de DM de groupe |
| dmHistoryLimit | number | - | Limite d'historique DM par utilisateur (surcharge) |
| maxLinesPerMessage | number | 17 | Limite souple du nombre de lignes par segment de message |
| commands.native | string | boolean | "auto" | Enregistrement des commandes slash natives. Options : auto (activé pour Discord), true, false |
| commands.text | object | {} | Configuration des commandes texte nécessitant des messages /... autonomes |
| commands.useAccessGroups | boolean | false | Appliquer les vérifications de groupes d'accès pour les commandes |
| actions.* | boolean | varies | Portes d'action des outils. La plupart sont activées par défaut ; roles, moderation et presence sont désactivées par défaut |
| pluralkit.enabled | boolean | false | Activer la résolution des messages proxy PluralKit |
Activer ou désactiver le canal Discord
Bot Token Discord. Peut aussi utiliser la variable d'environnement DISCORD_BOT_TOKEN
Contrôle qui peut envoyer des DM au bot. Options : pairing, allowlist, open, disabled
Identifiants Discord des utilisateurs autorisés à envoyer des DM au bot (quand dm.policy est allowlist)
Politique de gestion des salons de serveur. Options : open, disabled, allowlist
Configuration par serveur indexée par guild ID. Inclut slug, users, channels, requireMention, etc.
Si le bot nécessite une @mention pour répondre dans les salons de serveur
Emoji de réaction comme accusé de réception pendant le traitement du message
Supprimer la réaction d'accusé de réception après la réponse de l'IA
Nombre maximum de caractères par segment de message (la limite Discord est 2000)
Comment découper les longues réponses. Options : length (limite stricte de caractères), newline (limites de paragraphes)
Nombre de messages récents du serveur à inclure comme contexte pour l'IA
Taille maximale des fichiers multimédias en mégaoctets pour les uploads
Mode de threading des réponses. Options : off, first (premier segment uniquement en fil), all (chaque segment en fil)
Autoriser les mises à jour de configuration initiées par Discord via les commandes /config set|unset
Traiter les messages d'autres bots. À utiliser avec prudence pour éviter les boucles
Nombre de tentatives de réessai pour les appels échoués à l'API Discord
Délai minimum en millisecondes entre les tentatives de réessai
Délai maximum en millisecondes entre les tentatives de réessai
Facteur de gigue appliqué aux délais de réessai pour la randomisation
Accepter ou non les messages directs
Activer la gestion des DM de groupe
Liste blanche des canaux de DM de groupe
Limite d'historique DM par utilisateur (surcharge)
Limite souple du nombre de lignes par segment de message
Enregistrement des commandes slash natives. Options : auto (activé pour Discord), true, false
Configuration des commandes texte nécessitant des messages /... autonomes
Appliquer les vérifications de groupes d'accès pour les commandes
Portes d'action des outils. La plupart sont activées par défaut ; roles, moderation et presence sont désactivées par défaut
Activer la résolution des messages proxy PluralKit
Discord Questions Fréquentes
Discord Dépannage
Le Message Content Intent n'est pas activé, le bot n'a pas les permissions du salon, ou les exigences de mention sont mal configurées.
Le traitement des DM est peut-être désactivé dans la configuration, ou l'approbation de couplage est en attente.
Le scope 'applications.commands' n'a pas été inclus dans l'URL d'invitation OAuth2 du bot.
Les limites de débit de l'API Discord ont été atteintes, ou la connexion au gateway est dans un mauvais état.
groupPolicy est défini par défaut sur 'allowlist', donc le bot ne répond que dans les serveurs/salons explicitement configurés.
execApprovals n'est pas activé, ou l'ID Discord de l'utilisateur n'est pas listé dans le tableau approvers.