OpenClaw

Canal Discord de OpenClaw

Mensajería
Fácil

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.

Info rápida
DificultadFácil
CategoríaMensajería
Funciones compatibles5 / 6

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

1

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).

2

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.

3

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

config.json
{
  "channels": {
    "discord": {
      "enabled": true,
      "token": "YOUR_DISCORD_BOT_TOKEN",
      "dm": {
        "policy": "pairing"
      }
    }
  }
}

Discord Documentación Detallada

Descripción de la arquitectura

OpenClaw se conecta a Discord a través de la librería discord.js — un potente módulo de Node.js para interactuar con la API del Bot Gateway de Discord. El bot se conecta vía WebSocket al gateway de Discord, recibiendo eventos en tiempo real para mensajes, reacciones y otras interacciones. El enrutamiento de sesiones difiere según el contexto: las conversaciones por mensaje directo se agrupan en la sesión principal del agente (agent:main:main), mientras que las conversaciones en canales del servidor crean sesiones aisladas por canal (agent:<agentId>:discord:channel:<channelId>). Los comandos slash obtienen sus propias sesiones aisladas por usuario. Los DMs grupales están deshabilitados por defecto.
El bot token se puede establecer mediante la variable de entorno DISCORD_BOT_TOKEN o en tu configuración bajo channels.discord.token.
Habilita el Modo Desarrollador en Discord (Ajustes de usuario → Avanzado) para copiar fácilmente Guild IDs, Channel IDs y User IDs haciendo clic derecho.

Creación de tu bot

Configurar un bot de Discord requiere crear una aplicación en el Portal de Desarrolladores de Discord: 1. Ve a discord.com/developers/applications 2. Haz clic en 'New Application' y ponle un nombre 3. Navega a la sección Bot y haz clic en 'Add Bot' 4. Copia el Bot Token — guárdalo de forma segura 5. En Privileged Gateway Intents, habilita: • Message Content Intent (requerido — sin esto, el bot no puede leer el contenido de los mensajes) • Server Members Intent (recomendado para consultas de miembros/roles) 6. Ve a OAuth2 → URL Generator 7. Selecciona los scopes: 'bot' y 'applications.commands' 8. Selecciona los permisos: View Channels, Send Messages, Read Message History, Embed Links, Attach Files, Add Reactions 9. Copia la URL generada y ábrela para invitar al bot a tu servidor
Evita otorgar el permiso de Administrator a menos que estés depurando. Usa los permisos mínimos requeridos para mayor seguridad.
Mantén tu bot token en secreto. Cualquiera con el token puede controlar tu bot. Si se compromete, regenera el token en el Portal de Desarrolladores.
El Message Content Intent es necesario para que el bot lea el texto de los mensajes. Sin él, el bot se conectará pero no podrá ver ningún contenido de mensajes.

Políticas de DM

Las políticas de DM (Mensaje Directo) controlan quién puede interactuar con tu asistente de IA en chats privados. OpenClaw soporta cuatro políticas: • pairing (por defecto) — Los remitentes desconocidos reciben un código de emparejamiento con tiempo limitado (expira después de 1 hora). Apruébalos mediante 'openclaw pairing approve discord <código>' en tu terminal. Una vez aprobados, pueden chatear libremente. • allowlist — Solo los IDs de usuario listados explícitamente en dm.allowFrom pueden enviar mensajes al bot. El resto se ignora silenciosamente. • open — Cualquiera que envíe un DM al bot recibe respuesta. Requiere dm.allowFrom=["*"] para funcionar. Usar con precaución. • disabled — El manejo de DMs está completamente desactivado. El bot no responderá a ningún mensaje directo.
openclaw.json
{
  "channels": {
    "discord": {
      "dm": {
        "policy": "pairing",
        "allowFrom": ["123456789012345678"]
      }
    }
  }
}

Configuración de canales del servidor

