Cómo crear un bot de Discord con n8n e IA
Un bot de Discord con n8n e IA puede responder automáticamente a mensajes, procesar contenidos y encargarse de distintas tareas en segundo plano. Para ello, Discord, n8n y un modelo de IA se conectan entre sí, de modo que los mensajes entrantes se analizan y se activan respuestas o acciones adecuadas. Estos bots son útiles, por ejemplo, para automatizar la comunicación, apoyar la moderación o integrar servicios externos en un servidor de Discord.
- Automatiza procesos técnicos
- Tareas ilimitadas y control de costes en tu servidor
- Más de 500 integraciones de código abierto
¿Qué ventajas ofrece un bot de Discord con n8n?
Un bot de Discord creado con n8n te permite automatizar muchos procesos sin desarrollar software desde cero. En lugar de programar un bot completo en Python o JavaScript, en n8n construyes visualmente un flujo de trabajo a partir de distintos bloques. Esto resulta especialmente útil si quieres empezar a trabajar con automatizaciones.
Estas son algunas de las ventajas:
- Más adelante podrás implementar cambios con mayor facilidad, ya que puedes ajustar cada paso directamente en la interfaz.
- También puedes ampliar tu bot de Discord con n8n con funciones de IA, por ejemplo, para respuestas automáticas, resúmenes o ayuda en tareas de moderación.
- Además, n8n se puede conectar con numerosos servicios adicionales, de modo que tu bot no solo reaccione a los mensajes de Discord, sino que también procese datos de otras herramientas. Se puede conectar, por ejemplo, con Google Sheets, bases de datos, CRM o sistemas de helpdesk. También puedes integrar herramientas como Jira en n8n para crear tickets automáticamente o publicar mensajes de estado en Discord.
- Buena trazabilidad: ves en el flujo de trabajo exactamente qué ocurre y cuándo. Esto facilita la detección de errores y la posterior ampliación.
- Para equipos y empresas, también resulta interesante poder estandarizar tareas recurrentes.
Además de Discord, n8n permite integrar otras plataformas de comunicación. Con n8n y Telegram o un bot de Telegram con n8n, puedes crear automatizaciones similares y combinarlas entre varias plataformas.
Requisitos previos
Antes de crear un bot de Discord con n8n, conviene preparar algunos elementos básicos para facilitarte los primeros pasos y para que los distintos componentes funcionen correctamente entre sí. Muchos de los accesos necesarios se pueden configurar en pocos minutos, pero merece la pena tenerlo todo listo de antemano. Para la implementación necesitas:
- una instancia de n8n en ejecución, accesible públicamente y con HTTPS,
- una cuenta de Discord,
- un servidor de Discord en el que tengas permisos de administrador,
- acceso al Discord Developer Portal,
- un token de bot para tu bot de Discord,
- un bot de Discord y un webhook configurado en el canal correspondiente,
- acceso de API a un servicio de IA, por ejemplo OpenAI,
- algo de tiempo para las primeras pruebas y ajustes.
Si aún no has instalado n8n, puedes instalar n8n con Docker. Esta variante es especialmente adecuada para empezar, ya que permite arrancar n8n de forma rápida y aislada. Para entornos en producción o aplicaciones más grandes, también puedes optar por una instalación de n8n con Kubernetes, con la que se pueden ejecutar flujos de trabajo de forma escalable y con alta disponibilidad.
Especialmente si estás empezando, se recomienda crear primero un servidor propio en Discord para hacer pruebas. Así puedes probar tu flujo de trabajo de n8n con calma y corregir errores sin afectar a un servidor existente o en producción.
Crear un bot de Discord con n8n paso a paso
Paso 1: preparar un servidor de Discord para hacer pruebas
Si aún no tienes un servidor de pruebas propio, crea uno primero. Abre Discord, haz clic en el símbolo “+” de la barra lateral izquierda y crea un servidor nuevo. Asígnale un nombre. Más adelante, este servidor te servirá para probar el bot de forma segura.
Un servidor de pruebas resulta útil porque te permite probar mensajes, permisos y respuestas en un entorno controlado. Especialmente al empezar con automatizaciones, es normal que aparezcan pequeños errores. En un entorno de pruebas, puedes detectarlos y corregirlos con mucha más tranquilidad. Asegúrate de tener permisos de administrador en el servidor.
Paso 2: crear una aplicación en el Discord Developer Portal
Ahora abre el Discord Developer Portal e inicia sesión con tu cuenta de Discord. Haz clic en el botón para crear una nueva aplicación y asígnale un nombre. Esta aplicación será la base de tu futuro bot.
A continuación, entra en la sección “Bot” y crea allí el bot de Discord propiamente dicho. Discord generará entonces un perfil de bot que más adelante podrá comunicarse con tu flujo de trabajo. Especialmente importante es el llamado bot token. Este token funciona de forma similar a una contraseña para el bot y más adelante se almacenará en n8n. Trátalo de forma confidencial. Cualquier persona con acceso al token podría utilizar el bot de forma indebida o ejecutar acciones en tu nombre.

