Kit de construcción para Discord Bot 🤖

De acuerdo. Es una lástima, ya que acabo de implementar los hilos en los canales de soporte de nuestro Discord para tener una mejor visión general de los casos de soporte. Y no estoy seguro de que realmente lo consiga, pero afortunadamente hay otras ventajas.

¿Tenéis una fecha estimada para la API y una idea de cuánto costaría implementar la función?

¡Gracias!

/k

2 Me gusta

Recientemente hice un seguimiento y ha estado en desarrollo por algún tiempo. Volveré a hacer un seguimiento y te responderé, pero ten cuidado, la última vez me dijeron “se hará cuando se haga”… el problema con el código abierto es a menudo la falta de una buena manera de dirigir los niveles apropiados de financiación comunitaria (o la falta de ella) para ayudar con el enfoque y la priorización… ya veremos…

Por mi parte, tendría que ver la implementación final para estimar el esfuerzo.

El desafío podría ser que, si bien es sencillo copiar mensajes, mantener los Hilos sincronizados con los Temas puede requerir algún tipo de mapeo mantenido en Discourse, por ejemplo, un campo o tabla personalizada que mapee los Hilos de Discord con los Temas de Discourse, de modo que cuando se agregue un nuevo mensaje a un Hilo, se sepa dónde colocarlo en Discourse.

¿Puedes explicar con más detalle la funcionalidad/comportamiento exacto que buscas?

2 Me gusta

Sí, eso apesta depender de algo que no puedes influir.

Mi idea está muy inspirada en el artículo y la discusión en el blog de Discourse sobre lo bien que Discord y Discourse se complementan. Cuando comenzamos nuestro servidor de Discord hace casi dos meses, no sabíamos realmente cómo evolucionaría y cómo afectaría a nuestro foro de Discourse existente (pero apenas configurado), pero parece que la gente todavía lo usa, así como nuestro Discord, para hacer preguntas de soporte técnico (estoy con el proyecto FOSS CrowdSec). Así que, básicamente, estoy completamente de acuerdo con la idea de usar Discourse como una memoria a más largo plazo y sincronizar los hilos de Discord con Discourse bajo temas que coincidan con los canales de Discord (y viceversa). Tal como lo veo, se puede hacer de manera mucho más efectiva (por ejemplo, automatizada) utilizando hilos.

Como dije, recientemente he impuesto hilos en Discord, lo que significa que no siempre es muy fácil tener una visión general de los hilos para aquellos de nuestros desarrolladores que están asignados al soporte de usuarios. Por lo tanto, quiero usar la sincronización con Discourse también como una buena manera para que se mantengan actualizados sobre las preguntas a responder sin verse demasiado absorbidos por el parloteo de Discord.

¿Tiene sentido? ¿Y hay alguna otra forma de lograr esto en un plazo más corto, tal vez?

2 Me gusta

¡Hola @merefield!

Me pongo en contacto contigo aquí porque creo que mi problema de GitHub no fue visto, y pienso que este es el mejor lugar.

image

Hemos estado recibiendo un error que hemos rastreado hasta el plugin del bot de Discord. La imagen de arriba muestra el error del elemento de inspección, pero cualquier usuario que envía un mensaje privado también recibe un error visual de “Error 500” cuando se envía su mensaje privado. El mensaje privado se envía correctamente, pero este error hace que parezca lo contrario. Después de deshabilitar el plugin, el problema ya no existe.

Estoy bastante seguro de que el problema proviene de /lib/discourse_event_handlers.rb. Supongo que un mensaje privado está activando el evento de Discourse post_created, lo que hace que intente acceder a la categoría de la publicación a través de posted_category = post.topic.category.id, lo que causa el error.

Espero que esto ayude y que se pueda resolver pronto. Gracias.

2 Me gusta

Gracias por el informe. Suena bastante bien. Quizás tenga la oportunidad de revisarlo esta semana…

2 Me gusta

¡Fantástico, gracias! Estaremos atentos a la actualización. :+1:

2 Me gusta

Tengo mucho trabajo con clientes en este momento, así que esto podría no revisarse en un tiempo.

