Bots en Telegram (II): Tu bot de Telegram con Bash

AdriMcGrady 10/12/2024

Bots en Telegram (II): Tu bot de Telegram con Bash

Ya era hora de traer la continuación del artículo de Bots en Telegram (I) Creación de un bot de Telegram. En este nuevo capítulo vamos a centrarnos en como usar un bot de Telegram desde la shell bash de Linux. Como ya indiqué en la primera parte, estos bots son muy útiles para integrarlos con nuestros scripts.

Con bash y un bot de Telegram podemos recibir la información que queramos en cualquier momento y lugar. ¿Como lograrlo? Pues justo esto es lo que voy a explicar hoy.

Curl

En este blog muchas veces nos centramos en las utilidades más básicas de nuestros terminales. Y curl es sin duda una de ellas. En este caso, la relación con este post se basa en que la manera más simple de enviar mensajes desde tu terminal de linux a tu bot de Telegram es curl. ¿Que no conoces curl? ¡Pues deberías! Citando directamente la definición de Wikipedia, cURL es un proyecto de software informático que proporciona una biblioteca (libcurl) y una herramienta de línea de comandos (curl) para transferir datos utilizando varios protocolos de red.

Y como indican directamente en la página oficial de curl, curl se utiliza en líneas de comandos o scripts para transferir datos. curl también es libcurl, se utiliza en automóviles, televisores, enrutadores, impresoras, equipos de audio, teléfonos móviles, tabletas, dispositivos médicos, decodificadores, juegos de computadora, reproductores multimedia y es el motor de transferencia de Internet para innumerables aplicaciones de software en más de veinte mil millones de instalaciones. Curl es utilizado diariamente por prácticamente todos los usuarios de Internet en el mundo.

Así que como puedes ver, prácticamente en cada terminal existe curl y aunque no lo conocieras antes de leer este texto, seguro que has usado la herramienta sin saberlo.

Tu bot de Telegram en Bash

Así que como ya te he dicho anteriormente, la manera más directa de hacer uso de tu bot de Telegram desde la terminal es usar directamente curl. Pero antes de explicarte cómo, hay que ver que se necesita. La respuesta es simple:

  • Tu bot de Telegram.
  • El Token para hacer uso del mismo.
  • Tu Chat Id.

Si todavía no dispones de lo anterior, te recuerdo que tienes explicado como crear un bot de Telegram desde cero y obtener tu Token y tu Chat Id en la primera parte de esta serie: Bots en Telegram (I): Creación de un bot de Telegram.

Con todo lo anterior, hacer uso de tu bot de Telegram desde tu terminal es muy sencillo:

curl -s -X POST https://api.telegram.org/bot[TOKEN_SUPERSECRETO_DEL_BOT]/sendMessage -d chat_id=[TU_CHATID_SECRETO] -d text="Este es un mensaje especial para/de mi bot"

Estas son las opciones de curl usadas:

  • -s: Activa el Modo Silencioso de curl.
  • -X: Establece el modo de la petición HTTP que enviaremos. En este caso usaremos POST.
  • URL: Justo después del modo se indica la URL https://api.telegram.org/bot[TOKEN_SUPERSECRETO_DEL_BOT]/sendMessage que se construye con el Token del bot dentro.
  • [TOKEN_SUPERSECRETO_DEL_BOT]: Es el Token de tu bot. Se incluye dentro de la propia Url.
  • -d: Al usar el modo POST se pueden pasar datos. La opción -d sirve para indicar que vamos a pasar información en la petición POST. En este caso, dos campos chat_id y text.
  • [TU_CHATID_SECRETO]: Es tu Chat ID.

Script de bot de Telegram para tu terminal

Una vez que ya se ha visto la manera más rápida de usar tu bot de Telegram desde tu consola, es hora de hacer esto un poco más sofisticado y compartir un script de bash para usar tu bot de Telegram desde la terminal: 0030_enviar_mensaje_telegram.sh.

Este script tiene dos modos de uso:

  1. Usando un fichero de configuración previamente definido donde esté la información del Token y el Chat Id
  2. Pasando directamente el Token y el Chat Id por parámetros.

Los parámetros de entrada admitidos son:

  • -f: Fichero de configuración donde deben estar definidos el TOKEN_SUPERSECRETO_DEL_BOT y CHAT_ID especificados como se indica en el siguiente punto. Este parámetro se usa en el modo de funcionamiento 1.
  • -t: El TOKEN_SUPERSECRETO_DEL_BOT de tu bot. Este parámetro se usa en el modo de funcionamiento 2.
  • -c: Tu CHAT_ID super secreto. Este parámetro se usa en el modo de funcionamiento 2.
  • -m: Especifica el mensaje a enviar. Es un parámetro obligatorio en los dos modos de funcionamiento.
  • -d: Habilita el modo depuración.
  • -h: Muestra la ayuda.

Especificación del fichero de configuración para el primer modo de funcionamiento

La sintaxis esperada del fichero de configuración es tremendamente simple. Solo hay que definir dos líneas o variables: TOKEN y CHAT_ID. A continuación se muestra un ejemplo, pero tienes un fichero de configuración ejemplo aquí:

TOKEN="TOKEN_SUPERSECRETO_DEL_BOT"
CHAT_ID="CHAT_ID_SUPERSECRETO_DEL_BOT"

Ejemplos de funcionamiento del script

Como el script tiene dos modos de funcionamiento os voy a mostrar como se ejecuta y funciona en cada uno de ellos.

  • Modo 1: Usando un archivo de configuración con el parámetro -f
./0030_enviar_mensaje_telegram.sh -f /tu/ruta/al/fichero/configuracion/telegram_bot.conf -m "Prueba del bot de noroute2host usando el fichero de configuracion"

Ejemplo bot Telegram Bash Modo 1

  • Modo 2: Pasando por parámetros el Token y el Chat Id
./0030_enviar_mensaje_telegram.sh -t "TOKEN_SUPERSECRETO_DEL_BOT" -c "CHAT_ID_SUPERSECRETO_DEL_BOT" -m "Prueba del bot de noroute2host pasando los datos por parámetro"

Ejemplo bot Telegram Bash Modo 2

Código fuente del script de bot de Telegram para Bash

Antes de terminar te recuerdo que tanto este como todos los scripts, ficheros de código u otras chuletas de código fuente las puedes encontrar en el repositorio del blog en GitLab.

En el siguiente capitulo si lo hubiera…

Si en futuro hubiese un siguiente capítulo, estaría dedicado a como usar tu bot de Telegram desde Python. Hay múltiples formas de hacerlo y alguna de ellas es bastante interesante si lo que se quiere es estar notificado de eventos de tus aplicaciones Python.

Enlaces de interés:

Artículo anterior

Artículos relacionados: