Polydesk-logotype
Polydesk.ai — Header

OpenClaw Discord : installer et configurer votre agent IA sur un serveur Discord

OpenClaw se connecte à Discord via l’API Bot officielle pour transformer votre serveur en espace de travail piloté par IA. L’agent répond en DM ou dans des channels spécifiques, exécute des slash commands, gère les réactions, et peut même rejoindre des salons vocaux. L’installation complète prend environ 15 minutes.

OpenClaw Discord : fiche récapitulative
Type
Canal de communication bidirectionnel (DM + channels serveur)
Prérequis
OpenClaw installé, compte Discord, accès admin au serveur cible
Connexion
Via Discord Bot API (token depuis le Developer Portal)
Fonctionnalités
DM, channels, threads, forums, slash commands, réactions, voix, médias
Sécurité
Allowlists par guild/channel/rôle, politique DM configurable (pairing par défaut)
Coût
Gratuit (logiciel). Coûts = tokens LLM par interaction

Pourquoi connecter OpenClaw à Discord

Discord est l’endroit où OpenClaw cesse d’être un assistant personnel pour devenir un outil partagé. Contrairement à WhatsApp ou Telegram, qui sont orientés usage individuel, Discord permet de déployer l’agent dans un contexte communautaire ou d’équipe avec un contrôle granulaire sur qui peut interagir, dans quels channels, et avec quelles capacités.

Les cas d’usage typiques couvrent trois catégories. L’assistant de communauté répond aux questions récurrentes des membres, modère le contenu, et résume les discussions. L’outil d’équipe technique surveille les repos GitHub, résume les PRs, et alerte sur les échecs CI directement dans un channel #devops. Le bot spécialisé sert de base de connaissances interactive pour un podcast, un cours, ou un produit, en s’appuyant sur des documents chargés localement via les skills.

L’intégration Discord offre aussi des fonctionnalités absentes des autres canaux : les slash commands natives, le routage par rôle Discord (un admin parle à un agent Opus, les membres standard à un agent Sonnet), le support des threads et forums, et le canal vocal pour des interactions en mode conversationnel parlé.

Prérequis avant de commencer

Avant de lancer la configuration, vérifiez que vous avez tout ce qu’il faut :

OpenClaw fonctionnel : le Gateway doit être installé et opérationnel, avec au moins un LLM configuré (clé API Anthropic, OpenAI, ou modèle local via Ollama). Si ce n’est pas fait, suivez d’abord le guide d’installation.

Compte Discord : vous aurez besoin d’accéder au Discord Developer Portal pour créer l’application bot.

Serveur Discord : un serveur dont vous êtes administrateur. Si vous n’en avez pas, créez-en un (Créer un serveur → Pour moi et mes amis). Pour les premiers tests, un serveur privé est fortement recommandé.

Mode développeur Discord activé : dans Discord, allez dans Paramètres utilisateur → Avancé → activez le Mode développeur. Cela vous permettra de copier les IDs numériques des serveurs, channels et utilisateurs par clic droit, ce qui est indispensable pour la configuration.

Étape 1 : Créer l’application et le bot Discord

Créer l’application dans le Developer Portal

Rendez-vous sur le Discord Developer Portal et connectez-vous avec votre compte Discord.

Cliquez sur New Application en haut à droite. Donnez un nom à votre application, par exemple « OpenClaw » ou le nom que vous souhaitez donner à votre agent. Ce nom apparaît dans la liste de vos applications, mais pas forcément comme nom d’affichage du bot sur le serveur.

Dans le menu latéral gauche, cliquez sur Bot. C’est ici que vous configurez le bot associé à votre application. Définissez le Username du bot : c’est le nom qui apparaîtra dans votre serveur Discord.

Récupérer le token du bot

Toujours sur la page Bot, cliquez sur Reset Token. Malgré son nom, cette action génère votre premier token si c’est une nouvelle application. Copiez immédiatement le token et conservez-le en lieu sûr.

Le token du bot est un secret critique Traitez ce token comme un mot de passe SSH. Quiconque le possède peut usurper votre bot. Ne le commitez jamais dans un dépôt public, ne le partagez jamais en clair dans un chat. Si vous suspectez une fuite, revenez dans le Developer Portal et faites un Reset Token immédiatement.