Mientras tanto, la solicitud de extracción (PR) ha sido aceptada.

En general, agradecería más contribuciones de la comunidad a los complementos gratuitos.

2 Me gusta

Estoy bastante ocupado en este momento, pero he implementado lo que creo que es una solución:

FIX: exclude private messages from bot event considerations · merefield/discourse-discord-bot@82b2109 (github.com)

Parece que ahora funciona y el temido error 500 en los mensajes privados ha desaparecido…

2 Me gusta

¡Oh, eso es maravilloso y reemplaza Discord Chat!

¿Debería leer los nombres de las “slugs” en Discourse o solo los títulos?

1 me gusta

Discord no se gestiona por slugs de la misma manera, así que, si no me equivoco, son títulos.

2 Me gusta

Hola, no sé si esto se ha preguntado antes, pero ¿las credenciales de OAuth deben ser las mismas que las de la aplicación? Porque ahora mismo estamos utilizando otra integración de sincronización de Discord y los campos de OAuth ya están rellenados. Gracias.

1 me gusta

Este plugin es compatible con la solución oficial de inicio de sesión social en el núcleo. El bot necesita un token de una aplicación de Discord autorizada. El inicio de sesión social permite al plugin identificar al mismo usuario en ambas plataformas.

2 Me gusta

¡Gracias por la respuesta! Depuraré un poco más para ver qué me falta en la configuración.

2 Me gusta

¡No creo que necesite ser la misma aplicación de Discord, pero inténtalo!

2 Me gusta

¡Hola!\nBuscando en el foro una forma de dar a los usuarios de Discourse un nivel de confianza diferente basado en una cuenta de Discord, llegué aquí.\n\nYa tenemos una comunidad bastante activa en Discord y hemos incorporado Discourse recientemente para discusiones más organizadas.\n\nEstoy buscando una solución que funcione de la siguiente manera. Un miembro que inicia sesión con su cuenta de Discord y tiene un rol específico en Discord recibe automáticamente un Nivel de Confianza 1 en Discourse.\n\n¿Sería este Bot Kit el punto de partida adecuado para dicha implementación?\n\nGracias

1 me gusta

Este bot, hasta donde sé, es “unidireccional” de Discourse a Discord. No hay funciones que hagan lo contrario que estén integradas.

Personalmente, creo que te resultaría un poco más fácil lograr esto con código externo que observe el webhook de eventos de usuario de tu instalación de Discourse.

Evento webhook saliente → Obtener ID de usuario de Discord de la base de datos de Discourse (requiere usar autenticación de Discord) → Obtener roles usando discord.js, .py, etc. → Asignar rol con solicitud de API de Discourse

Para obtener el ID de Discord, necesitas usar el plugin Data Explorer y crear la siguiente consulta:

-- [params]
-- string :user
SELECT u.username, u.id, a.user_id, a.provider_name, a.provider_uid
FROM users u
JOIN user_associated_accounts a on a.user_id = u.id
WHERE u.username = :user

Luego puedes consultar la documentación del plugin Data Explorer y ejecutar esa consulta con una solicitud de API para obtener el ID.

Espero que esto ayude un poco.

1 me gusta

Si bien esto es cierto para la sincronización de roles, por lo demás no es correcto.

Del OP:

Así que hay mucho comportamiento de Discord → Discourse y está lejos de ser solo un bot de “sincronización de roles”.

Como siempre, se aceptan PR para cualquier funcionalidad adicional útil en general. Sería bueno tener algunas adiciones de la comunidad. :eyes:

4 Me gusta

Gracias por esta publicación @merefield

¿Podría obtener tu Discord? Me gustaría hacerte algunas preguntas si está bien.

Para mantener el conocimiento abierto e indexado para todos, probablemente sea mejor hacer las preguntas aquí. Discord es un agujero negro para la información. Las cosas entran y luego nunca se vuelven a encontrar :slight_smile: Y, por lo demás, también tenemos chat aquí en Discourse.

1 me gusta

Hola Kene, si no es de naturaleza comercial, agradecería que hicieras tus preguntas aquí para que la comunidad pueda beneficiarse de ellas (o incluso responderlas).

3 Me gusta