Los canales del servidor (guild) son donde ocurren la mayoría de las interacciones en Discord. OpenClaw proporciona un control granular sobre en qué servidores y canales opera el bot. Configuración de nivel superior: • groupPolicy — Controla el manejo de canales del servidor. Opciones: open (responder en todos los canales), disabled (ignorar todos los mensajes del servidor), allowlist (restringir a servidores configurados) La configuración por servidor permite personalizar el comportamiento para cada servidor: • slug — Identificador amigable para visualización • users — Lista de usuarios permitidos (IDs o nombres) • requireMention — Si el bot necesita ser @mencionado • reactionNotifications — Control de notificaciones de reacciones (off, own, all, allowlist) Las reglas por canal permiten un control aún más fino dentro de un servidor: • allow — Habilitar/deshabilitar el canal • requireMention — Restricción de mención específica del canal • users — Lista de usuarios permitidos del canal • skills — Filtro de habilidades (omitir para todas) • systemPrompt — Instrucciones de contexto adicionales para la IA
openclaw.json
{
  "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."
            }
          }
        }
      }
    }
  }
}
Habilita el Modo Desarrollador en Discord (Ajustes de usuario → Avanzado) para hacer clic derecho y copiar Guild, Channel y User IDs.
El systemPrompt por canal te permite dar a la IA diferentes personalidades o instrucciones para diferentes canales.

Reacciones y confirmaciones

OpenClaw soporta el sistema de reacciones de Discord para confirmar la recepción de mensajes y recibir notificaciones de reacciones. Reacciones de confirmación: El bot puede reaccionar a los mensajes entrantes con un emoji para señalar que está procesando. Configúralo mediante messages.ackReaction. La reacción se puede eliminar automáticamente después de que la IA responda usando messages.removeAckAfterReply. Notificaciones de reacciones: Configura por servidor qué reacciones activan notificaciones al agente: • off — Sin notificaciones de reacciones • own — Solo reacciones a mensajes del bot • all — Todas las reacciones en el canal • allowlist — Solo reacciones de usuarios permitidos
openclaw.json
{
  "channels": {
    "discord": {
      "messages": {
        "ackReaction": "👀",
        "removeAckAfterReply": true
      },
      "guilds": {
        "GUILD_ID": {
          "reactionNotifications": "own"
        }
      }
    }
  }
}

Formato de mensajes y fragmentación

Discord tiene un límite de 2.000 caracteres por mensaje. OpenClaw maneja automáticamente las respuestas largas de IA fragmentándolas. Configuración clave: • textChunkLimit — Máximo de caracteres por fragmento de mensaje (por defecto: 2000) • maxLinesPerMessage — Límite flexible de líneas por mensaje (por defecto: 17) • chunkMode — Estrategia de división: 'length' (por defecto, límite estricto de caracteres) o 'newline' (dividir en límites de párrafo) El bot también inyecta contexto de los mensajes recientes del servidor (configurable mediante historyLimit, por defecto 20 mensajes) para que la IA pueda participar de forma natural en conversaciones en curso.
openclaw.json
{
  "channels": {
    "discord": {
      "textChunkLimit": 2000,
      "chunkMode": "newline",
      "historyLimit": 20
    }
  }
}

Comandos slash y acciones de herramientas

OpenClaw registra automáticamente comandos slash nativos de Discord cuando el bot se inicia (por defecto: auto, configurable mediante commands.native). Establecer commands.native en false elimina los comandos previamente registrados. Los comandos siguen las mismas reglas de lista de permitidos que los mensajes — los usuarios no autorizados ven los comandos en la interfaz de Discord pero reciben una respuesta de 'no autorizado'. Aislamiento de sesiones: Los comandos slash usan claves de sesión separadas (agent:<agentId>:discord:slash:<userId>) en lugar de la sesión principal compartida, proporcionando aislamiento por usuario. El agente soporta un amplio conjunto de acciones de herramientas para interactuar con Discord: • Mensajes — Enviar, editar, eliminar, fijar/desfijar mensajes, buscar mensajes • Hilos — Crear hilos, listar hilos, responder en hilos • Reacciones — Reaccionar a mensajes, listar reacciones • Moderación — Silenciar, expulsar, banear miembros (deshabilitado por defecto) • Información del servidor — Info de miembros, info de roles, info de canales, lista de emojis • Presencia — Establecer estado del bot (deshabilitado por defecto) Las etiquetas de respuesta permiten a los modelos controlar el hilo de mensajes: • [[reply_to_current]] — Respuesta en hilo al mensaje que lo activó • [[reply_to:<id>]] — Respuesta en hilo a un mensaje específico por ID
Asegúrate de que el scope 'applications.commands' esté incluido en tu URL de invitación OAuth2 para que aparezcan los comandos slash.
Las herramientas de moderación (silenciar, expulsar, banear) y la gestión de roles están deshabilitadas por defecto. Habilítalas explícitamente en tu configuración si las necesitas.