Paso 3: definir los permisos necesarios para el bot
Para que tu bot funcione en el servidor, necesita los permisos adecuados. En el Developer Portal puedes definir qué permisos debe recibir. Para un bot de IA sencillo, al principio suelen bastar estos permisos:
- Leer mensajes
- Enviar mensajes
- Leer el historial de mensajes
- Insertar enlaces
- Enviar archivos adjuntos
Según el caso de uso, más adelante pueden ser necesarios otros permisos, por ejemplo, para moderación, gestión de roles o interacción con canales. Sin embargo, si estás empezando, es recomendable activar solo los permisos que realmente necesitas. Así el proceso resulta más claro y seguro.

Paso 4: invitar el bot al servidor de Discord
En el siguiente paso, crearás un enlace de invitación para añadir el bot a tu servidor de Discord. Para ello, ve a la sección “OAuth2” del Discord Developer Portal y abre el “OAuth2 URL Generator”.
Activa allí, en Scopes, al menos la opción “bot” y, si quieres utilizar comandos slash, también “applications.commands”. Después, elige los permisos que el bot deberá tener más adelante, por ejemplo, leer y enviar mensajes. A partir de esta selección, Discord genera automáticamente una URL. Abre este enlace, selecciona tu servidor de prueba y confirma la invitación.

El bot ya aparecerá en tu servidor. Es normal que al principio todavía no responda a los mensajes, porque la funcionalidad y la lógica se configuran más adelante en n8n.
Paso 5: crear un webhook de Discord
Para muchos flujos de trabajo, un webhook es la forma más sencilla de enviar mensajes desde n8n a Discord. Sin embargo, los webhooks solo funcionan como canal de salida. Para bots interactivos que reaccionan a entradas de los usuarios, por ejemplo, comandos slash, un webhook por sí solo no basta. Para ello necesitas además Interactions, que se configuran en el paso 7.
Abre en Discord la configuración del canal de texto que quieras utilizar y ve a “Integraciones”. Allí puedes crear un nuevo webhook. Asigna un nombre, elige el canal y copia la URL del webhook. Más adelante, introducirás esta URL en n8n. De este modo, n8n puede enviar automáticamente mensajes a Discord sin que tengas que programar tú mismo la lógica del bot.

