Telegram bot
Sitio: | Facultad de Ingeniería U.Na.M. |
Curso: | IC511 - Internet de las Cosas, Sensores y Redes |
Libro: | Telegram bot |
Imprimido por: | Invitado |
Día: | jueves, 5 de diciembre de 2024, 00:13 |
1. Introducción
Telegram es una aplicación de mensajería enfocada en la velocidad y seguridad, es súper rápida, simple y gratuita. Puedes usar Telegram en todos tus dispositivos al mismo tiempo. Tus mensajes se sincronizan a la perfección a través de cualquiera de tus teléfonos, tablets o computadoras. Telegram tiene más de 700 millones de usuarios activos mensuales y es una de las 10 apps más descargadas del mundo.
A
diferencia de WhatsApp, Telegram es mensajería basada en la nube con
sincronización constante. Como resultado, puedes acceder a tus mensajes
desde diferentes dispositivos a la vez, incluyendo tablets y
computadoras, y compartir un número ilimitado de fotos, videos y
archivos (doc, zip, mp3, etc.) de hasta 2 GB cada uno.
Telegram
necesita menos de 100 MB en tu dispositivo. Puedes mantener toda tu
multimedia en la nube sin necesidad de eliminar cosas, simplemente borra
la caché para liberar espacio.
Gracias
a la infraestructura de múltiples centros de datos y al cifrado de
Telegram, es más rápido y mucho más seguro. Además, la mensajería
privada en Telegram es gratuita y seguirá siéndolo; sin publicidad, sin cuotas de suscripción, para siempre.
La API de Telegram y su código son abiertos, y son bienvenidos los desarrolladores que quieran crear sus propias aplicaciones de Telegram. También tenemos una API para bots,
una plataforma para desarrolladores que permite a cualquiera crear
herramientas especializadas para Telegram, integrar cualquier servicio, e
incluso aceptar pagos de usuarios de todo el mundo.
2. Registrar un Bot
Los bots Telegrama son como usuarios con los que se interactúa a través de la API de Telegram. Se puede crear hasta 20 bots por cuenta de telegram.
Para crear un bot comuníquese con @BotFather. Utilice el comando /newbot y siga las instrucciones hasta obtener el token correspondiente al bot.
4839574812:AAFD39kkdpWt3ywyRZergyOLMaJhac60qc (ejemplo)
El token es una secuencia de caracteres que se utiliza para autenticar el bot en la api bot de telegram. Es información sensible. No se debe compartir. Es como una contraseña.
3. Mi primer bot
En teoría se puede programar un bot directamente utilizando la api bot de telegram. Nosotros además utilizaremos la librería python-telegram-bot. Esta librería proveé una interfaz asincrónica para interactuar con la api bot de telegram. Además agrega varias clases de alto nivel que facilitan el desarrollo de bots.
$ git clone https://github.com/GermanXander/docker_iot.git
# branch TBa
Esta librería trabaja asociando una aplicación a un bot. El constructor de la aplicación requiere como argumento el token del bot. Seguidamente se crean una serie de "manipuladores" (handler). En este ejemplo manipulan comandos. Un comando es un texto que comienza con "/". Creamos un manipulador para el comando /start y otro para /acercade.
Cada manipulador recibe 2 parámetros: el comando al que responde (sin la /) y la función que debe ejecutar cuando se invoca dicho comando.
Las funciones invocadas por los manipuladores a su vez reciben dos argumentos: "update" que es un objeto que contiene toda la información y datos de parte de telegram (mensaje,usuario , etc) y "context" otro objeto que contiene toda la información y datos del estado de la librería (Bot, Application, job_queue, etc).
En @BotFather se puede definir los comandos que acepta el bot. Esto es simplemente a modo de ayuda y autocompletado para el usuario del bot.
Argumentos
# branch TBb
para averiguar el ID de un objeto se puede utilizar la api web de telegram
https://api.telegram.org/bot{TOKEN}/getUpdates
4. teclado y base de datos
En este ejemplo incorporamos un teclado para enviar comandos. Los teclados del tipo ReplyKeyboardMarkup envían mensajes texto por lo que en nuestro bot debemos implementar un manipulador de mensajes.
Basado en el botón que elija el usuario realizamos la correspondiente consulta a la base de datos.
# branch TBc
Para no tener que pasarle todas las variables de entorno por línea de comando, al ejecutar la imagen con "docker run", podemos indicarle que utilice las del archivo .env.
Como no estamos creando el contenedor desde docker-compose el mismo no estará en la misma red (bridge) que los demás contenedores, por lo que no podremos acceder a la base de datos mediante dns (mariadb). Tendremos que sobreescribir la variable perteneciente a MARIADB_SERVER indicando la IP del GW del bridge creado por docker-compose.
~/docker $ docker run -e MARIADB_SERVER=172.19.0.1 --env-file ../.env --rm --name telegrambot telegrambot
5. Matplotlib
Matplotlib es una biblioteca integral para la creación de visualizaciones estáticas, animadas e interactivas en Python.
Vamos a utilizar esta librería para crear gráficos de la evolución de variables a lo largo del tiempo. Los datos son obtenidos de la base de datos. La imagen temporal se genera en memoria para reducir los ciclos de lectura/escritura a la tarjeta SD.
Queda como tarea para el alumno ajustar el rango del eje y, indicar las unidad, cambiar el color, etc.