Ideas en bits

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

  1. Crear un bot
  2. Agregar el bot a algun canal (o escribirle)
  3. Enviar un mensaje usando Python ❤️

simple

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

bot father example

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

telegram group

...y lo agreagamos

alt

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

alt

hacker-man

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)

hacker-man

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.

marvel bot usando telegram

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!


over 3 years ago

Ariel Parra