Activer les Privileged Gateway Intents

Toujours sur la page Bot, descendez jusqu’à la section Privileged Gateway Intents. Activez les intents suivants :

IntentObligatoire ?Rôle
Message Content IntentOuiPermet au bot de lire le contenu des messages. Sans cet intent, le bot se connecte mais ne réagit à rien.
Server Members IntentRecommandéNécessaire pour les allowlists par rôle, le routage par rôle, et la résolution nom→ID.
Presence IntentNonUniquement si vous voulez recevoir les mises à jour de présence des membres. Pas nécessaire pour définir le statut du bot.
Astuce pour les serveurs actifs Si vous activez requireMention (le bot ne répond que quand on le mentionne avec @), vous réduisez considérablement la quantité de contenu de messages que le bot doit traiter. C’est le comportement recommandé pour les channels publics animés.

Étape 2 : Inviter le bot sur votre serveur

Générer le lien d’invitation

Dans le Developer Portal, allez dans OAuth2 → URL Generator. Sous Scopes, cochez :

bot et applications.commands (ce dernier est nécessaire pour les slash commands).

Une section Bot Permissions apparaît en dessous. Cochez les permissions nécessaires :

PermissionUsage
View ChannelsVoir les channels autorisés
Send MessagesRépondre dans les channels
Send Messages in ThreadsRépondre dans les threads
Read Message HistoryAccéder au contexte des conversations récentes
Embed LinksEnvoyer des messages enrichis (embeds)
Attach FilesEnvoyer des fichiers et images
Add ReactionsRéagir aux messages (accusé de réception, etc.)
Use Slash CommandsEnregistrer et exécuter des slash commands

Évitez de cocher Administrator sauf si vous êtes en phase de debug sur un serveur privé et que vous faites confiance au bot. En production, appliquez le principe du moindre privilège.

Copiez l’URL générée en bas de page, collez-la dans votre navigateur, sélectionnez votre serveur, et cliquez sur Continuer pour autoriser. Le bot apparaît maintenant dans la liste des membres de votre serveur (hors ligne pour l’instant).

Copier les IDs nécessaires

Avec le Mode développeur activé, récupérez trois identifiants :

Clic droit sur l’icône de votre serveur → Copier l’identifiant du serveur (Server ID / Guild ID).

Clic droit sur votre avatar → Copier l’identifiant (User ID).

