Discord Sync: sincronizar un foro de Discourse con un servidor de Discord

:warning: Este plugin es automático; no tiene ningún comando. Si estás buscando un marco genérico para bots de Discord, consulta el kit de construcción de bots de @merefield aquí, en el que se basó este plugin.

Discord Sync Sincroniza un foro Discourse con un servidor de Discord :discourse:

Este plugin permite sincronizar ciertos elementos relacionados con usuarios entre una instancia de foro Discourse y un servidor de Discord. Creará un Bot de Discord para gestionar todos los permisos y activar ciertas acciones en el servidor.

Características

  • Sincronizar grupos de Discourse con roles de Discord
    Gestionará automáticamente los roles en el servidor de Discord basándose en los grupos a los que un usuario tiene acceso en Discourse.

    • Rol Verificado
      Puedes agregar un “rol verificado” que se otorgará a todos los usuarios de Discord que hayan vinculado una cuenta de Discord.

    • Roles Seguros
      Dado que este plugin forzará que los roles en Discord sean los mismos que los grupos en Discourse, puedes establecer una lista de roles que el bot ignorará y que podrás gestionar manualmente en el servidor de Discord.

  • Sincronizar nombre de usuario de Discourse con apodo de Discord
    Si deseas reconocer a los usuarios por su nombre de usuario en el foro, puedes obligarlos a tener el mismo apodo en el servidor de Discord que el nombre de usuario que tienen en Discourse.

Activadores

El plugin ejecutará una sincronización completa de Discourse a Discord (apodo y roles) en los siguientes casos:

  • Discourse
    • Se agrega un usuario a un grupo
    • Se elimina un usuario de un grupo
    • Se actualiza el perfil del usuario
      Destinado a la sincronización de nombre de usuario-apodo
    • El usuario se autentica
      Solo se ejecutará si el proveedor de autenticación es Discord, para asegurar que se ejecute una primera sincronización justo después de vincular las cuentas
  • Discord
    • Un usuario se une a un servidor de Discord
      Buscará en la base de datos un usuario con el ID de Discord proporcionado y luego ejecutará el trabajo de sincronización

Instalación

:exclamation: Este plugin depende de Discord OAuth2 para identificar y vincular cuentas de Discourse-Discord. Si no deseas permitir que los usuarios inicien sesión con Discord, pero deseas mantener la vinculación de cuentas, consulta la solución a este tema.

Prerrequisitos

Este plugin requiere libsodium (requerido por la gema Ruby de Discord). Para instalarlo, modifica tu archivo .yml y agrega el siguiente código:

hooks:
    before_code:
       - exec:
              cmd:
                - apt-get update
                - apt-get install -y libsodium-dev

Pasos de instalación

  1. Sigue la guía estándar en Cómo instalar un plugin con la URL de este repositorio: https://github.com/barreeeiroo/discourse-discord-sync.git
  2. Sigue esta guía para configurar el inicio de sesión con Discord en tu instancia de Discourse.
  3. En el portal de desarrolladores de Discord, ve a Bot y agrégalo a tu servidor. Asegúrate de otorgarle el rol más alto posible.
  4. En Discourse, en Configuración del plugin, establece discord sync token con el token del Bot que aparece en el paso anterior.

Opciones de configuración

  • discord sync enabled: Habilitar o deshabilitar la integración
  • discord sync token: Token del bot de Discord
  • discord sync prefix: Prefijo para comandos (solo !ping por ahora)
  • discord sync admin channel id: Canal para publicar mensajes de registro (cambios de apodo, cambios de rol)
  • discord sync username: Si es verdadero, sincronizará todos los apodos del servidor de Discord con su nombre de usuario en Discourse
  • discord sync verified role: Rol a agregar a todos los usuarios que tienen una cuenta de Discourse
  • discord sync safe roles: Lista de roles que el bot ignorará y marcará como otorgados manualmente en Discord

Cómo hacerlo

Para vincular cuentas, si permites que los usuarios se autenticen con Discord, solo deben usar ese proveedor. Si no, deberán ir a Preferencias de cuenta, desplazarse hacia abajo hasta Cuentas asociadas y hacer clic en Conectar en la fila de Discord.

Demo en vivo

Actualmente estamos utilizando este plugin en nuestra instancia de Discourse en Kodular Community, con el servidor de Discord en kodul.ar/discord:

Reconocimiento

  • Discourse Bot, creado por @merefield
    Muchas gracias a Robert por proporcionar el esqueleto de este plugin. Sin duda ha ayudado a establecer la base de todo este plugin, permitiendo ejecutar un bot de Discord en una instancia de Discourse (y felicitaciones por su truco para instalar libsodium!).

  • Discourse Discord Sync, creado por @angus
    Una alternativa para sincronizar niveles de confianza con roles de Discord sin necesidad de ningún bot.

  • Login with Discord, creado por el equipo de Discourse
    Este plugin no sería posible sin la integración de Discord OAuth2 (anteriormente un plugin), para vincular ambas cuentas de Discourse y Discord.

  • discordrb
    Este plugin depende de la gema discordrb, que permite conectarse a la API de Discord utilizando Ruby.

29 Me gusta

¡Esto es realmente genial! Yo soy más fan de Telegram, pero ¡Discord también es genial! Siento que Telegram combinaría muy bien con Discourse, ya que ambos son proyectos de código abierto muy conocidos centrados en la comunicación.

