Confbot Open source. Hace un tiempo comencé a desarrollar… – Telegram Group

Confbot Open source

Hace un tiempo comencé a desarrollar confobot, que era un bot de telegram que permitía crear conferencias sobre esta plataforma. Digo permitía porque actualmente el bot está descontinuado y ya no está en producción. Después de que el proyecto fue cerrado definitivamente, me llegaron algunas solicitudes de que liberara el código fuente del proyecto. Algo que me pareció genial, porque era como darle una nueva oportunidad al proyecto, pues ahora puede servir como material de estudio y quizás de inspiración para otros desarrolladores.

El código que verán en los repositorios fue lo último que estuvo en producción, no hay nada de maquillaje. Lo que significa que quizás vean en el código cosas que se pudieron hacer mejor, pero como todo proyecto hay cosas que se tuvo que hacer sobre la marcha y en algunos casos no fueron las mejores decisiones.

¿Qué hacía el bot?

Confbot era un bot de telegram que permitía crear y compartir conferencias usando telegram. Una conferencia estaba formada por varios slides ordenados y un slide es una imagen unido a un mensaje de voz. Lo que permitía crear la experiencia de ver una presentación pero usando telegram como soporte. Además se podía crear conferencias solamente con imágenes, útiles para dar conferencias en tiempo real en grupos y canales.

Aplicaciones que forman el sistema.

El sistema está formado por dos aplicaciones, el bot que es el que interactúa con telegram y confbot que es el backend donde está la lógica de negocio. Los dos proyectos están libre en github y puedes ver el código fuente aquí.

  • Bot https://github.com/confbot-telegram-conferences/bot
  • confbot https://github.com/confbot-telegram-conferences/confbot

Las dos aplicaciones están configuradas para usar Docker, lo que facilita el proceso de instalación y puesta en marcha. Además si utilizas vscode, podrás encontrar la carpeta .devcontainer con la configuración necesaria para este IDE.

Bot

La aplicación Bot es la encargada de servir de interfaz con telegram y para hacerlo utiliza la librería python-telegram-bot. Además utiliza mongodb para guardar datos temporales y evitar acceder constantemente al backend.

Inicialmente se pretendía dar soporte para varias plataformas de chat, pero con el tiempo esto fue muy poco productivo. Por esta razón podrás ver en el código dos formas diferentes para interactuar con telegram.

En la carpeta handlers está el código legacy, que era mantenido para dar soporte a algunas de las funcionalidades que tiene el bot, pero poco a poco se iba desarrollando una nueva arquitectura en la carpeta handlers2. Por lo tanto cuando sea analizado el código, debe tener en cuenta que el objetivo era eliminar en un futuro la carpeta handlers.

Otras de las cuestiones que estaba planificado era eliminar esta aplicación. Con el tiempo me di cuenta que era más factible hacer la integración con telegram directamente en el backend. Así que el roadmap que se tenía era.

  • Primero implementar toda la lógica con handler2.
  • Borrar por completo handlers
  • Pasar todo el código para backend pero ya con la nueva arquitectura.
  • Finalmente eliminar la aplicación bot.

Esto hubiera dado más libertad en el código y poder responder de forma más efectiva a los nuevos requerimientos.

Backend

El backend es una aplicación desarrollada en django. Realmente no tiene nada de especial. Utiliza el stack característicos de las aplicaciones de este tipo.

Como lenguaje de programación se utiliza python. Fue escogido por el rendimiento que tiene para crear sistemas de este tipo. Además en un futuro se deseaba incorporar características de inteligencia artificial y python es el lenguaje principal para este tipo de tecnologías.

Para el backend se utiliza el framework Diango. Es el framework más maduro sobre python. Tiene una amplia documentación y muchas características que permiten tener una gran velocidad en el desarrollo de sistemas.

Como gestor de base de datos se utiliza postgresql. Es el gestor de base de datos que se utiliza con mayor frecuencia en combinación con django.

Redis es fundamentalmente usado como broker para gestionar las tareas asíncronas. Se usa en combinación con celery.

Celery es la tecnología para gestionar las tareas asíncronas. El uso de una tecnología como esta permite descargar procesamiento de la aplicación principal y es posible crear varios workers.

Además de los workers existen dos aplicaciones más que se usan en conjunto.

Flower: Es una aplicación web que permite visualizar los procesos que están corriendo en celery.

Beat: Permite crear un scheduler para crear operaciones periódicas.

Conclusiones

Todo proyecto que comienza puede fracasar por varias razones. En confbot creo que el problema fundamental fue que se hizo muy complicado la vía para crear las conferencias. Visualizar conferencias era muy sencillo pero no así la creación. Otra de las cosa que se quizo hacer es un frontend que tuviera la lógica para gestionar las conferencias y dejar el bot solo para visualizarlas.

A estas alturas del proyecto, solo espero que el código fuente sirva para inspirar otros desarrolladores y sea una fuente de información para ver cómo implementar un bot en telegram.

Ten articles before and after

SupraPartners #84 — SupraOracles partners with iMe Labs to enable token transfers via Telegram – Telegram Group

Crypto Bot Binance + Telegram. Write your own alert bot for any type… – Telegram Group

Monitoring Ethereum Wallets with Python & Telegram – Telegram Group

How I made +25% in few hours with the help of trading bot! – Telegram Group

How Telegram Makes Money? Telegrams New Plan to Generate Cash – Telegram Group

How to enable comments in Telegram channel – Telegram Group

TON history. Telegram’s blockchain project, the TON… – Telegram Group

How to install Telegram on Ubuntu 20.04 – Telegram Group

Как закрепить сообщение в Телеграм. Что нужно сделать? – Telegram Group

Digital Privacy: A Myth or Reality..? – Telegram Group