Framework de código abierto para el desarrollo y manejo de bots de Telegram en Python
Python
API de Bots de Telegram
PostgreSQL
SQLite
MongoDB
Docker
Docker Compose
Linear tech_linear
Bash
Git
GitHub Actions

Descripción

Kamihi es un framework de código abierto para el desarrollo y manejo de bots de Telegram en Python. Siendo en un principio mi Trabajo de Fin de Grado, ha evolucionado más allá, y se utiliza activamente en empresas.

El framework intenta hacer más manejable el desarrollo de bots de Telegram en Python, abstrayendo en su mayor parte la complejidad de la API de Telegram y de sus wrappers (python-telegram-bot, pyrogram, telethon). Para ello, presenta una interfaz de programación simple que realiza el trabajo complicado por detrás.

Está pensado para desarrolladores con poca experiencia en Python y/o con la API de Telegram y sus muchas peculiaridades.

El objetivo es convertir este projecto en una parte activa del ecosistema de desarrollo de bots de Telegram, aunque en este momento está en fase beta.

Mi trabajo

Como único desarrollador y mantenedor de este proyecto, mi trabajo engloba todos los aspectos de desarrollo y manejo del proyecto: programación, testing, documentación, CI/CD…

Mi foco principal es el diseño de la interfaz de programación del framework, que intento que sea muy intuitiva, fácil de utilizar, e incluso “mágica”, sin por ello cerrar la posibilidad de utilizar las funciones más avanzadas que ofrece la API de Telegram.

Los usuarios que conozco no son programadores expertos, y el framework está pensado y cuidadosamente diseñado para que puedan centrarse en su lógica de negocio, construyendo el bot que necesiten lo más rápido posible.

También he puesto bastante esfuerzo en el framework de pruebas. Con ayuda de contenedores, las pruebas funcionales pueden ejecutar y verificar un proyecto entero hecho con el framework en exactamente el mismo entorno utilizado en producción. Se puede verificar el envío de mensajes automáticamente y directamente en los servidores de Telegram, así como el resto de componentes y funcionalidades del framework (interfaz web de administrador, CLI, registros…).

Lo que aprendí

  • Como estructurar y desarrollar un framework moderno y complejo de Python
  • Técnicas para mejorar la experiencia de cara al desarrollador mediante elecciones en interfaz de programación, herramientas como CLIs y auto-configuración
  • Cómo realizar un sistema de pruebas funcionales complejo orquestrando entornos efímeros
  • A manejar el ciclo de vida completo de un paquete de código abierto de Python (CI/CD, versionado, publicación a PyPI…)