Cómo funciona (Arquitectura)
Antes de configurar esto, es importante entender que no necesita alojar una aplicación de bot separada ni ejecutar un script de “bot” (como un bot de Node.js o Python) en su servidor.
Esta integración utiliza Interacciones de Discord (Webhooks) combinadas con Ediciones Progresivas para simular una experiencia de IA en streaming:
- Acción del usuario: Un usuario escribe
/asken su servidor de Discord. - Webhook: Discord envía una solicitud HTTP POST directamente a su servidor de Discourse.
- Acuse de recibo inmediato: Discourse responde instantáneamente con un estado de “Buscando…”. Esto evita el tiempo de espera de “Interacción fallida” de Discord.
- Respuesta en streaming: Un trabajo en segundo plano comienza a generar la respuesta de la IA. A medida que la IA produce texto, Discourse envía frecuentes solicitudes HTTP PATCH para editar el mensaje de Discord en tiempo real.
Resultado: Los usuarios ven la respuesta escribirse en vivo, al igual que ChatGPT, en lugar de esperar un único bloque de texto estático.
Beneficio clave: Dado que Discourse maneja la lógica internamente, no hay infraestructura adicional que mantener. Si su foro está en línea, su bot está en línea.
Esta guía detalla el proceso completo para integrar el bot de IA de Discourse con un servidor de Discord. Incluye instrucciones específicas para registrar manualmente los comandos de barra diagonal a través de la API, lo cual es necesario actualmente para omitir los problemas de sincronización automática en el plugin.
Requisitos previos
- Acceso de administrador de Discourse: Debe ser administrador de su instancia de Discourse autoalojada.
- Acceso de administrador de Discord: Debe tener permisos de “Administrar servidor” en el servidor de Discord de destino.
- Acceso a la terminal: Necesitará una terminal para ejecutar comandos
curl.
1. Crear la aplicación de Discord
- Navegue al Portal de desarrolladores de Discord.
- Haga clic en Nueva aplicación en la esquina superior derecha.
- Asigne un nombre a su aplicación (por ejemplo, “Asistente de Discourse”) y haga clic en Crear.
- Copiar credenciales: En la página Información general, localice y guarde lo siguiente para más tarde:
2. Configurar el usuario del bot
-
En el menú de la barra lateral izquierda, haga clic en Bot.
-
Haga clic en Restablecer token.
-
Habilitar intenciones privilegiadas:
- Desplácese hacia abajo hasta la sección “Intenciones de puerta de enlace privilegiadas”.
- Active Intención de contenido de mensajes a ACTIVADO. (Esto permite que el bot lea los mensajes a los que necesita responder).
-
Haga clic en Guardar cambios.
3. Configurar los ajustes de Discourse
-
Inicie sesión en su Panel de administración de Discourse.
-
Navegue a Administración → Plugins → IA → Características.
-
Busque “discord” y haga clic en editar:
-
Rellene los detalles
ID de aplicación de Discord de IA: Pegue=ApplicationId=Clave pública de aplicación de Discord de IA: Pegue=PublicKey=
-
Permitir su servidor de Discord:
- Abra su aplicación de Discord y habilite el Modo Desarrollador (Configuración de usuario → Avanzado → Modo Desarrollador).
- Haga clic derecho en el icono de su servidor en la barra lateral y seleccione Copiar ID de servidor.
- En la Configuración de Discourse, pegue este ID en el campo
Gremios permitidos de Discord de IA.
4. Establecer el punto final de interacciones
- Construya su URL de punto final:
https://=ForumUrl=/discourse-ai/discord/interactions - Regrese al Portal de desarrolladores de Discord.
- En la página Información general, desplácese hasta URL del punto final de interacciones.
- Pegue su URL y haga clic en Guardar cambios.
- Éxito: Discord enviará una señal de prueba. Si se guarda sin errores, su instancia de Discourse verificó con éxito la firma.
- Fallo: Si recibe un error, asegúrese de que
ID de aplicación de Discord de IAyClave pública de aplicación de Discord de IAestén guardados correctamente en la Configuración de Discourse.
5. Invitar al bot
- En el Portal de desarrolladores, haga clic en Instalación en la barra lateral.
- Ámbitos (Scopes): Marque las casillas
botyapplications.commands. - Permisos del bot: Marque los siguientes:
- Enviar mensajes
- Insertar enlaces
- Adjuntar archivos
- Leer historial de mensajes
- Copie el Enlace de instalación en la parte superior de la página.
- Abra esta URL en una pestaña del navegador y autorice al bot a unirse a su servidor.
6. Registrar el comando de barra diagonal (Llamada API manual)
Importante: El nombre del parámetro del comando DEBE ser query.
Para Mac / Linux (Bash)
curl -X POST "https://discord.com/api/v10/applications/=ApplicationId=/commands" \
-H "Authorization: Bot =BotToken=" \
-H "Content-Type: application/json" \
-d '{
"name": "ask",
"description": "Haz una pregunta a la IA",
"options": [
{
"name": "query",
"description": "¿Cuál es tu pregunta?",
"type": 3,
"required": true
}
]
}'
- Respuesta de éxito: Debería recibir una respuesta JSON que contenga el ID del nuevo comando.
- ¿Error 401? Asegúrese de haber conservado la palabra
Bot(con un espacio) antes de su token en el encabezado de Autorización.
7. Verificación
- Abra su servidor de Discord.
- Escriba
/asken un canal de texto. - Debería aparecer el menú de comandos. Seleccione
/asky escriba una pregunta en el campoquery. - Comportamiento esperado:
- Inmediato: El bot responde “Buscando…”
- Después de unos segundos: El mensaje se actualiza con la respuesta de la IA.
Solución de problemas
| Error | Causa | Solución |
|---|---|---|
| 401 No autorizado (en Curl) | Formato de Token incorrecto | Asegúrese de que el encabezado sea Authorization: Bot =BotToken=. Use el token de la pestaña Bot, no de la pestaña General. |
| Excepción de Trabajo: el contexto debe ser una instancia de BotContext | Carga útil incorrecta | Asegúrese de estar actualizado, esto se solucionó en FIX: Discord Bot crash due to missing BotContext in PersonaReplier by devtekve · Pull Request #36429 · discourse/discourse · GitHub |