Manejo de medios y archivos

OpenClaw soporta el envío y recepción de archivos multimedia a través de Discord. El tamaño máximo de subida por defecto es 8 MB (configurable mediante mediaMaxMb). Operaciones soportadas: • Recibir imágenes y archivos adjuntos de usuarios • Enviar imágenes, documentos y otros archivos en las respuestas • Incrustar enlaces con vistas previas enriquecidas El bot requiere el permiso 'Attach Files' para enviar medios en canales del servidor.
El límite de tamaño de archivos de Discord depende del nivel de boost del servidor. El valor por defecto es 8 MB para servidores sin boost, 50 MB para Nivel 2 y 100 MB para Nivel 3.

Integración con PluralKit

OpenClaw soporta opcionalmente la resolución de mensajes proxy de PluralKit, permitiendo al bot identificar correctamente los mensajes de sistemas PluralKit. Cuando está habilitado, el bot resuelve los mensajes proxy a su identidad original de miembro PluralKit. Esto es útil para comunidades que usan PluralKit para el enrutamiento de mensajes de sistemas/plurales. Detalles clave: • Usa el prefijo pk:<memberId> en las listas de permitidos para identificar miembros de PluralKit • Los nombres de miembros también se asocian por nombre de visualización o slug • Las búsquedas usan el ID del mensaje original de Discord dentro de la ventana de 30 minutos de PluralKit • Si la búsqueda falla, los mensajes proxy se tratan como mensajes de bot (se descartan a menos que allowBots=true)
openclaw.json
{
  "channels": {
    "discord": {
      "pluralkit": {
        "enabled": true,
        "token": "pk_live_..."
      }
    }
  }
}
Los sistemas privados de PluralKit requieren un pluralkit.token para resolver miembros. Sin él, los mensajes proxy se tratan como mensajes de bot y se descartan.
Usa el prefijo pk:<memberId> en las listas de permitidos para una coincidencia precisa de miembros de PluralKit.

Aprobaciones de ejecución (interfaz de botones)

Discord soporta un flujo de aprobación basado en botones para operaciones de ejecución. Cuando está habilitado, el bot envía botones interactivos (Permitir una vez, Permitir siempre, Denegar) a los aprobadores designados en DMs. Esto reemplaza el flujo de aprobación basado en comandos /approve con una interfaz más amigable. Requisitos: • execApprovals.enabled debe ser true • El ID de usuario de Discord del aprobador debe estar listado en execApprovals.approvers • Los arrays opcionales agentFilter y sessionFilter restringen qué agentes/sesiones activan aprobaciones Nota: El comando /approve <id> solo se usa para aprobaciones reenviadas. La interfaz de botones de Discord reemplaza las aprobaciones basadas en comandos para interacciones directas.
openclaw.json
{
  "channels": {
    "discord": {
      "execApprovals": {
        "enabled": true,
        "approvers": ["USER_ID_1", "USER_ID_2"],
        "agentFilter": [],
        "sessionFilter": []
      }
    }
  }
}
Si los botones de aprobación no aparecen o ves errores de 'unknown approval id', verifica que el ID de usuario esté listado en execApprovals.approvers y que execApprovals.enabled esté en true.

Puertas de acceso a acciones

