589 - Telegram Local Bot Api Server con Docker es brutal
Exprimiendo los bots de #telegram #con la #api en #docker y con #python. Las posibilidades del Local Bot API Server son simplemente brutales.
Tengo que confesarte que el título es impostado, porque la realidad es que Telegram es brutal con o sin Docker, las cosas son como son. De la misma manera, también te tengo que confesar que estaba muy equivocado con las posibilidades de los bots de Telegram. Y es que por fin he probado un Local Bot Api Server, algo que hasta la fecha me había negado a hacer, no se porque tipo de razón, pero que realmente lleva esto los bots de Telegram a otro nivel. Si como lo has oído, a un nivel superior, donde las posibilidades que tienes se elevan a la enésima potencia. Así como lo estás escuchando. Y es que conforme estoy escribiendo el guión de este podcast me voy emocionando.
Telegram Local Bot Api Server con Docker es brutal
Autoalojando tu podcast
Como te conté en un episodio anterior del podcast, llevo unos días trabajando en una proyecto para facilitar la creación de un podcast con su correspondiente página web, e incluso la publicación en redes sociales. Y tal y como te conté, todo partió de una conversación en Mastodon entre Juanjo del podcast eDucando Geek y Alberto del podcast Papa Friki.
El objeto del proyecto es, partiendo de los audios que subes a Archive.org, crear un podcast, con su página web y la publicación en redes sociales. Y por supuesto, el objetivo es hacerlo lo mas sencillo posible.
iauploader
Hoy, puedo decirte que este objetivo está conseguido, y puedes encontrar la parte del código en [https://github.com/atareao/iapodcast]. Sin embargo, hacía falta una pieza adicional. Una herramienta que permitiera migrar desde cualquier sitio a Archive.org.
Este segundo punto también está resuelto, y el código también lo puedes encontrar en iauploader. Esta herramienta es muy sencilla, y no es ni mas ni menos que un contenedor docker, que con los datos necesarios es capaz de subir todos los audios de un feed a Archive.org.
Por supuesto que los datos necesarios, son los mínimos. Básicamente, tus credenciales de Archive.org, el feed el cual quieres sincronizar y algún dato relativo al nuevo podcast.
archivebot
Pero me quedaba un punto adicional, algo que conté en el episodio anterior, y es la creación de los episodios del podcast en movilidad. Para esto te conté algunas ideas. En particular, la que mas me gustaba era la posibilidad de utilizar Telegram para esto.
Sin embargo, en las primeras investigaciones, parecía que esto no iba a ser posible, por la limitación de descarga de los bots de Telegram, que se limita a 20 MB. Esto implicaba que los podcast, solo podían tener una duración de 20 minutos, o mas, dependiendo de la calidad de grabación.
Sin embargo, algo que, desde los inicios de mi relación con Telegram y sus bots, he ido dejando de lado, ha sido lo que finalmente ha resuelto todo el problema y me ha permitido avanzar y concluir el proyecto con éxito. Me refiero en concreto al Local Bot Api Server. Y es que utilizando el Local Bot Api Server, no tengo ninguna limitación en cuanto al tamaño de los archivos. La limitación viene del lado del usuario y no del servidor.
Local Bot Api Server
Pero ¿Que es el Local Bot Api Server?. Cuando implementas un bot en Telegram, este se apoya en los servidores de Telegram. Sin embargo, es posible, que esto se haga en tus propio servidor. Tu puedes ejecutar tu propio servidor de forma local y enviar las peticiones de tu bot a ese servidor en lugar de enviarlas como haces siempre a https://api.telegram.org
. Y es justo esta la solución que buscaba, porque la limitación de las descargas desaparece. Así, en este caso el bot tiene las siguientes capacidades,
- Las descargas de archivos no tienen límite
- Vas a poder subir archivos de hasta 2 GB.
- Puedes subir archivos utilizando el path local
- Aumentan las posibilidades del webhook, puedes utilizar HTTP para el webhook.
- Además, puedes utilizar cualquier IP local para el webhook
- Es posible aumentar el número de conexiones por encima de 100000
- Tienes acceso a la ruta local de los archivos que necesitas para las descargas.
Al ver estas opciones, caí en que esta era la solución, no tengo límite en las descargas de archivos, y esto es precisamente lo que andaba buscando. Pero, además tenía otras ventajas realmente interesantes sobre los webhook.
Tengo que confesarte, que por el momento, no estoy utilizando la opción de webhook, que es la que mas me interesa. Hasta la fecha, mayoritariamente, es la que he venido utilizando, sin embargo, en este proyecto estoy utilizando el pooling contra el Local Bot Api Server. Y, por el momento, lo voy seguir dejando de esta manera, hasta que el bot tenga mas rodaje.
Compartir volumen
La cuestión era poder acceder desde archivebot a local-bot-api-server, y para ello, la solución era tan sencilla como compartir el volumen. Simplemente utilizar este docker-compose.yml
,
services:
telegram-bot-api:
image: atareao/telegram-bot-api
container_name: telegram-bot-api
init: true
restart: always
volumes:
- data:/var/lib/telegram-bot-api
environment:
TELEGRAM_API_ID: ${TELEGRAM_API_ID}
TELEGRAM_API_HASH: ${TELEGRAM_API_HASH}
TELEGRAM_LOCAL: true
archivebot:
image: atareao/archivebot
container_name: archivebot
init: true
restart: always
environment:
TOKEN: ${TOKEN}
CHAT_ID: ${CHAT_ID}
THREAD_ID: ${THREAD_ID}
IA_ACCESS: ${IA_ACCESS}
IA_SECRET: ${IA_SECRET}
PODCAST_NAME: ${PODCAST_NAME}
CREATOR_NAME: ${CREATOR_NAME}
volumes:
- data:/data
volumes:
data: {}
Como ves, en este caso comparto el volumen data
y de esta forma accedo a los archivos que se suben al Local Bot Api Server. Sin embargo, no todo podía ser tan sencillo.
Cuando comencé con las pruebas me di cuenta que no podía acceder. Simplemente no tenía permisos para entrar el directorio. Pero la solución fue sencilla, simplemente cambié el id
del usuario de archivebot
, y le di el mismo. Problema solucionado.
El potencial
Imagina, cuando he visto el potencial del Local Bot API Server como me he quedado. Desde mis inicios con los bots de Telegram, hasta la fecha, lo cierto es que he perdido el tiempo, por las posibilidades que ofrece esto. Pero, te tengo que decir, que me da miedo. Se acaba de abrir todo un mundo de posibilidades ante mis ojos. Desde convertir vídeos hasta casi cualquier cosa que puedas imaginar. Las posibilidades son impresionantes.
Hola! Está disponible la imagen? Intento hacer pull y no la encuentra. Y buscando por docker-HUb tampoco 🙁
Buen post, si necesitáis ayuda con bots/miniApps contactad con @Janlib