Kit de construcción para Discord Bot 🤖

¡Me encantaría invitarte a mi instancia! No sé si tu plugin registra algo en algún lugar; si te ayuda, puedo enviarte esos registros.

EDITA: Cuando autorizaste al bot, ¿qué permisos le asignaste allí?

1 me gusta

El bot necesita permisos de Administrador:

Debes conceder los permisos a través del navegador como se describe aquí (y en la publicación original):

algo como: https://discord.com/api/oauth2/authorize?client_id=YOURCLIENTID&scope=bot&permissions=8

Tu problema casi con seguridad está en el lado de Discord, ya que el servidor del bot de Discourse parece estar funcionando (lo has demostrado con el comando Ping!), por lo que los registros de Discourse no serán relevantes.

Acabo de volver a probar este plugin en la última versión de Discourse y todo funciona correctamente (actualicé un par de gems a una versión más moderna para garantizar la compatibilidad con otros plugins, pero esto no tiene relación con tu problema).

Sí, así que lo he vuelto a invitar un par de veces sin ningún cambio. Es un administrador, tiene el alcance de bot. Soy yo quien lo invita a Discord, soy el propietario del servidor de Discord. Simplemente no me reconoce y devuelve: “¡No tienes permiso para ejecutar el comando discsync!”

¡Estoy desconcertado, lamentablemente!

1 me gusta

¿Configuraste esto en la configuración de Discourse?:

2 Me gusta

¡Hurra! Parece que logré malformar el ID del grupo de administrador de alguna manera. ¡Parece que mi trabajo de copiar y pegar puede haber omitido un número…

Como pregunta de seguimiento, ahora estoy intentando asignar colores a las personas en Discord según su nivel de confianza en Discourse. Para que los niveles de confianza se copien, creo que el comando debería ser:

!discsync false, 0, true

¿Es esto correcto? Para mí devuelve lo siguiente:

EDITO: Se devuelve lo mismo si ejecuto el comando sin comas, es decir:

!discsync false 0 true

2 Me gusta

Aumenta tu nivel de visibilidad. Los grupos automatizados estándar tienen de forma predeterminada la visibilidad 1 (“Usuarios conectados”), por lo que si este valor es cero, excluyes los grupos automatizados predeterminados:

El valor cero solo incluirá los grupos visibles para todos, incluidos los usuarios anónimos.

3 Me gusta

Eso es, ya estoy listo. Muchas gracias, lo aprecio mucho.

¿Puedo ayudar a cambio escribiendo algo de lo que he aprendido en tu guía? Si no es posible, no hay problema; solo quiero devolver tu apoyo.

3 Me gusta

Eso es muy amable. Estaría encantado de que lo editaras. ¿Deberías poder hacerlo ya? Es un wiki.

También me ayudaste a refrescar mi memoria :slight_smile:

2 Me gusta

No necesito realmente la sincronización de roles, pero sería genial tener un bot de Discord que publique en canales específicos del servidor cuando se creen nuevos temas en el foro. ¿Hay algún plugin que pueda hacer eso?

1 me gusta

Sí, probablemente este plugin no sea la herramienta adecuada para eso. El bot está impulsado por tu Discourse y puede acceder a tus datos de Discourse (cuando se permite y se solicita mediante un comando), pero se ejecuta en un hilo separado, por lo que no recibirá señales de los eventos de Discourse.

Supongo que podría ser viable ampliarlo en algún momento, por ejemplo, para vigilar la creación de nuevos temas en una categoría específica. No es el mejor uso de esta arquitectura, pero se aceptan PRs.

Parece que necesitas investigar lo siguiente:

O

1 me gusta

Sí, investigué ambas opciones. La primera, Zapier, no es gratuita. Puedes crear hasta 5 Zaps gratuitos y estos son de un solo paso. Esto es exactamente lo que se dijo en ese hilo, por lo que la alternativa propuesta fue la integración discourse-chat-integration, que supuestamente es un plugin oficial. Creo que esta es la forma más cercana de hacer lo que quiero.

La última opción parece ser un plugin de feed RSS:

Actualización: Después de aprender a configurar correctamente las reglas y los webhooks, la integración de chat hace exactamente lo que quería. ¡Gracias!

4 Me gusta

¡Hola @merefield,

¡gracias de nuevo por contactarnos con este plugin!

He instalado todo tal como se describe en la documentación. Uso este comando: !discsync y todo parece estar bien para mí. :smiling_face_with_three_hearts:

Sin embargo, para algunos usuarios (no para todos), obtengo este error para todos sus grupos:

Discourse Sync:  [11/31] Agregando al miembro 'MaxMustermann' al grupo 'Member'
Discourse Sync:  ¡Parece que no tengo los permisos para hacer esto!
ERROR en el servidor XYZ (ID: 123123123123) para el comando ^add_role, método 'add_role' no definido para nil:NilClass

Otros usuarios sí pueden sincronizarse para el mismo grupo :thinking:

1 me gusta

Eso sugiere que tu provider_uid en Discourse no está configurado para ese usuario. Por favor, investiga.

Por cierto, buen trabajo configurando esto. ¡Es bastante complejo y no es para los débiles de corazón! :).

2 Me gusta

Ejecuté esta consulta en el plugin Knowledge Explorer:

SELECT *
FROM   user_associated_accounts  u 
WHERE  u.provider_name = 'discord' 

No puedo publicar el resultado por razones :smile:, pero verifiqué el provider_uid de cada usuario y todos tienen uno. ¿Hay algo más que pueda depurar?

1 me gusta

Entonces, el siguiente problema más probable es que el UID de Discord mapeado actualmente sea incorrecto.

Es decir, los datos en Discourse no se están mapeando a un UID válido en Discord.

Verifica manualmente el registro de este usuario en Discord y confirma que sea correcto.

2 Me gusta

Hola, puedo confirmar esto. El usuario tiene otro UID en Discourse que en Discord.

¿Cómo se puede reproducir este problema?

1 me gusta

¿Podrías eliminar la asociación y pedirle al usuario que la vuelva a crear asociando Discord nuevamente? Si vuelve a ocurrir, ¿hay algún error en el inicio de sesión social?

2 Me gusta

Hola,

Solo quería hacer un seguimiento. Hablé con las personas que tuvieron estos problemas y pudimos identificar el posible inconveniente.

El usuario se registró con su antigua cuenta de Discord, pero no se unió al servidor con ella. Por lo tanto, el bot de sincronización no pudo encontrar al usuario de Discord, supongo, y ocurrió un error.

2 Me gusta

Gracias por aclararlo. ¿Puedes confirmar cómo lo resolviste? ¿Eliminaste su asociación y luego lo hiciste volver a asociar?

1 me gusta

Eso es lo que hicimos. :blush:

2 Me gusta