OpenClaw proporciona un control granular sobre qué acciones de herramientas de Discord puede realizar el agente. Las acciones se controlan mediante channels.discord.actions.<acción> (true/false). Habilitadas por defecto: • reactions, stickers, emojiUploads, stickerUploads, polls, permissions, messages, threads, pins, search, memberInfo, roleInfo, channelInfo, voiceStatus, events, channels Deshabilitadas por defecto: • roles — Gestión de roles (asignar/quitar roles) • moderation — Silenciar, expulsar, banear miembros • presence — Establecer estado/actividad del bot Deshabilita acciones específicas para reducir las capacidades del bot y limitar riesgos. Por ejemplo, establece channels.discord.actions.moderation=false para asegurar que el agente nunca pueda expulsar o banear miembros.
Sigue el principio de mínimo privilegio: solo habilita las acciones que tu caso de uso realmente requiera.
Las anulaciones de herramientas por servidor y por canal están disponibles mediante guilds.<id>.tools y guilds.<id>.channels.<id>.tools para un control más granular.

Resolución de listas de permitidos y coincidencia

OpenClaw soporta múltiples formatos para especificar usuarios y canales en las listas de permitidos: • IDs numéricos (preferido) — ej., "123456789012345678" • Nombres de usuario/canal de Discord — ej., "username", "#channel-name" • Menciones — ej., "<@userId>", "<#channelId>" • Formatos con prefijo — discord:, user:, channel:, pk: (para miembros de PluralKit) • Comodín — "*" para acceso sin restricciones Al iniciar, OpenClaw resuelve los nombres a IDs cuando el bot puede buscar miembros (requiere Server Members Intent). El mapeo se registra en los logs; las entradas no resueltas se mantienen tal cual. Detección de propietario: Cuando una lista de usuarios permitidos por servidor o por canal coincide con el remitente, OpenClaw trata al remitente como propietario en el prompt del sistema. El propietario global se configura mediante commands.ownerAllowFrom. Herencia de hilos: Los hilos heredan la configuración del canal padre (lista de permitidos, requireMention, skills, prompts) a menos que se listen explícitamente con el ID del canal del hilo.
Usa IDs numéricos siempre que sea posible para una coincidencia confiable. La resolución basada en nombres requiere Server Members Intent y puede fallar en servidores grandes.
El formato slug es en minúsculas con espacios reemplazados por guiones (ej., #mi-ayuda → slug mi-ayuda).
Los temas de los canales del servidor se inyectan como contexto pero NO como prompt del sistema — trátalos como entrada no confiable.

Discord Referencia de Configuración

enabled
Type: booleanDefault: true

Habilitar o deshabilitar el canal Discord

token
Type: stringDefault: ""

Bot Token de Discord. También se puede usar la variable de entorno DISCORD_BOT_TOKEN

dm.policy
Type: stringDefault: "pairing"

Controla quién puede enviar DMs al bot. Opciones: pairing, allowlist, open, disabled

dm.allowFrom
Type: string[]Default: []

IDs de usuario de Discord permitidos para enviar DMs al bot (cuando dm.policy es allowlist)

groupPolicy
Type: stringDefault: "allowlist"

Política de manejo de canales del servidor. Opciones: open, disabled, allowlist

guilds
Type: objectDefault: {}

Configuración por servidor indexada por guild ID. Incluye slug, users, channels, requireMention, etc.

requireMention
Type: booleanDefault: true

Si el bot requiere @mención para responder en canales del servidor

messages.ackReaction
Type: stringDefault: ""

Emoji con el que reaccionar como confirmación de mensaje mientras se procesa

messages.removeAckAfterReply
Type: booleanDefault: false

Eliminar la reacción de confirmación después de que la IA responda

textChunkLimit
Type: numberDefault: 2000

Máximo de caracteres por fragmento de mensaje (el límite de Discord es 2000)

chunkMode
Type: stringDefault: "length"

Cómo dividir respuestas largas. Opciones: length (límite estricto de caracteres), newline (límites de párrafo)

historyLimit
Type: numberDefault: 20

Número de mensajes recientes del servidor a incluir como contexto de la IA

mediaMaxMb
Type: numberDefault: 8

Tamaño máximo de archivo multimedia en megabytes para subidas

replyToMode
Type: stringDefault: "off"

Modo de hilos de respuesta. Opciones: off, first (solo el primer fragmento en hilo), all (todos los fragmentos en hilo)

configWrites
Type: booleanDefault: true

Permitir actualizaciones de configuración iniciadas desde Discord mediante comandos /config set|unset

allowBots
Type: booleanDefault: false

Si se procesan mensajes de otros bots. Usar con precaución para evitar bucles

retry.attempts
Type: numberDefault: 3

Número de intentos de reintento para llamadas fallidas a la API de Discord

retry.minDelayMs
Type: numberDefault: 500

Retraso mínimo en milisegundos entre intentos de reintento

retry.maxDelayMs
Type: numberDefault: 30000

Retraso máximo en milisegundos entre intentos de reintento

retry.jitter
Type: numberDefault: 0.1

Factor de variación aplicado a los retrasos de reintento para aleatorización

dm.enabled
Type: booleanDefault: true

Si se aceptan mensajes directos

dm.groupEnabled
Type: booleanDefault: false

Habilitar manejo de DMs grupales

dm.groupChannels
Type: string[]Default: []

Lista de permitidos de canales de DM grupal

dmHistoryLimit
Type: numberDefault: -

Anulación del límite de historial de DM por usuario

maxLinesPerMessage
Type: numberDefault: 17

Límite flexible de número de líneas por fragmento de mensaje

commands.native
Type: string | booleanDefault: "auto"

Registro de comandos slash nativos. Opciones: auto (habilitado para Discord), true, false

commands.text
Type: objectDefault: {}

Configuración de comandos de texto que requieren mensajes independientes con /...

commands.useAccessGroups
Type: booleanDefault: false

Si se aplican verificaciones de grupos de acceso para comandos

actions.*
Type: booleanDefault: 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
Type: booleanDefault: false

Habilitar resolución de mensajes proxy de PluralKit

Discord Preguntas Frecuentes

Discord Solución de Problemas

El bot se conecta pero no responde a los mensajes

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.

Verifica que el Message Content Intent esté habilitado en el Portal de Desarrolladores de Discord (Bot → Privileged Gateway Intents). Confirma que el bot tiene los permisos View Channels, Send Messages y Read Message History. Comprueba si requireMention está establecido en true y el bot no está siendo @mencionado.
Los DMs no funcionan

El manejo de DMs puede estar deshabilitado en la configuración, o la aprobación de emparejamiento está pendiente.

Verifica que dm.policy no esté configurado como 'disabled'. Si usas el modo pairing, revisa los emparejamientos pendientes con 'openclaw pairing list' y aprueba mediante 'openclaw pairing approve discord <código>'. Si usas el modo allowlist, asegúrate de que el ID de Discord del usuario esté en dm.allowFrom.
Los comandos slash no son visibles en Discord

El scope 'applications.commands' no fue incluido en la URL de invitación OAuth2 del bot.

Ve al Portal de Desarrolladores → OAuth2 → URL Generator, asegúrate de que ambos scopes 'bot' y 'applications.commands' estén seleccionados, genera una nueva URL de invitación y vuelve a invitar al bot a tu servidor. Los comandos slash están controlados por las mismas listas de permitidos que los mensajes regulares.
El bot tiene límite de tasa o está atascado

Se han alcanzado los límites de tasa de la API de Discord, o la conexión al gateway está en un estado incorrecto.

Reinicia el gateway con 'openclaw gateway --force'. OpenClaw incluye lógica de reintento integrada con retroceso exponencial para límites de tasa (respuestas 429). Si el problema persiste, revisa la configuración de reintentos en channels.discord.retry.
requireMention es false pero el bot aún no responde

groupPolicy tiene por defecto 'allowlist', por lo que el bot solo responde en servidores/canales configurados explícitamente.

Establece groupPolicy en 'open' para responder en todos los canales, o añade los IDs específicos del servidor y canal a la configuración de guilds. Asegúrate de que la entrada del servidor incluya el canal con allow: true.
Los botones de aprobación de ejecución no aparecen en DMs

execApprovals no está habilitado, o el ID de Discord del usuario no está listado en el array de approvers.

Establece execApprovals.enabled en true en tu configuración del canal Discord. Añade el ID numérico de Discord del usuario al array execApprovals.approvers. Usa la interfaz de botones (no el comando /approve) para aprobaciones directas de Discord.