Telegram – como crear un bot y utilizarlo desde Python

Telegram no necesita presentación, lo que no tanta gente conoce es la posibilidad de crear bots y el API disponible y gratuito que podemos utilizar en nuestras APPs.

Un bot en Telegram es un chat automático con el que podemos interactuar, hay bots de todo tipo, consultar el tiempo, hacer pedidos de comida a domicilio, buscar imagenes, poner alarmas, consultar precios en Amazon, consultar el horóscopo, jugar al trivial o al ahorcado, consultar y enviar mapas… y por si fuera poco, cualquiera puede crear uno, la API es pública y gratuita.

¿Para que podemos querer un bot? Desde juegos, a domotica, la API web hace que podamos comunicarnos desde cualquier dispositivo, pc, raspberry o arduino, enviar mensajes desde sensores y capturas de video y foto, subir las persianas, controlar luces, localizar nuestro vehiculo o mascota por gps, activar el riego…

La creación de un bot Telegram se hace en minutos, para ello, el equipo de Telegram pone a nuestra disposición, como no, un bot, el padre de todos los bots, literalmente, el botFather.

botFather

Abre Telegram y en el campo de búsqueda introduce botFather

Una vez localizado lo abrimos y vemos un mensaje de bienvenida, pulsa Iniciar, el bot presentará los comandos disponibles.

Escribimos /newbot, y tendremos que introducir nombre del bot y nombre de usuario, este último debe terminar en «bot«.

Ya tenemos el bot creado! el sistema nos felicita por nuestro nuevo bot y nos da un token. Este token es muy importante, con el se realizan las tareas de administración y el acceso al API, guardalo bien y no lo compartas.

Nuestro bot ya es público, cualquiera puede buscarlo y utilizarlo, veamos como recuperar los mensajes y dar vida a nuestro bot.

Accediendo al bot desde Python

Si bien el API es HTTP y es posible utilizarla escribiendo la url y los parámetros, disponemos de librerías específicas que facilitan mucho el trabajo.

En esta ocasión utilizaremos https://pypi.org/project/telegram-send/

Para instalarla abre el terminal y ejecuta:

pip3 install --user telegram-send

Ejemplo Python, creando objeto bot

Para conectar a nuestro bot debemos utilizar el token que nos facilitó botFather

Para empezar necesitamos crear un objeto bot, pasamos como parámetro el token:

bot = telegram.Bot(<bot_token>)

Abre un editor de texto, escribe las siguientes lineas, sustituye el token por el tuyo.

import telegram

bot_token = '819999999:AAA9Aa99aA99A9A9AA9a-9aaA9AAA99AAA9Aa'	
bot = telegram.Bot(bot_token)

Ya tenemos creado el objeto a nuestro bot, veamos como trabajar con el.

Recuperando info del bot – get_me()

Volvamos al código, añade la siguiente linea al final:

print(bot.get_me())

Guarda el archivo con nombre test1.py

Ejecuta desde el mismo Terminal:

python3 test1.py

La salida será similar a esta:

{'id': 819999999, 'first_name': 'altarurubot', 'is_bot': True, 'username': 'altarurubot'}

Recuperando los mensajes del servidor – get_updates()

Ok!! comprobado que el bot responde, vamos a ver como recuperar los mensajes de los usuarios.

Vuelve al código a añade las siguientes lineas:

updates = bot.get_updates()
print([u.message.text for u in updates])
print([u.message.chat_id for u in updates])
import telegram

bot_token = '819999999:AAA9Aa99aA99A9A9AA9a-9aaA9AAA99AAA9Aa'
bot = telegram.Bot(bot_token)
print(bot.get_me())
updates = bot.get_updates()
print([u.message.text for u in updates])
print([u.message.chat_id for u in updates])

La función get_updates() devuelve todos los mensajes recibidos de los usuarios.

Ejecutalo de nuevo, es posible que no haya mensajes, envíalos tu mismo desde el movil o díselo a algún amigo.

Envia unos mensajes y vuelve a ejecutar test1.py

['Ok ok voy', 'Funciona!!', '/start', 'esto mola!', 'Ciruelo', '🙊', '/start', '😁', 'Hola altaruru!']
[819999991, 819999992, 819999993, 819999992, 819999991, 819999997, 819999995, 819999995, 819999995]

La lista muestra todos los mensajes recibidos en el servidor por cualquier usuario. En este caso los mensajes ‘/start’, ‘😁’, ‘Hola altaruru!’, corresponden al mismo movil, con ID Telegram: 819999995.

Respondiendo a los usuarios – send_message()

Los usuarios en Telegram se identificar por un ID único, como los que vemos en la lista anterior, 819999991, 819999995…

Para enviar un mensaje tenemos la función send_message(), indicamos el ID destino y el texto del mensaje:

bot.send_message('819999995', 'hola, soy tu bot, ¿que puedo hacer por ti?!')

Enviando imágenes, audio, archivos, …

Del mismo modo, es posible enviar archivos, imágenes o audio:

bot.send_photo('819999995',photo=open('imgs/calaremota.jpg', 'rb'))
bot.send_document('819999995', document=open('docs/notas.txt.tar.gz', 'rb'))

Para enviar audio:

bot.send_audio('819999995'=chat_id, audio=open('aud/sound1.mp3', 'rb'))

Eso es todo por el momento, próximamente veremos como integrar un bot con sensores y camaras para domotica.

Saludos y feliz código!

2 comentarios en “Telegram – como crear un bot y utilizarlo desde Python

Deja un comentario

Tu dirección de correo electrónico no será publicada.