Un webhook es especialmente adecuado para las primeras automatizaciones. Si más adelante necesitas interacciones más complejas, como reaccionar de forma específica a mensajes entrantes de Discord, puedes trabajar también con lógica de bot, comandos slash o disparadores externos.
Paso 6: abrir n8n y crear un nuevo flujo de trabajo
Abre tu instancia de n8n y crea un nuevo flujo de trabajo. Asígnale un nombre descriptivo. A diferencia de una automatización sencilla, un bot de Discord real no solo envía mensajes, sino que también debe poder recibir solicitudes entrantes de Discord y responder a ellas.
Una estructura típica consta de tres partes:
- Entrada (Discord → n8n)
- Procesamiento (IA)
- Salida (n8n → Discord)
Paso 7: establecer la conexión entre Discord y n8n con Interactions
A diferencia de los webhooks, que solo se utilizan para mensajes salientes, las Interactions permiten enviar datos desde Discord a tu flujo de trabajo. Se trata de solicitudes estructuradas que, por ejemplo, se desencadenan mediante comandos slash. Cada vez que un usuario ejecuta uno de estos comandos en Discord, se envía una solicitud a una URL que tú defines. Esa es exactamente la URL que proporcionas en n8n.
Primero, crea un nodo Webhook en tu flujo de trabajo. Este nodo sirve como punto de entrada para todas las solicitudes que llegan desde Discord. Abre la configuración del nodo Webhook y selecciona POST como método. A continuación, asigna una ruta, por ejemplo discord-interaction.
En cuanto guardes esta configuración, n8n generará automáticamente una URL de webhook. En la interfaz verás dos variantes: una URL de prueba y una URL de producción. La URL de prueba solo es adecuada para pruebas puntuales dentro del editor. Para el funcionamiento posterior de tu bot de Discord con n8n, en cambio, necesitas la URL de producción, ya que también funciona cuando el flujo de trabajo está activado.
En el siguiente paso, tienes que guardar esta URL en Discord. Para ello, abre el Discord Developer Portal y ve a la aplicación que creaste antes. En el apartado “General Information” encontrarás el campo “Interactions Endpoint URL”. Introduce aquí la URL de producción de n8n y guarda los cambios.
Verificación de firma y ping
Para que Discord acepte tu Interactions Endpoint URL y la utilice de forma permanente, tu endpoint debe cumplir dos requisitos fundamentales:
-
Responder a la verificación de ping: al configurarlo, Discord envía automáticamente una solicitud de prueba con el siguiente contenido:
{ "type": 1 }
Tu endpoint debe responder con una respuesta Pong. Esta respuesta indica que el endpoint es accesible. Para ello, debe devolver lo siguiente:
{
"type": 1
}- Comprobar la firma: además, Discord verifica cada solicitud entrante mediante las cabeceras de seguridad
X-Signature-Ed25519yX-Signature-Timestamp. Esta firma garantiza que la solicitud procede realmente de Discord y que no se ha manipulado durante la transmisión. Para aplicaciones en producción, esta comprobación es obligatoria para tu bot de Discord con n8n.
En n8n, la verificación completa de la firma (Ed25519) no está disponible como función nativa estándar; para producción suele requerir lógica adicional, un nodo de código o middleware externo.
Para pruebas sencillas, puedes seguir utilizando el endpoint. Sin embargo, para un funcionamiento estable en producción, es necesario añadir una capa de middleware que se encargue de verificar la firma de tu bot de Discord con n8n.
Solución habitual para entornos de producción
En la práctica, suele utilizarse la siguiente arquitectura:
Discord → middleware (verificación de firma) → webhook de n8n
El middleware puede implementarse, por ejemplo, como un pequeño servicio independiente, ya sea como un servidor sencillo en Node.js, una función sin servidor, por ejemplo, con Cloudflare Workers, o como parte de un servicio backend existente. Lo importante no es la tecnología concreta, sino la función que cumple esta capa intermedia para tu bot de Discord con n8n.
Este componente se sitúa entre Discord y tu instancia de n8n y asume varias tareas clave. Primero, comprueba cada solicitud entrante mediante la firma enviada para garantizar que los datos proceden realmente de Discord y no se han manipulado. Además, responde correctamente a la solicitud de ping que envía Discord y que es necesaria para verificar el endpoint de tu bot de Discord con n8n.
Solo después de completar estas comprobaciones correctamente, el middleware reenvía la solicitud al webhook de n8n. De este modo, tu flujo de trabajo de n8n solo recibe datos validados y de confianza, y puede continuar con el procesamiento como de costumbre.
Discord solo acepta URL HTTPS para el Interactions Endpoint. Por tanto, asegúrate de que tu instancia de n8n sea accesible mediante HTTPS, por ejemplo, a través de tu propio dominio con certificado SSL.
Con esto, la conexión queda establecida: cada vez que un usuario ejecute un comando slash, Discord enviará automáticamente los datos correspondientes a tu flujo de trabajo de Discord con n8n, que procesará la solicitud y activará la respuesta del bot.
Paso 8: crear un comando slash para el bot
Para que los usuarios puedan activar el bot directamente en el chat, necesitas un comando slash. Estos llamados Application Commands se crean a través de la API de Discord para tu bot de Discord con n8n.
Antes de crear el comando slash, necesitas dos valores importantes del Discord Developer Portal:
- Application ID: lo encontrarás en la sección “General Information” de tu aplicación.
- Bot token: lo encontrarás en la sección “Bot”. Trata el token de forma confidencial, ya que permite acceder a tu bot.
El comando se crea mediante una solicitud HTTP a la API de Discord. Puedes ejecutar esta solicitud desde un terminal o directamente con una herramienta como n8n. Un ejemplo con curl tendría este aspecto:
curl -X POST https://discord.com/api/v10/applications/YOUR_APPLICATION_ID/commands \
-H "Authorization: Bot YOUR_BOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "ask",
"description": "Hazle una pregunta al bot",
"options": [
{
"name": "pregunta",
"description": "Tu pregunta",
"type": 3,
"required": true
}
]
}'bashSustituye YOUR_APPLICATION_ID por tu Application ID real y YOUR_BOT_TOKEN por tu bot token.
Con esta solicitud se crea un nuevo comando slash llamado /ask. Además, se define una opción de entrada con el nombre pregunta, a través de la cual los usuarios pueden enviar un mensaje al bot.
Una vez que la solicitud se haya ejecutado correctamente, el nuevo comando estará disponible. Abre tu servidor de Discord y haz clic en un campo de entrada de texto. Escribe /. El nuevo comando debería aparecer en la lista de sugerencias.
Paso 9: procesar los datos entrantes de Discord
Cuando se ejecuta un comando slash, Discord envía una solicitud estructurada a tu webhook. Para procesar la información incluida, añade un nodo Set detrás del webhook. Ahí puedes extraer los datos relevantes, en especial el nombre de usuario y el mensaje introducido, mediante expresiones JSON.
Ejemplo:
{
"username": "{{$json.member.user.username}}",
"message": "{{$json.data.options[0].value}}"
}jsonDe este modo, dispones de la información más importante en un formato claro y fácil de consultar.
Los campos exactos pueden variar según el tipo de comando, el contexto y la estructura de opciones. Por eso, revisa siempre en n8n la salida real de la última ejecución.

