319 - Discord, docker y retos

PodcastPodcast

319 - Discord, docker y retos

Como montar una sencilla plataforma de preguntas y respuestas, utilizando la triada Discord, docker y retos para dinamizar un grupo.

1:25
-3:15

Hace ya algunas semanas que te vengo contando como he ido organizando todo esto de las donaciones al proyecto atareao.es. De esta forma, he pasado de tenerlo organizado en utilizando varios métodos a que quede en uno solo en buy me a coffee. Como de costumbre, no me podía quedar quieto, y quería darte a cambio de tu apoyo. Hasta el momento han sido los libros que he ido publicando, para compartirlos contigo. Sin embargo, aún así, para aquellos que apoyan de forma recurrente el podcast quería algo mas. Y esto ha venido de la mano de Discord que actualmente estoy disfrutando tanto. Por supuesto, esto tenía que quedar todo enlazado y lo he enlazado utilizando Discord, docker y retos.

Discord, docker y retos

Discord, docker y retos

Confesiones

Antes de nada, tengo que confesarte que no soy un usuario habitual de Discord. Por lo menos no lo era hasta recientemente. En este caso, fueron los amigos de [WinTablet.info]() los que me introdujeron en el propio Discord de WinTablet.info, lo que dio paso a un maravilloso mundo de luz y color.

Tampoco pienses que me prodigo mucho por Discord, lo cierto es que mas bien todo lo contrario. Paso muy de tarde en tarde, y sobretodo si se me requiere. Sin embargo, esto no quita a que me abriera a un nuevo mundo de opciones y posibilidades, de todo lo que se puede hacer allí.

Sobre los bots de Discord

Una vez descubiertas las posibilidades que ofrecía Discord, el siguiente paso, era descubrir los bots de Discord. Lamentablemente esto todavía no lo tengo estudiado. Simplemente he visto, por encima el API para ver las opciones y posibilidades que ofrece.

Pero, tampoco me hace falta de momento. Estaba buscando un producto mínimo viable, que me permitiera, centrar la comunidad de los miembros patrocinadores, y concentrarla en un único sitio, donde ofrecer algo mas.

Lo que si que he explorado, y con un éxito apabullante es la publicación en canales. Esto me permite hacer lo que buscaba aunando Discord, docker y retos. Lo cierto, es que me permite realizar publicaciones de forma muy sencilla. Simplemente un post a una url, y mensaje publicado. Además, lo tengo que hacer en formato markdown, ¿que mas se puede pedir?.

Así por ejemplo, si el texto que comparto lleva un enlace de YouTube, directamente se publica el visualizador de YouTube, con lo que puedes consumir el contenido directamente desde Discord, sin que tengas que salir a otra plataforma.

Mis miedos

Algo que realmente me tenía preocupado era el tener que utilizar otra plataforma. Y es que, si Telegram es desconocida para una gran parte de la población, imagina Discord. Entonces ¿Porque crear el grupo den Discord?. Por los canales.

Si te das cuenta, si sigues el podcast o el canal de YouTube, verás que publico de las mas diversas temáticas. Sin embargo, hay quien no está interesado en algún tema concreto. En ese caso ¿que tiene que hacer?.

En los grupos o canales de Telegram, no puedes seguir hilos. Sin embargo, en el caso de Discord, esto si que se puede hacer, porque los servidores están organizados en canales, lo que me permitirá crear canales por temáticas, de las mas diversas. Y tu participarás en las temáticas que masa te interesan. Así, por ejemplo puedes encontrar,

  • un canal de comandos de Linux. Un lugar donde descubrir nuevos comandos, e incluso conocer usos desconocidos para un comando,
  • imprescindible un canal de Bash. En concreto, orientado a los scripts en Bash, que tanto disfrute me está proporcionando últimamente,
  • por supuesto, y como no podía ser de otra manera, también un canal de Docker o mas bien de contenedores, para dar cabida, por supuesto también a Podman,
  • y para terminar, este producto mínimo viable, un canal de Vim, donde poder compartir, tus experiencias con este increíble editor.

La interacción

Sin embargo, no solo quería un nuevo medio de mensajería, quería algo interactivo, un medio que permitiera mas la interacción. Y es que, en los grupos de Telegram, hay quien no participa, porque prefiere estar a la escucha o incluso por miedo a intervenir, o por el miedo escénico. La cuestión era dar una posibilidad de intervenir, para que todos seamos mas participativos.

Esta parte es precisamente la parte de los retos. La tercera pata que constituye, el Discord, docker y retos. Se trata de publicar, de forma periódica retos. Retos, que inicialmente serán de Bash, para ir añadiendo mas partes con el paso de los tiempos, intercalando unos temas con otros, y para que cada uno participe en los que les interesae.

Se trata de retos, donde se publica una pregunta con diferentes respuestas, para que cada uno indique, la respuesta o respuestas correctas. Todas se publican en un mismo canal, el canal retos, donde solo es posible la interacción. Y esto es, precisamente una de las ventajas de Discord, que te permite un control exhaustivo de los permisos de los miembros, lo que permite crear este tipo de encuestas de forma muy sencilla.

