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

Los comandos pueden ir acompañados de argumentos. Los argumentos son una propiedad del objeto context.

# 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.

# branch TBd

Queda como tarea para el alumno ajustar el rango del eje y, indicar las unidad, cambiar el color, etc.