Paso 10: pasar el mensaje a un modelo de IA
En el siguiente paso, conecta tu flujo de trabajo con un modelo de lenguaje grande (LLM). En n8n puedes usar para ello el nodo OpenAI o enviar la solicitud directamente a una API con un nodo HTTP Request. En versiones actuales, el nodo OpenAI puede trabajar con la API Responses de OpenAI, aunque las opciones disponibles pueden variar según tu instalación. Si estás empezando, esta suele ser la opción más sencilla.
Si utilizas el nodo por primera vez, primero tienes que guardar tus credenciales. Haz clic en “Credentials” en el nodo y selecciona “Create New Credential”. Introduce allí tu clave de API y guarda las credenciales.
A continuación, configura el nodo para que el mensaje entrante de Discord se pase al modelo. Elige una operación de texto o de mensaje e introduce un prompt que indique a la IA el marco deseado. Una plantilla sencilla podría ser:
Eres un asistente útil en un servidor de Discord.
Responde de forma amable y comprensible en un máximo de cinco frases.
Usuario: {{$json.username}}
Mensaje: {{$json.message}}txtAsegúrate de no escribir manualmente los valores username y message, sino de insertarlos como expresiones desde el nodo anterior.
Paso 11: preparar la respuesta para Discord
La respuesta de un nodo de IA en n8n no suele contener solo texto, sino también datos estructurales y metadatos. Para que Discord reciba únicamente la respuesta propiamente dicha, prepara el resultado en un paso adicional. Añade otro nodo Set detrás del nodo de IA. Allí, crea un nuevo campo con el nombre reply. En este campo, extraes el texto de respuesta del resultado del nodo de IA.
Un ejemplo típico sería:
{
"reply": "{{$json.output[0].content[0].text}}"
}jsonSi tu salida tiene otra estructura, puedes comprobarlo fácilmente revisando el Output del nodo OpenAI después de una ejecución de prueba. Allí verás exactamente en qué posición se encuentra el texto de respuesta.
Opcionalmente, también puedes formatear la respuesta, por ejemplo, añadiendo un prefijo. Así, la salida de Discord puede resultar más clara o visualmente más atractiva:
{
"reply": "**Bot de IA:** {{$json.reply}}"
}jsonPaso 12: devolver la respuesta directamente a Discord
Este paso es especialmente importante, porque en Interactions Discord no espera una respuesta de webhook normal. En su lugar, tu endpoint debe responder a la solicitud del comando slash con una Interaction Response válida.
En n8n hay una forma práctica de hacerlo: el nodo Webhook puede esperar hasta que el flujo de trabajo haya terminado y devolver entonces el resultado del último paso. Para ello, configura el nodo Webhook para que no responda inmediatamente, sino cuando haya finalizado el último nodo del flujo de trabajo.
Haz clic de nuevo en el nodo Webhook situado al inicio del flujo de trabajo. Busca la sección “Respond” y, en lugar de una respuesta inmediata, selecciona la opción “When Last Node Finishes”.