Clic droit sur le channel cible (ex : #bot) → Copier l’identifiant (Channel ID).

Conservez ces trois IDs avec votre token. Vous en aurez besoin à l’étape suivante.

Étape 3 : Configurer OpenClaw

Enregistrer le token dans OpenClaw

Deux options pour fournir le token à OpenClaw :

Option A : variable d’environnement (recommandée pour la production et la rotation facile) :

export DISCORD_BOT_TOKEN="votre-token-ici"

Option B : via la CLI OpenClaw :

openclaw config set channels.discord.token '"votre-token-ici"' --json
openclaw config set channels.discord.enabled true --json

Option C : directement dans le fichier de config (~/.openclaw/openclaw.json) :

{
  "channels": {
    "discord": {
      "enabled": true,
      "token": "votre-token-ici"
    }
  }
}

Si le token est défini à la fois en variable d’environnement et dans la config, la valeur de la config prend le dessus. La variable d’environnement DISCORD_BOT_TOKEN ne sert que pour le compte par défaut.

Démarrer ou redémarrer le Gateway

# Si le Gateway n'est pas encore démarré
openclaw gateway

# Si le Gateway tourne déjà en arrière-plan
openclaw gateway restart

Votre bot devrait maintenant apparaître en ligne dans votre serveur Discord.

Appairer votre compte Discord

Par défaut, les DMs Discord utilisent le mode pairing : quand un utilisateur inconnu envoie un DM au bot, celui-ci répond avec un code d’appairage temporaire (valide 1 heure).

Pour activer le DM, vérifiez d’abord que les DMs sont autorisés sur votre serveur : clic droit sur le serveur → Paramètres de confidentialité → activez Messages privés.

Envoyez un DM à votre bot dans Discord. Il vous répondra avec un code d’appairage. Approuvez-le de l’une des manières suivantes :

# Via la CLI
openclaw pairing list discord
openclaw pairing approve discord <CODE>

# Ou via un autre canal déjà connecté (ex : Telegram)
# Envoyez à votre agent :
# "Approve this Discord pairing code: <CODE>"

Si Discord est votre premier canal, utilisez la méthode CLI. Une fois le code approuvé, vous pouvez chatter avec l’agent en DM Discord.

Étape 4 : Configurer les allowlists (guilds et channels)

Le concept de groupPolicy

Le paramètre groupPolicy contrôle comment le bot gère les channels de serveur (par opposition aux DMs). Trois options :

PolitiqueComportementRecommandation
allowlistLe bot ne répond que dans les guilds/channels explicitement autorisésRecommandé pour la production
openLe bot répond partout où il est invitéUniquement pour le debug sur serveur privé
disabledLe bot ne répond dans aucun channel de serveur (DMs uniquement)Usage personnel exclusif
Commencez toujours en mode allowlist Si vous définissez uniquement DISCORD_BOT_TOKEN sans configurer de section channels.discord, OpenClaw passe en mode open par défaut. C’est un piège classique : le bot répond à tout le monde, dans tous les channels. Ajoutez toujours une configuration explicite.

Configuration recommandée

Voici une configuration de production type, avec le bot limité à un serveur, un channel, et qui nécessite une mention pour répondre :

{
  "channels": {
    "discord": {
      "enabled": true,
      "groupPolicy": "allowlist",
      "dm": {
        "enabled": true,
        "policy": "pairing",
        "allowFrom": ["VOTRE_USER_ID"]
      },
      "guilds": {
        "VOTRE_GUILD_ID": {
          "slug": "mon-serveur",
          "requireMention": true,
          "users": ["VOTRE_USER_ID"],
          "channels": {
            "CHANNEL_ID_BOT": {
              "allow": true,
              "requireMention": true
            }
          }
        }
      }
    }
  }
}

Les points clés de cette configuration :

requireMention: true signifie que le bot ne répond que quand on le mentionne avec @NomDuBot. C’est le comportement recommandé pour les channels publics ou actifs. Pour un serveur privé où vous voulez que le bot réponde à chaque message, passez-le à false.

users définit une allowlist d’utilisateurs autorisés à interagir. Si la liste est absente, tous les membres du serveur peuvent parler au bot (dans les channels autorisés). Vous pouvez aussi utiliser des rôles Discord via le paramètre roles.

channels restreint le bot à des channels spécifiques. Si un guild a un bloc channels, les channels non listés sont refusés. Si aucun bloc channels n’est défini, tous les channels du guild autorisé sont ouverts.

Configuration multi-channels avec personnalités différentes

Vous pouvez donner au bot un comportement différent selon le channel, grâce au paramètre systemPrompt par channel :

{
  "guilds": {
    "VOTRE_GUILD_ID": {
      "requireMention": true,
      "channels": {
        "CHANNEL_GENERAL": {
          "allow": true,
          "systemPrompt": "Tu es un assistant communautaire amical. Réponds de manière concise et accessible."
        },
        "CHANNEL_DEV": {
          "allow": true,
          "systemPrompt": "Tu es un assistant technique expert. Réponds avec des extraits de code quand c'est pertinent.",
          "skills": ["search", "github"]
        },
        "CHANNEL_MODERATION": {
          "allow": true,
          "systemPrompt": "Tu es un modérateur. Signale les messages inappropriés et aide à résoudre les conflits.",
          "users": ["ID_ADMIN_1", "ID_ADMIN_2"]
        }
      }
    }
  }
}

Le paramètre skills par channel permet de limiter les compétences disponibles. Un channel de Q&A n’a pas besoin d’accès au shell, par exemple.

Routage par rôles : agents différents selon les utilisateurs

Une fonctionnalité avancée et puissante : vous pouvez router les interactions vers des agents différents en fonction des rôles Discord des utilisateurs. Les admins parlent à un agent alimenté par un modèle puissant, les membres standard à un agent plus économique.

{
  "bindings": [
    {
      "agentId": "opus",
      "match": {
        "channel": "discord",
        "guildId": "VOTRE_GUILD_ID",
        "roles": ["ID_ROLE_ADMIN"]
      }
    },
    {
      "agentId": "sonnet",
      "match": {
        "channel": "discord",
        "guildId": "VOTRE_GUILD_ID"
      }
    }
  ]
}

Dans cet exemple, les membres ayant le rôle admin sont routés vers l’agent « opus » (qui utilise Claude Opus 4.6), tandis que tous les autres sont routés vers l’agent « sonnet » (Claude Sonnet 4.6, moins cher). Les bindings par rôle sont évalués avant les bindings par guild seul, donc l’ordre dans la configuration importe.

Slash commands natives

OpenClaw enregistre automatiquement des slash commands dans Discord au démarrage du bot. Ces commandes apparaissent dans l’interface Discord quand un utilisateur tape / et offrent une expérience native :

Les commandes enregistrées reprennent le catalogue de commandes standard d’OpenClaw (/new, /reset, /stop, /status, etc.). Elles respectent les mêmes règles d’allowlist que les messages normaux : un utilisateur non autorisé voit les commandes dans l’UI Discord mais reçoit une réponse « not authorized » s’il tente de les exécuter.

Les slash commands s’exécutent dans des sessions isolées (agent:<agentId>:discord:slash:<userId>), pas dans la session principale. C’est un choix de design pour garantir l’isolation par utilisateur.

Pour désactiver les slash commands :

# Désactiver l'enregistrement des commandes natives
openclaw config set channels.discord.commands.native false --json

# Cette commande supprime aussi les commandes précédemment enregistrées
Limite de 100 commandes Discord impose un maximum de 100 slash commands par application. Si OpenClaw a trop de skills installés, les commandes par skill sont automatiquement supprimées et un avertissement est loggé. Les commandes système restent prioritaires.

Réactions et accusés de réception

OpenClaw supporte le système de réactions Discord pour deux usages :

Accusé de réception : quand un utilisateur envoie un message, le bot peut réagir immédiatement avec un emoji (par défaut 👀) pour signaler qu’il traite la requête. L’emoji est automatiquement retiré après la réponse si removeAckAfterReply est activé.

{
  "channels": {
    "discord": {
      "messages": {
        "ackReaction": "👀",
        "removeAckAfterReply": true
      }
    }
  }
}

Notifications de réactions : vous pouvez configurer le bot pour qu’il soit notifié quand quelqu’un réagit à ses messages (ou à tous les messages du channel). Quatre modes disponibles : off (désactivé), own (réactions aux messages du bot uniquement), all (toutes les réactions), et allowlist (réactions d’utilisateurs spécifiques).

Threads et forums

L’agent maintient le contexte dans les threads Discord, ce qui est essentiel pour des conversations multi-tours. Chaque thread est traité comme un channel séparé avec sa propre clé de session.

Pour les channels de type Forum et Media, OpenClaw peut créer des threads en envoyant un message au channel parent. Le titre du thread utilise la première ligne non vide du message :

# Créer un thread dans un forum Discord
openclaw message send --channel discord --target channel:<forumId> 
  --message "Titre du sujetnContenu du premier message"

Le support des threads est particulièrement utile pour les communautés de support technique : chaque question peut devenir un thread où l’agent maintient le contexte de la conversation sans polluer le channel principal.

Canal vocal

OpenClaw supporte les salons vocaux Discord, permettant une interaction en mode conversationnel parlé. L’agent peut rejoindre un channel vocal, écouter (via transcription speech-to-text), et répondre (via text-to-speech).

{
  "channels": {
    "discord": {
      "voice": {
        "enabled": true,
        "autoJoin": [
          {
            "guildId": "VOTRE_GUILD_ID",
            "channelId": "ID_VOCAL"
          }
        ],
        "tts": {
          "provider": "openai",
          "openai": {
            "voice": "alloy"
          }
        }
      }
    }
  }
}

Contrôlez les sessions vocales avec la commande Discord native /vc join, /vc leave, ou /vc status. Le bot a besoin des permissions Connect et Speak dans le salon vocal cible.

La voix est activée par défaut. Pour la désactiver : channels.discord.voice.enabled: false.

Gestion des messages longs et du contexte

Les réponses longues de l’agent sont automatiquement découpées pour respecter les limites Discord. Les paramètres clés :

ParamètreDéfautRôle
textChunkLimit2000 caractèresTaille max par message envoyé
maxLinesPerMessage17 lignesLimite souple de lignes par message
chunkModelengthlength = découpage dur ; newline = découpage aux frontières de paragraphe
historyLimit20 messagesNombre de messages récents du channel injectés comme contexte

Le mode newline pour chunkMode produit des découpages plus lisibles, en coupant aux retours à la ligne plutôt qu’au milieu d’une phrase. C’est recommandé pour un usage communautaire.

Le paramètre historyLimit est important pour la qualité des réponses dans les channels de serveur : il définit combien de messages récents du channel sont inclus dans le contexte envoyé au LLM quand quelqu’un mentionne le bot. Avec 20 messages, l’agent peut suivre la conversation en cours. Mettez-le à 0 pour économiser des tokens sur les channels très actifs.

Streaming des réponses

OpenClaw peut afficher les réponses en streaming dans Discord, en envoyant un message temporaire qui se met à jour au fur et à mesure que le texte arrive. Quatre modes sont disponibles :

ModeComportement
off (défaut)Le bot attend la réponse complète avant d’envoyer
partialLe message est mis à jour progressivement pendant la génération
blockMise à jour par blocs (moins de latence d’édition)
progressAlias de partial, pour cohérence cross-canal

Le mode partial offre une meilleure expérience utilisateur car les membres voient la réponse se construire en temps réel, mais il génère plus d’appels à l’API Discord (chaque édition du message est un appel). Sur les serveurs avec beaucoup d’interactions simultanées, gardez off pour éviter les rate limits Discord.

Actions Discord disponibles

L’agent dispose d’un ensemble riche d’actions pour interagir avec Discord, contrôlées par le bloc actions dans la config :

ActionActivée par défautDescription
messagesOuiEnvoyer, éditer, supprimer, épingler des messages
threadsOuiCréer, lister et répondre dans des threads
reactionsOuiRéagir aux messages, lister les réactions
searchOuiRechercher dans l’historique des messages
pinsOuiÉpingler/désépingler des messages
memberInfoOuiConsulter les infos membres
channelInfoOuiConsulter les infos channels
roleInfoOuiConsulter les infos rôles
rolesNonAssigner/retirer des rôles
moderationNonTimeout, kick, ban des membres
presenceNonModifier le statut du bot

Désactivez les actions dont vous n’avez pas besoin pour réduire la surface d’attaque. Les actions roles, moderation, et presence sont désactivées par défaut pour de bonnes raisons de sécurité. N’activez la modération que si vous comprenez les implications : un agent IA qui peut bannir des membres est un risque qu’il faut évaluer soigneusement.

Cas d’usage concrets

Bot de support communautaire

Le cas le plus courant : un bot qui répond aux questions récurrentes dans un channel #aide ou #support. Configurez-le avec requireMention: true pour éviter qu’il ne s’incruste dans toutes les conversations. Chargez les documents de votre projet via les skills pour qu’il puisse répondre avec des informations précises.

Associez le bot à un channel de type Forum pour que chaque question devienne un thread dédié avec le contexte de conversation maintenu.

Assistant DevOps d’équipe

Connectez OpenClaw à un channel #ci-cd ou #devops. Combinez avec des webhooks GitHub pour que l’agent soit notifié des événements de votre repo. L’agent peut alors résumer les PRs, alerter sur les échecs CI, et même lancer des actions correctives via les skills.

Base de connaissances interactive

Chargez vos transcriptions de podcast, votre documentation, ou vos cours dans le workspace d’OpenClaw. Les membres du serveur Discord peuvent ensuite poser des questions et obtenir des réponses basées sur vos contenus. Un utilisateur a ainsi créé un chatbot de podcast qui répond aux questions des auditeurs en s’appuyant sur les transcriptions stockées localement.

Modération assistée par IA

Avec les actions de modération activées (et une configuration soignée), l’agent peut aider à la modération : signaler les messages problématiques, appliquer des timeouts selon des règles définies dans le systemPrompt, et résumer les incidents pour les admins. Approchez ce cas d’usage avec prudence et testez exhaustivement avant de déployer.

Approbations d’exécution (exec approvals)

Pour les commandes sensibles, OpenClaw peut demander une approbation manuelle via Discord avant d’exécuter. Quand execApprovals est activé, l’agent envoie un message interactif avec des boutons Approve/Deny au lieu d’exécuter directement.

{
  "channels": {
    "discord": {
      "execApprovals": {
        "enabled": true,
        "approvers": ["VOTRE_USER_ID"],
        "target": "dm"
      }
    }
  }
}

Seuls les utilisateurs listés dans approvers peuvent interagir avec les boutons. Les trois options sont : Allow once (autoriser cette fois), Always allow (toujours autoriser pour cette action), et Deny (refuser).

Dépannage

Le bot apparaît hors ligne

Vérifiez que le Gateway OpenClaw est en cours d’exécution (openclaw gateway status). Vérifiez que le token est correct : openclaw config get channels.discord.token. Si vous suspectez un token expiré ou compromis, faites un Reset Token dans le Developer Portal et mettez à jour votre config.

Le bot est en ligne mais ne répond pas

Causes les plus fréquentes : le Message Content Intent n’est pas activé dans le Developer Portal ; le channel n’est pas dans l’allowlist ; requireMention est activé et le membre n’a pas mentionné le bot ; l’utilisateur n’est pas dans la liste users du guild ou du channel.

Commandes de diagnostic :

# Vérifier les erreurs liées à Discord
openclaw logs --level error --component channel:discord

# Vérifier les permissions dans un channel spécifique
openclaw channels status --probe

# Tester la connexion
openclaw channels status discord

Le bot entre dans une boucle de réponses

Par défaut, les messages envoyés par d’autres bots sont ignorés. Si vous avez activé allowBots: true, deux bots peuvent se répondre indéfiniment. Préférez allowBots: "mentions" pour n’accepter que les messages de bots qui mentionnent explicitement votre bot.

Erreurs de permissions insuffisantes

Vérifiez que le rôle du bot dans les paramètres de votre serveur Discord a bien les permissions nécessaires dans le channel cible. Un piège fréquent : le bot a les permissions globales mais un override de permissions par channel les bloque.


Questions fréquentes sur OpenClaw Discord

Faut-il savoir coder pour connecter OpenClaw à Discord ?

Non. Vous n’avez pas besoin d’écrire une seule ligne de code. Vous créez l’application dans le Developer Portal Discord (interface web), vous copiez le token, vous le collez dans la config OpenClaw, et le Gateway gère toute la connexion via l’API Bot officielle. L’ensemble de la procédure prend environ 15 minutes.

OpenClaw peut-il fonctionner sur plusieurs serveurs Discord simultanément ?

Oui. Vous invitez le bot sur chaque serveur, puis vous ajoutez les Guild IDs dans l’allowlist de votre config. Chaque serveur (et même chaque channel) peut avoir sa propre configuration : systemPrompt différent, skills restreints, allowlists spécifiques. Les sessions sont isolées par channel, donc les conversations d’un serveur ne contaminent pas celles d’un autre.

Quelle est la différence entre le mode DM et le mode guild channel ?

En DM, l’interaction est privée entre un utilisateur et l’agent. Par défaut, les DMs partagent la session principale de l’agent (agent:main:main), ce qui signifie que l’agent conserve le contexte entre vos DMs. En guild channel, chaque channel a sa propre session isolée. Les deux modes peuvent coexister : vous pouvez configurer des DMs pour l’usage personnel et des guild channels pour la communauté.

Comment éviter que le bot réponde à tous les messages d’un channel actif ?

Activez requireMention: true dans la config du guild ou du channel. Le bot ne répondra qu’aux messages qui le mentionnent avec @NomDuBot. C’est le comportement recommandé pour tout channel avec plus de quelques utilisateurs. Pour un serveur privé avec peu de membres, vous pouvez passer en requireMention: false pour un comportement plus conversationnel.

Combien coûte l’utilisation d’OpenClaw sur Discord ?

Le logiciel est gratuit et l’API Bot Discord est gratuite. Le seul coût est celui des tokens LLM consommés par chaque interaction. Sur un serveur communautaire actif, cela peut monter vite. Optimisez avec le routage par rôle (modèle économique pour les membres standard, modèle puissant pour les admins), le historyLimit réduit sur les channels très actifs, et le requireMention pour limiter les déclenchements involontaires. Pour un serveur de taille moyenne (50-100 interactions/jour), comptez 20 à 80 $/mois selon le modèle LLM choisi.

Polydesk.ai — Footer