Crear un sencillo bot de Telegram para notificar con bash

Por Manolo Gómez | March 19, 2022

Tener un sistema para nuestroS cacharros se comunique con nosotros, se hace necesarios para tener la tranquilidad, de que si algo no funciona, se nos informar

Raspberry pi server con docker

Ya sean bots que corren en nuestro servidor o en nuestras rapsberrys, puedan comunicar sus cosas con nosotros se hace imprescindible, cosas tales como: que se ha caído una pagina web, que no se ha podido finalizar una copia de la base de datos o que el bitcoin se ha desplomado, cualquier cosa que controles con tus bots. Una forma sencilla de que esto ocurra puede ser mediante Telegram.

Vamos a ver lo fácil que resulta hacer esto, para crear una bot de telegram entramos a la app de Telegram y buscamos a @BotFather, que es el padre de todos los Bots.

  1. entramos en @BotFather.

  2. /newbot y nos preguntará: ¿Que nombre quieres dar a tu bot?. Escribimos un nombre.

  3. nos pide: ¿Que nick quieres usar para este bot?, recuerda que el nick debe de acabar en bot o _bot y debe de ser único, prueba hasta encontrar uno. ejem: @manolo20201222_bot, @manolo20201222bot,…

@BotFather ya nos ha creado el bot!!!.

Nos informa del Token para poder utilizar nuestro bot.

Para obtener el ID llamamos al bot @userinfobot, el escribimos cualquier cosa y nos da nuestro ID

Fatherbot

Teniendo el TOKEN y el ID ya podemos enviar mensajes. Para ello solo tenemos que enviar una request tipo Post a la api de Telegram con el toque y el id.

La forma mas sencilla que se me ocurre es hacerlo mediante curl, llamado mediante un script bash. Creo un archivo bot_telegram.sh


#!/bin/bash

TOKEN="XXXXXXXXXXXXTOKENXXXXXXXXXXXXXXXXXXX"
ID="----ID-----"
MESSAGE=$1
URL="https://api.telegram.org/bot$TOKEN/sendMessage"

curl -s -X POST $URL -d chat_id=$ID -d text="$MESSAGE"

Asi tendríamos un archivo al cual le pasamos el mensaje por parámetros y no sirve para enviar mensajes de cualquier otro servicio

bash bot_telegram.sh 'Esto es un mensaje de pruebas'

Podemos llamar a este bash desde cualquier servicio que tenga algo que notificar.