Canal Discord de OpenClaw
Conecta OpenClaw a Discord usando la API del Bot Gateway de discord.js. Crea un bot de Discord en el Portal de Desarrolladores, habilita los intents requeridos, invita al bot a tu servidor y tu asistente de IA estará activo en Discord. Soporta mensajes directos, conversaciones en canales de servidor, reacciones, hilos, comandos slash y contenido multimedia. Uno de los canales más fáciles de configurar.
Discord Funciones compatibles
Mensajes de texto
Compatible
Medios y archivos
Compatible
Reacciones
Compatible
Hilos
Compatible
Mensajes de voz
No compatible
Chat grupal
Compatible
Discord Requisitos previos
- Una cuenta de Discord con acceso al Portal de Desarrolladores de Discord
- Un Bot Token del Portal de Desarrolladores de Discord (Applications → New Application → Bot)
- Message Content Intent habilitado en Privileged Gateway Intents
- OpenClaw Gateway en funcionamiento y configurado
Discord Configuración rápida
Crear bot de Discord y habilitar intents
Ve al Portal de Desarrolladores de Discord (discord.com/developers), crea una New Application, añade un usuario Bot y copia el Bot Token. En Privileged Gateway Intents, habilita 'Message Content Intent' (requerido) y 'Server Members Intent' (recomendado para consultas de miembros).
Añadir configuración del canal Discord
Añade la configuración del canal Discord a ~/.openclaw/openclaw.json. Establece el token (o usa la variable de entorno DISCORD_BOT_TOKEN) y configura dm.policy para controlar quién puede enviar mensajes directos al bot.
Invitar bot al servidor y probar
En el Portal de Desarrolladores, ve a OAuth2 → URL Generator. Selecciona los scopes 'bot' y 'applications.commands'. Elige los permisos: View Channels, Send Messages, Read Message History, Embed Links, Attach Files, Add Reactions. Abre la URL generada para invitar al bot a tu servidor. Envía '@NombreDelBot hola' para probar.
Discord Ejemplo de configuración
{
"channels": {
"discord": {
"enabled": true,
"token": "YOUR_DISCORD_BOT_TOKEN",
"dm": {
"policy": "pairing"
}
}
}
}Discord Documentación Detallada
Descripción de la arquitectura
Creación de tu bot
Políticas de DM
{
"channels": {
"discord": {
"dm": {
"policy": "pairing",
"allowFrom": ["123456789012345678"]
}
}
}
}Configuración de canales del servidor
{
"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."
}
}
}
}
}
}
}Reacciones y confirmaciones
{
"channels": {
"discord": {
"messages": {
"ackReaction": "👀",
"removeAckAfterReply": true
},
"guilds": {
"GUILD_ID": {
"reactionNotifications": "own"
}
}
}
}
}Formato de mensajes y fragmentación
{
"channels": {
"discord": {
"textChunkLimit": 2000,
"chunkMode": "newline",
"historyLimit": 20
}
}
}Comandos slash y acciones de herramientas
Manejo de medios y archivos
Integración con PluralKit
{
"channels": {
"discord": {
"pluralkit": {
"enabled": true,
"token": "pk_live_..."
}
}
}
}Aprobaciones de ejecución (interfaz de botones)
{
"channels": {
"discord": {
"execApprovals": {
"enabled": true,
"approvers": ["USER_ID_1", "USER_ID_2"],
"agentFilter": [],
"sessionFilter": []
}
}
}
}Puertas de acceso a acciones
Resolución de listas de permitidos y coincidencia
Discord Referencia de Configuración
| Key | Type | Default | Description |
|---|---|---|---|
| enabled | boolean | true | Habilitar o deshabilitar el canal Discord |
| token | string | "" | Bot Token de Discord. También se puede usar la variable de entorno DISCORD_BOT_TOKEN |
| dm.policy | string | "pairing" | Controla quién puede enviar DMs al bot. Opciones: pairing, allowlist, open, disabled |
| dm.allowFrom | string[] | [] | IDs de usuario de Discord permitidos para enviar DMs al bot (cuando dm.policy es allowlist) |
| groupPolicy | string | "allowlist" | Política de manejo de canales del servidor. Opciones: open, disabled, allowlist |
| guilds | object | {} | Configuración por servidor indexada por guild ID. Incluye slug, users, channels, requireMention, etc. |
| requireMention | boolean | true | Si el bot requiere @mención para responder en canales del servidor |
| messages.ackReaction | string | "" | Emoji con el que reaccionar como confirmación de mensaje mientras se procesa |
| messages.removeAckAfterReply | boolean | false | Eliminar la reacción de confirmación después de que la IA responda |
| textChunkLimit | number | 2000 | Máximo de caracteres por fragmento de mensaje (el límite de Discord es 2000) |
| chunkMode | string | "length" | Cómo dividir respuestas largas. Opciones: length (límite estricto de caracteres), newline (límites de párrafo) |
| historyLimit | number | 20 | Número de mensajes recientes del servidor a incluir como contexto de la IA |
| mediaMaxMb | number | 8 | Tamaño máximo de archivo multimedia en megabytes para subidas |
| replyToMode | string | "off" | Modo de hilos de respuesta. Opciones: off, first (solo el primer fragmento en hilo), all (todos los fragmentos en hilo) |
| configWrites | boolean | true | Permitir actualizaciones de configuración iniciadas desde Discord mediante comandos /config set|unset |
| allowBots | boolean | false | Si se procesan mensajes de otros bots. Usar con precaución para evitar bucles |
| retry.attempts | number | 3 | Número de intentos de reintento para llamadas fallidas a la API de Discord |
| retry.minDelayMs | number | 500 | Retraso mínimo en milisegundos entre intentos de reintento |
| retry.maxDelayMs | number | 30000 | Retraso máximo en milisegundos entre intentos de reintento |
| retry.jitter | number | 0.1 | Factor de variación aplicado a los retrasos de reintento para aleatorización |
| dm.enabled | boolean | true | Si se aceptan mensajes directos |
| dm.groupEnabled | boolean | false | Habilitar manejo de DMs grupales |
| dm.groupChannels | string[] | [] | Lista de permitidos de canales de DM grupal |
| dmHistoryLimit | number | - | Anulación del límite de historial de DM por usuario |
| maxLinesPerMessage | number | 17 | Límite flexible de número de líneas por fragmento de mensaje |
| commands.native | string | boolean | "auto" | Registro de comandos slash nativos. Opciones: auto (habilitado para Discord), true, false |
| commands.text | object | {} | Configuración de comandos de texto que requieren mensajes independientes con /... |
| commands.useAccessGroups | boolean | false | Si se aplican verificaciones de grupos de acceso para comandos |
| actions.* | boolean | varies | Puertas de acceso a acciones de herramientas. La mayoría habilitadas por defecto; roles, moderation y presence están deshabilitadas por defecto |
| pluralkit.enabled | boolean | false | Habilitar resolución de mensajes proxy de PluralKit |
Habilitar o deshabilitar el canal Discord
Bot Token de Discord. También se puede usar la variable de entorno DISCORD_BOT_TOKEN
Controla quién puede enviar DMs al bot. Opciones: pairing, allowlist, open, disabled
IDs de usuario de Discord permitidos para enviar DMs al bot (cuando dm.policy es allowlist)
Política de manejo de canales del servidor. Opciones: open, disabled, allowlist
Configuración por servidor indexada por guild ID. Incluye slug, users, channels, requireMention, etc.
Si el bot requiere @mención para responder en canales del servidor
Emoji con el que reaccionar como confirmación de mensaje mientras se procesa
Eliminar la reacción de confirmación después de que la IA responda
Máximo de caracteres por fragmento de mensaje (el límite de Discord es 2000)
Cómo dividir respuestas largas. Opciones: length (límite estricto de caracteres), newline (límites de párrafo)
Número de mensajes recientes del servidor a incluir como contexto de la IA
Tamaño máximo de archivo multimedia en megabytes para subidas
Modo de hilos de respuesta. Opciones: off, first (solo el primer fragmento en hilo), all (todos los fragmentos en hilo)
Permitir actualizaciones de configuración iniciadas desde Discord mediante comandos /config set|unset
Si se procesan mensajes de otros bots. Usar con precaución para evitar bucles
Número de intentos de reintento para llamadas fallidas a la API de Discord
Retraso mínimo en milisegundos entre intentos de reintento
Retraso máximo en milisegundos entre intentos de reintento
Factor de variación aplicado a los retrasos de reintento para aleatorización
Si se aceptan mensajes directos
Habilitar manejo de DMs grupales
Lista de permitidos de canales de DM grupal
Anulación del límite de historial de DM por usuario
Límite flexible de número de líneas por fragmento de mensaje
Registro de comandos slash nativos. Opciones: auto (habilitado para Discord), true, false
Configuración de comandos de texto que requieren mensajes independientes con /...
Si se aplican verificaciones de grupos de acceso para comandos
Puertas de acceso a acciones de herramientas. La mayoría habilitadas por defecto; roles, moderation y presence están deshabilitadas por defecto
Habilitar resolución de mensajes proxy de PluralKit
Discord Preguntas Frecuentes
Discord Solución de Problemas
El Message Content Intent no está habilitado, el bot no tiene permisos en el canal, o los requisitos de mención están mal configurados.
El manejo de DMs puede estar deshabilitado en la configuración, o la aprobación de emparejamiento está pendiente.
El scope 'applications.commands' no fue incluido en la URL de invitación OAuth2 del bot.
Se han alcanzado los límites de tasa de la API de Discord, o la conexión al gateway está en un estado incorrecto.
groupPolicy tiene por defecto 'allowlist', por lo que el bot solo responde en servidores/canales configurados explícitamente.
execApprovals no está habilitado, o el ID de Discord del usuario no está listado en el array de approvers.