Sería genial si tuviera una función de publicación cruzada. Si alguien dice algo en el chat de Discord, se crearía una respuesta en un hilo específico de Discord conocido como “hilo de sala de chat”. De esta manera, tu sitio web de Discourse obtendría un impulso en SEO gracias a todo el nuevo contenido dentro del hilo del chat.

4 Me gusta

También me gusta mucho Telegram, y lo estábamos usando con un grupo de chat público. Pero hace unos días cambiamos a Discord, porque teníamos más de 1.000 miembros y es bastante difícil moderar un grupo tan grande. Fue fácil hacerlo con Discord gracias a su sistema de roles.

4 Me gusta

¡Buen trabajo! :slight_smile:

Además del bot de Discord de @merefield, también existe un plugin de sincronización entre roles de Discord y grupos de Discourse (por ejemplo, sincronizar el nivel de confianza 3 con un rol de Discord) sin necesidad de un bot, solo OAuth2, aquí:

5 Me gusta

Esto sincroniza Discourse → Discord. Sin embargo, confiamos más en nuestros roles de Discord que en los grupos de Discourse para identificar los tipos de partes interesadas, por lo que sería genial si este plugin también pudiera realizar una sincronización de Discord → Discourse; es decir, agregar usuarios de Discourse a grupos según sus roles de Discord, agregar insignias a usuarios de Discourse según sus roles de Discord, cambiar el nombre de usuario de Discourse para que coincida con el nombre de usuario de Discord (no al revés), etc.

1 me gusta

¿Sería posible configurarlo para que la sincronización se realice en sentido inverso? Es decir, sincronizar roles desde Discord hacia los grupos de Discourse, apodos, etc.

Nosotros gestionamos los roles y demás desde Discord y preferiríamos enviarlos a Discourse.

2 Me gusta

Si encuentras algo así, por favor házmelo saber.

Esto se ve realmente genial. Lo único es: ¿cómo se empareja con el grupo en Discord desde Discourse? ¿Es únicamente por nombre? De ser así, ¿podrías permitirnos definir qué grupo corresponde a qué rol utilizando el ID de rol de Discord? Si esa no es una opción, ¿crees que podrías añadir una lista blanca de roles? Solo tengo unos pocos roles con grupos en Discourse, pero utilizo muchos roles en Discord.

1 me gusta

Esta funcionalidad en particular es muy importante para nosotros, ya que gestionamos todos nuestros roles a través de Discord. Sería genial contar con una forma de sincronizar los grupos de Discord con Discourse. Incluso si solo se «sincronizan» por nombre y las permisos, etc., se configuran posteriormente.

@barreeeiroo: ¿Tienes algún plan para algo así? ¿O tienes algún consejo sobre cómo proceder? La gestión manual de roles mediante «Safe Roles» es casi suficiente. Tengo roles que contienen espacios y, por lo tanto, no puedo agregarlos al campo Safe Roles. En lugar de actualizar manualmente todos mis roles en Discord y agregarlos sin espacios, ¿hay otra opción que pueda seguir?

Sería muy útil poder empujar los grupos de Discord a los grupos de Discourse, si es posible.

¡Gracias por tu trabajo en este plugin!

Edición: La propuesta de usar IDs de roles en lugar de nombres definitivamente resolvería muchos de mis problemas.

1 me gusta

Sigo teniendo problemas para configurarlo. Para los roles en Discord, ¿busca un ID o un nombre? Además, en lugar de “roles protegidos”, ¿podrías añadir la opción para que pueda sincronizar solo roles específicos?

No conozco Ruby, de lo contrario ofrecería mi ayuda. Probablemente aprenderé lo básico o simplemente implementaré algo a través de la API en Java.

Encontré mi problema, tenía el nombre del canal de administración en lugar de su id. Ahora solo tengo que hacer algunas comprobaciones de permisos/roles para ver por qué en realidad no sucede nada.

1 me gusta

Solo quería mencionar: he creado la inversa de este plugin, que sincroniza los roles de Discord con los grupos de Discourse: https://www.youtube.com/watch?v=C5paAvTYty4

5 Me gusta

¿Hay alguna forma de sincronizar los roles de Discord con Discourse, en lugar de sincronizar los roles de Discourse con Discord?

¿Ese es el propósito de este plugin? ¿Está roto? También échale un vistazo a mi plugin de bot enlazado en el OP que realiza la sincronización de Discourse a Discord (aunque usando comandos de bot).

2 Me gusta

Todos los plugins aquí, otorgan los roles que tienes en Discourse a tu cuenta de Discord. No otorga tus roles de Discord a tu cuenta de Discourse.

¿Es eso lo opuesto a tu pregunta original?

Creo que el plugin de @spirobel hace eso.

2 Me gusta

No, es un ejemplo si tienes “Community Moderator” en Discourse, cambiará tu rol de Discord.
Pero si tienes “Community Moderator” en Discord, no cambiará tu rol en Discourse.

2 Me gusta

Creo que puede que hayas pasado por alto a qué me refería: Discord Sync: sync a Discourse forum with a Discord server - #17 by spirobel

Te toca a ti @spirobel

4 Me gusta

No me di cuenta, su plugin es un plugin hecho a medida por 400 USD.

1 me gusta

¿De verdad lo está vendiendo por 400$? Eso es ridículo.

1 me gusta