Como está montado esto

Pues ya te puedes imaginar, por el título del podcast. Básicamente Discord, docker y retos. Es sencillo. Y sobre todo, es algo que puedes exportar a tus necesidades. Y como verás es tremendamente fácil.

Por un lado, se trata de una aplicación en Python, muy pero que muy sencilla. Que utiliza Flask para relacionarse con el mundo exterior. Esto me permite llamarla desde otras aplicaciones, o incluso de forma global, desde cualquier otro punto de internet. Toda una ventaja para dotarla de la máxima interactividad.

La aplicación en Python, y salvando el uso de Flask, no utiliza ningún framework. La relación con SQLite, que es la base de datos que utilizo para guardar los retos, está programada de cero. Y lo cierto, es que me ha gustado el resultado final. Realmente sencillo y simple, lo que me ha llevado a plantearme, migrarlo a las aplicaciones anteriores. Si le das un vistazo al repositorio de GitHub, verás que es muy sencilla de utilizar e implementar, con lo que podrás utilizar en tus proyectos de forma fácil, práctica y cómoda.

En la base de datos, he creado tres sencillas tablas para organizar toda la información,

  • la tabla de categorías, para poder organizar los retos por categorías,
  • una segunda tabla, la tabla principal, donde están los distintos retos. Pero solo la parte de la pregunta. También todo lo relacionado con la pregunta, es decir, si ya se ha publicado la pregunta, y lo mismo para conocer si se publicó la respuesta,
  • y por fin, una última parte, en la que se encuentran las respuestas. Porque como he indicado, cada pregunta puede tener una o varias respuestas. De esta forma, en cada una de las respuestas se indica si es correcta o no.

Así, utilizando croni, sobre el que hablé en un podcast anterior, de forma periódica, hago una llamada a este contenedor. Y publicará una respuesta, en caso de que quede pendiente una por publicar, y en otro caso, publicará una nueva pregunta. Aquí, solo es necesario, pasar un número identificador de la categoría que quiero publicar.

¿Porque Docker?

Solo queda la pregunta de porque utilizar Docker en este proyecto de Discord, docker y retos. Me refiero, por supuesto a la tecnología de contenedores y no tanto al producto concreto.

La cuestión creo que la he comentado en alguna que otra ocasión. La cuestión es que esto me permite realizar el desarrollo en local. Y el despliegue es tan sencillo como copiar un archivo docker-compose.yml, y particularizar la instalación concreto.

Conclusión

Y ¿porque te cuento todo esto?. Lo que me interesa transmitirte es que se trata de algo realmente sencillo, que no tiene gran complejidad, ni mucho menos. Que puedes hacer algo muy parecido con muy poco trabajo y con un resultado espectacular.

En el repositorio de GitHub tienes las bases para comenzar tu propio proyecto, y automatizar aquello que consideres, y disfrutar. Porque realmente con esto se disfruta.


Espero que te haya gustado este nuevo episodio del podcast. Si puedes, te agradecería una valoración en iVoox y/o en Apple Podcast.

Imagen de portada de Alexander Shatov

8 comentarios en “Discord, docker y retos

  1. Hoskar hace 3 semanas

    Gracias por el podcast. Yo soy uno de los pasivos en Telegram. Más de una vez me he quedado con ganas de hacer alguna pregunta, pero por mi nivel bastante limitado en estos temas, no me he atrevido al pensar que pudiese ser muy obvias para vosotros.
    Me voy a animar a entrar en Discord para seguir aprendiendo.

  2. atareao hace 3 semanas

    Hola Hoskar,
    No hay preguntas obvias, siempre surgen dudas. Pregunta, pregunta y pregunta. Yo muchas veces me he quedado con las ganas de preguntar algo y siempre me he arrepentido de no hacerlo.
    Si vienes a Discord serás bienvenido, por supuesto.
    Gracias

  3. Usanosco hace 3 semanas

    Hola, solo comentarte que el enlace a «buy me a coffee» está mal. Por cierto, el podcast esta fenomal y «arregla» el enlace que me interesaría meterme en el discord 🙂

    1. atareao hace 2 semanas

      Gracias por avisar… ya está arreglado. Saludos y gracias

  4. Heoft hace 2 semanas

    Muy interesante el podcast, como todos. He intentado buscar tu servidor en Discord pero no lo encuentro (soy nuevo en esa plataforma)… ¿Cómo puedo unirme en Discord?
    Gracias.

    1. atareao hace 2 semanas

      Discord es para aquellos que patrocinen atareao.es a través de buymeacoffe… en la opción de membresía.
      Gracias por interesarte.

  5. marc hace 2 semanas

    Hola Atareao, te has olvidado poner el enlace al discord tuyo, el enlace discord de WinTable es muy bonito pero me interesa entrar en el tuyo, o es que no he entendido nada, suele pasar, respondeme algo, thanks!

    1. atareao hace 2 semanas

      Hola Marc, no es que me haya olvidado. El Discord es para aquellos que patrocinan atareao.es a través de BuyMeaCoffee. Este enlace si que lo puedes encontrar
      Saludos y gracias por interesarte

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *