Telegram Bot en Python
Hoy voy a contar una vez mas porque Python no deja de sorprenderme con lo facil que es.
En esta ocasión es para responder a la siguiente pregunta:
Como enviar mensajes a Telegram a traves de un bot?
Necesitamos 3 cosas
- Crear un bot
- Agregar el bot a algun canal (o escribirle)
- Enviar un mensaje usando Python ❤️
1. Crear un bot
Esto se hace desde la app de telegram (sea web / desktop), tenemos que enviar un mensaje al Bot Father (@BotFather), diciendole: /newbot
Como pueden ver, un clásico problema es encontrar un buen nombre y que no haya sido usado jaja.
Al final de las instrucciones vamos a terminar con un bot token que es lo que vamos a usar para conectarnos a la API de telegram.
Agregar el bot a algun canal o escribirle
Super simple:
Creamos un nuevo grupo
...y lo agreagamos
Nota
Tambien podemos hablarle directamente y hacer las pruebas en el mismo.
Enviar un mensaje
La API de telegram es muy sencilla de usar, y particularmente en el caso de enviar un mensaje, aún mas. Tenemos que elegir a que chat enviar el mensaje, y el propio mensaje en si. Quizas lo mas complicado sea
Como obtenemos el id del chat?
Una vez que lo hayamos agregado a un canal, o le hayamos hablado al bot, podemos ir a la siguiente url (reemplazando el token con el suyo)
https://api.telegram.org/bot<aca va el token>/getUpdates
Y vamos a recibir un json con los chats en donde el bot se encuentra, ahi es cuestion de encontrar los chat_id
Ahora si, "vamo a juga" como diria el Kun
Como les dije solo necesitamos a nuestro amigo Python listo, y (en caso que no lo tengamos), debemos instalar requests
$ pip install requests
Y el larguiiiisimo script es el siguiente:
import requests
TELEGRAM_BOT_TOKEN = "<token que obtuvimos con BotFather>"
TELEGRAM_API_URL = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage"
chat_id = "<aqui usamos el chat id donde se haya incluido al bot>"
message = "La verdad, ni me sorprende"
params = {"chat_id": chat_id, "parse_mode": "Markdown", "text": message}
requests.get(TELEGRAM_API_URL, params=params)
Conclusiones
A partir de esto, podemos extendernos en un monton de cosas, como por nombrar algunas:
- Enviar un mensaje bien formateado (en el ejemplo esta usando Markdown, pero tambien puede ser un HTML).
- En vez de usar
sendMessage
podemos usar otros metodos y enviar documentos. - Usar esta api para informar cosas.
Ligado a esto ultimo, se acuerdan del Marvel Bot? bueno hice un pequeño upgrade, y ahora aparte de twittear, tambien envia datos random de Marvel a un canal de telegram (que pueden unirse aca. Y de paso en el proyecto hay ejemplos de como enviar un mensaje formateado.
Ejemplo de un mensaje del Marvel Bot usando la API de telegram
Y en el repo de marvel-bot están todos estos ejemplos y más 🙂.
Adiós!