Ten en cuenta los límites de frecuencia de Discord: tanto los webhooks como las llamadas a la API están restringidos. Discord utiliza límites dinámicos para webhooks y llamadas a la API, que varían según el endpoint y el uso. Si se envían demasiadas solicitudes en poco tiempo, Discord responde con un error HTTP 429. Para evitar problemas, las respuestas no deberían enviarse sin control, sino de forma regulada o con retraso.
Debajo encontrarás el ajuste para los datos de respuesta. Selecciona “First Entry JSON” para que n8n devuelva al final exactamente el objeto JSON que sale del último nodo.
Para que Discord acepte la respuesta, el último nodo debe generar un objeto JSON con una estructura como esta:
{
"type": 4,
"data": {
"content": "{{$json.reply}}"
}
}jsonEn la práctica, esto significa que debes añadir otro nodo Set detrás de tu nodo Reply actual. En este último nodo, crea los campos de forma que se genere exactamente esta estructura. Un campo type recibe el valor 4. El campo data contiene a su vez el subcampo content con tu respuesta de la IA.

En Interactions de Discord hay una limitación importante: tu endpoint debe devolver una primera respuesta en un plazo de 3 segundos. Si en ese tiempo no llega una respuesta válida, Discord descarta la solicitud y el Interaction Token asociado deja de ser válido. Sin embargo, al utilizar modelos de IA, el procesamiento puede tardar más. En esos casos, conviene no devolver una respuesta terminada de inmediato, sino enviar primero una respuesta diferida (deferred response).
Para ello, utiliza el tipo de respuesta type: 5 (DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE). Este indica a Discord que la solicitud se ha aceptado y que la respuesta real llegará más tarde. A continuación, puedes devolver la respuesta final mediante un mensaje de seguimiento (follow-up). Para ello, el Interaction Token sigue siendo válido hasta 15 minutos.
Paso 13: probar el flujo de trabajo en detalle
Antes de usar el bot de Discord con n8n de forma permanente, conviene probar todo el flujo con cuidado. Primero, activa el flujo de trabajo, ya que las URL de webhook de producción solo funcionan en n8n cuando el flujo está activo. Además, n8n distingue claramente entre URL de prueba y URL de producción. La URL de producción es la dirección que debes usar para Discord.
Después, ve a tu servidor de Discord e introduce el comando slash, por ejemplo:
/ask pregunta: ¿Qué es n8n?txtEn cuanto envíes el comando, Discord debería enviar la solicitud a tu Interactions Endpoint. A continuación, abre en n8n la lista de ejecuciones. Allí puedes hacer clic en cada paso por separado y comprobar qué datos han llegado y cómo se han procesado. Si todo funciona correctamente, se enviará una respuesta en Discord.
Ejemplos prácticos de uso para bots de Discord con n8n e IA
Con n8n no solo puedes crear un bot de Discord sencillo que responda a mensajes, sino también automatizar muchos flujos de trabajo distintos en Discord. Los siguientes ejemplos muestran tres ideas prácticas y fáciles de seguir si estás empezando.
Ejemplo 1: bot de FAQ para preguntas de la comunidad
Un bot de FAQ para Discord con n8n responde automáticamente a preguntas frecuentes. Esto resulta especialmente útil cuando en tu servidor se plantean una y otra vez dudas similares sobre productos, normas, horarios de apertura o procesos. La IA puede interpretar una pregunta entrante y responder de forma amable y concisa. De forma opcional, también puedes consultar información fija almacenada en una tabla, una base de datos o un documento interno. Así, los usuarios reciben respuesta más rápido, sin que los moderadores tengan que contestar cada pregunta manualmente. En servidores de soporte o comunidades, esto ahorra mucho tiempo.

Ejemplo 2: bot de moderación para la revisión previa de mensajes
Un bot de moderación para Discord con n8n puede analizar mensajes nuevos y detectar contenidos problemáticos rápidamente. La IA comprueba, por ejemplo, si un mensaje es ofensivo, parece spam o no encaja con el tema del canal. Después, en n8n puedes definir reglas para decidir qué debe ocurrir en cada caso. Por ejemplo, puedes enviar un aviso al equipo de moderación o reenviar el mensaje a un canal de revisión. El bot no sustituye la moderación humana, pero ayuda a clasificar contenidos más rápido. Sobre todo en comunidades grandes, esto puede reducir mucho la carga de trabajo del equipo de moderación.

Ejemplo 3: bot de resúmenes para debates largos
En servidores de Discord muy activos, la información importante puede perderse rápidamente entre la gran cantidad de mensajes. Un bot puede agrupar varios mensajes y crear un resumen en intervalos concretos o a petición. Esto resulta útil, por ejemplo, en servidores de proyectos, comunidades de aprendizaje o canales internos de equipo. n8n recopila los mensajes relevantes, se los pasa a la IA y publica después un resumen en un canal definido. Así, no hace falta que todos los participantes lean la conversación completa. Esto mejora la visión general y ahorra tiempo.


