# Kit de construcción para Discord Bot 🤖

**URL:** https://meta.discourse.org/t/discord-bot-construction-kit/122530
**Category:** Plugin
**Tags:** pavilion
**Created:** [10 Julio, 2019 08:29 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530 "2019-07-10T08:29:26Z")
**Posts on this page:** 20
**Page:** 2

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [17 Septiembre, 2019 13:13 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/24 "2019-09-17T13:13:58Z")

</div>

¡Ups! Borré el enlace incorrecto del primer mensaje. (Había dos plugins; debería haber eliminado el de OAuth, pero en su lugar borré el enlace al bot).

Desinstala ese plugin lo antes posible, ya que Core ahora admite Discord OAuth de forma nativa.

El plugin del bot es ESTE:

> **[GitHub - merefield/discourse-discord-bot: A Discord bot that runs on your Discourse server...](https://github.com/merefield/discourse-discord-bot)**
>
> A Discord bot that runs on your Discourse server to link the two servers.

He actualizado el primer mensaje en consecuencia. ¡Lo siento mucho!

---

<div class="post-metadata">

### Author: ![Valiantiam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/valiantiam/32/164562_2.png) [@Valiantiam](https://meta.discourse.org/u/Valiantiam)
#### Post date: [21 Noviembre, 2019 23:03 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/26 "2019-11-21T23:03:51Z")

</div>

¿Sabemos cuál podría ser el estado de la actualización automática de este plugin para los usuarios en el momento en que se unen a un grupo, en lugar de sincronizarlos manualmente? ¿Y también una forma de indicar qué grupos o roles deben sincronizarse entre sí, en lugar de que el plugin tome el control o cree los roles por sí mismo?

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [22 Noviembre, 2019 08:23 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/27 "2019-11-22T08:23:40Z")

</div>

Es la primera vez que se solicita algo así, por lo que, como imaginarás, ni siquiera está en la lista de espera, por así decirlo.

> [@Valiantiam](#):
>
> ¿Actualizar automáticamente a los usuarios en el momento en que se unen a un grupo, en lugar de sincronizarlos manualmente?

Eso sería bastante complicado, ya que el bot se ejecuta en un hilo discreto. Tendrías que agregar un método para enviar mensajes al bot y asegurarte de que esté escuchando la solicitud. Un ejercicio interesante desde el punto de vista técnico, pero no trivial.

Alternativamente, podría ser mejor explorar una alternativa de llamada directa a la API en lugar de usar el bot. Entonces, tendrías que decidir si eso justifica su implementación en un plugin diferente basado en llamadas discretas, no en un bot.

> [@Valiantiam](#):
>
> ¿Y potencialmente una forma de indicar qué grupos/roles sincronizar juntos, en lugar de que el bot tome el control o cree los roles por sí mismo?

Esa no es una mala idea, pero ¿por qué necesitas que sean diferentes, por curiosidad?

Esto es más práctico.

PR aceptada. Lamentablemente, mi tiempo es muy limitado para trabajar en funciones significativas sin financiación.

---

<div class="post-metadata">

### Author: ![Valiantiam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/valiantiam/32/164562_2.png) [@Valiantiam](https://meta.discourse.org/u/Valiantiam)
#### Post date: [22 Noviembre, 2019 15:03 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/28 "2019-11-22T15:03:00Z")

</div>

Bueno, tal como está ahora, parece que basa los roles en el “nombre” en lugar del título. Esto significa que mis roles en Discord terminan con guiones y sin espacios, por ejemplo. Así que supongo que una solución alternativa sería basar los roles no en el nombre, sino en el nombre completo o en el título predeterminado.

Dicho esto, es posible que haya grupos en Discourse que no quiera sincronizar en absoluto con Discord.

Agradezco las respuestas 🙂

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [22 Noviembre, 2019 15:52 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/29 "2019-11-22T15:52:28Z")

</div>

> [@Valiantiam](#):
>
> Parece que basa los roles en el “nombre” en lugar del título. Esto significa que mis roles en Discord terminan con guiones y sin espacios, por ejemplo.

Esto es intencional para evitar depender de un campo de descripción que puede:

a) Contener espacios  
b) No ser único

(y generalmente es una idea terrible en informática)

Sin embargo, si existe una forma segura de mejorar esto, estoy todo oídos. Agradezco que no “se vea” muy bien 🙂

> [@Valiantiam](#):
>
> Dicho esto, potencialmente hay grupos en Discourse a los que no querría que se sincronizaran en absoluto con Discord.

El plugin definitivamente podría tener funcionalidad adicional añadida para desactivar la sincronización para grupos específicos, a discreción del administrador. Se aceptan PRs.

---

<div class="post-metadata">

### Author: ![Valiantiam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/valiantiam/32/164562_2.png) [@Valiantiam](https://meta.discourse.org/u/Valiantiam)
#### Post date: [22 Noviembre, 2019 15:57 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/30 "2019-11-22T15:57:46Z")

</div>

¿Podríamos tener al bot sincronizarse automáticamente a una hora programada mientras se explora un método de API? Algo como, verificar una vez cada hora, o 24, etc.?

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [22 Noviembre, 2019 16:00 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/31 "2019-11-22T16:00:56Z")

</div>

Creo que sería posible añadir una funcionalidad como ‘repetir esto de nuevo después de _x_ horas’ sin problemas.

El problema con eso es que se detendrá cada vez que el bot se apague (por ejemplo, al reiniciar).

El enfoque absolutamente mejor sería:

a) agregar una llamada API discreta conectada a un trabajo de Sidekiq a este plugin, o  
b) escribir un nuevo plugin que utilice llamadas API normales en lugar de un bot (e incorporar una sincronización por lotes en él).

Cualquiera de esas opciones requerirá patrocinio o una solicitud de extracción (PR).

---

<div class="post-metadata">

### Author: ![Valiantiam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/valiantiam/32/164562_2.png) [@Valiantiam](https://meta.discourse.org/u/Valiantiam)
#### Post date: [22 Noviembre, 2019 16:03 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/32 "2019-11-22T16:03:57Z")

</div>

Justo. Gracias por la ayuda.

---

<div class="post-metadata">

### Author: ![Zavan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/zavan/32/184367_2.png) [@Zavan](https://meta.discourse.org/u/Zavan)
#### Post date: [18 Junio, 2020 07:20 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/33 "2020-06-18T07:20:42Z")

</div>

Hola.

Estoy usando tu plugin actualmente y tengo todo en un punto funcional. Parece realmente bueno, ¡buen trabajo!

Sin embargo, tengo algunas preguntas: ahora que tengo todo funcionando, necesito que mis usuarios inicien sesión a través de Discord OAuth. Esto crea una nueva cuenta.

¿Cuál es la mejor manera de gestionar esto? ¿Necesito fusionar las cuentas nueva y antigua? Intenté hacerlo con mi cuenta de administrador y obtuve el error “No tienes permiso para ejecutar el comando discsync!” al intentar ejecutar manualmente !discsync.

Además, aún no ha copiado _ningún_ rol desde mi Discourse.

Para tu información, mi cuenta de Discord aparece en mis opciones como una cuenta asociada.

¡Gracias de antemano por tu ayuda!

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [18 Junio, 2020 09:26 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/34 "2020-06-18T09:26:00Z")

</div>

¡Gracias por tu interés en el plugin!

> [@Zavan](#):
>
> Sin embargo, tengo algunas preguntas: ahora que todo está funcionando, necesito que mis usuarios inicien sesión mediante OAuth de Discord. Esto crea una nueva cuenta.
> 
> ¿Cuál es la mejor manera de gestionar esto? ¿Necesito fusionar las cuentas nuevas y antiguas?

Esto no es una característica del plugin, es una función central. OAuth de Discord viene incluido con Discourse de forma predeterminada:

 ![image](https://global.discourse-cdn.com/meta/original/3X/c/8/c8934998790d9716e1fadb90a0095f4008677cdc.png)

La configuración anterior aparece independientemente de si agregas este plugin a tu Discourse.

Si inicias sesión con la cuenta de redes sociales, siempre que los correos electrónicos de registro coincidan, la cuenta debería ser reconocida y no se creará una nueva cuenta. Sin embargo, si el usuario se registró en Discord con un correo electrónico diferente al de Discourse, por supuesto, no hay forma de que el sistema sepa que es el mismo usuario, por lo que se creará una nueva cuenta.

> [@Zavan](#):
>
> Lo intenté con mi cuenta de administrador y obtuve el error “No tienes permiso para ejecutar el comando discsync!” al intentar ejecutar manualmente !discsync.

¿Tu cuenta de administrador en el servidor de Discord? ¿También autorizaste al bot?

¿Cuál es el resultado de `Ping!`?

---

<div class="post-metadata">

### Author: ![Zavan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/zavan/32/184367_2.png) [@Zavan](https://meta.discourse.org/u/Zavan)
#### Post date: [18 Junio, 2020 09:46 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/35 "2020-06-18T09:46:31Z")

</div>

> [@merefield](#):
>
> Esto no es una función del plugin, es una función central. Discord OAuth se incluye por defecto con Discourse:
> 
> ![image](https://global.discourse-cdn.com/meta/original/3X/c/8/c8934998790d9716e1fadb90a0095f4008677cdc.png)
> 
> Las configuraciones anteriores aparecen independientemente de si agregas este plugin a tu Discourse.

Coincido con eso. En el peor de los casos, puedo simplemente fusionar cuentas con correos electrónicos que no coinciden.

> [@merefield](#):
>
> > [@Zavan](#):
> >
> > Lo intenté con mi cuenta de administrador y obtuve el error «No tienes permiso para ejecutar el comando discsync!» al intentar ejecutar manualmente !discsync.
> 
> ¿Tu cuenta de administrador en el servidor de Discord? ¿También autorizaste al bot?
> 
> ¿Cuál es el resultado de `!Ping`?

Sí, es correcto. Soy el propietario de las instancias de Discord y Discourse. El resultado de “Ping!” es “Pong!”. Ningún rol ha sido migrado de Discourse a Discord.

El bot está en mi servidor de Discord y tiene privilegios de administrador. ¿Puedo aclarar qué quieres decir con «autorizar»?

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [18 Junio, 2020 09:47 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/36 "2020-06-18T09:47:59Z")

</div>

> [@merefield](#):
>
> Deberás autorizar al bot en el navegador, consulta [Discord Developer Portal](https://discordapp.com/developers/docs/topics/oauth2#bot-authorization-flow).
> 
> Una vez configurado el bot, copia el token. Más adelante, deberás ingresarlo en Discourse.

¿Has completado este paso? (solo verifico todos los requisitos previos; casi con seguridad ya lo has hecho).

---

<div class="post-metadata">

### Author: ![Zavan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/zavan/32/184367_2.png) [@Zavan](https://meta.discourse.org/u/Zavan)
#### Post date: [18 Junio, 2020 09:51 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/37 "2020-06-18T09:51:24Z")

</div>

Sí, tengo 🙂

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [18 Junio, 2020 09:52 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/38 "2020-06-18T09:52:34Z")

</div>

Mi corazonada es que tus derechos **o los del bot** en el servidor de Discord no están configurados correctamente de alguna manera. Solo estoy repasando este plugin mientras trabajo en docenas de ellos. ¡Mi último cambio en este fue hace un tiempo!

---

<div class="post-metadata">

### Author: ![Zavan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/zavan/32/184367_2.png) [@Zavan](https://meta.discourse.org/u/Zavan)
#### Post date: [18 Junio, 2020 09:54 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/39 "2020-06-18T09:54:59Z")

</div>

¡Roger! He hecho una verificación rápida de mi parte, así que para tu información, figuro como propietario del servidor y tengo derechos de administrador.

EDITA: ¿Podemos aclarar qué derechos requiere el bot? Actualmente figura como administrador (esto le fue otorgado a través de un rol y no mediante la invitación OAuth, sin embargo).

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [18 Junio, 2020 09:58 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/40 "2020-06-18T09:58:51Z")

</div>

Mi bot tiene esto:

 ![image](https://global.discourse-cdn.com/meta/original/3X/5/b/5b8e71fd71292f994ca75dad283f31a2579c8954.png)

 ![image](https://global.discourse-cdn.com/meta/original/3X/0/a/0abe23da0eec6217ce77d889152ad970f7bc54c8.png)

---

<div class="post-metadata">

### Author: ![Zavan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/zavan/32/184367_2.png) [@Zavan](https://meta.discourse.org/u/Zavan)
#### Post date: [18 Junio, 2020 10:05 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/43 "2020-06-18T10:05:23Z")

</div>

Aquí están los míos (lo siento, como soy un nuevo usuario aquí

 ![20200618_143242](https://global.discourse-cdn.com/meta/original/3X/7/9/79a9d256703f43e2d5aaa7c02edb8318d4fcd0e4.jpeg) necesito hacer 3 publicaciones…)

 ![Screenshot_20200618-143117_Discord](https://global.discourse-cdn.com/meta/original/3X/d/5/d56790c7eb3accaf1be5d12d0079bfa16f754e7a.jpeg)

 ![Screenshot_20200618-143146_Discord](https://global.discourse-cdn.com/meta/original/3X/4/4/44adbd27a7d1ce251cd4af63c70f7d7fb5a3aa12.jpeg)

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [18 Junio, 2020 11:47 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/44 "2020-06-18T11:47:18Z")

</div>

¿Podrías verificar los permisos del canal? Los permisos del canal en Discord anulan los permisos del servidor.

---

<div class="post-metadata">

### Author: ![Zavan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/zavan/32/184367_2.png) [@Zavan](https://meta.discourse.org/u/Zavan)
#### Post date: [18 Junio, 2020 12:02 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/45 "2020-06-18T12:02:16Z")

</div>

Sí, está bien en el canal. No hay permisos desactivados allí que impidan enviar o recibir mensajes.

Puede enviar ¡Pong!, y me indica que no tengo los permisos necesarios para ejecutar !discsync.

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [18 Junio, 2020 12:10 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/46 "2020-06-18T12:10:28Z")

</div>

> [@Zavan](#):
>
> Puede enviar ¡Pong!, y me indica que no tengo los permisos necesarios para ejecutar !discsync

OK, estoy intentando replicarlo, pero hasta ahora puedo ejecutar ambos comandos.

[Página anterior](https://meta.discourse.org/t/discord-bot-construction-kit/122530.md?page=1)

[Página siguiente](https://meta.discourse.org/t/discord-bot-construction-kit/122530.md?page=3)
