MANDAR UN MENSAJE A UN GRUPO DE TELEGRAM USANDO UN BOT Y UN SCRIPT POWERSHELL

Crear un Bot

Para empezar debemos crear un Bot de Telegram. Podemos usar el padre de todos los padres de los bots de Telegram llamado BoFather, usando el canal abierto BoFather nos guia a través de varias preguntas para que creemos nuestro bot personal.

Hablando con BoFather:

Para crear un nuevo bot introducimos el siguiente comando:

/newbot

Una vez introducido nos solicitará un nombre para el nuevo bot. Después nos solicitará un nombre de usuario para el bot (la cadena debe acabat con 'bot'). Si se crea correctamente el bot es accesible como enlace Telegram tg://resolve?domain=nombre_usuario_bot

Cuando finalizamos el proceso BoFather nos proporciona un APT Token para acceder a la API HTTP.

Obtener el ID del chat de grupo

Podemos usar el bot @my_id_bot para obtener el ID de nuestro usuario personal, añadimos el bot a nuestro Telegram y escribimos dentro el siguiente comando:

@my_id_bot

La respuesta del comando debe ser un ID numérico como la parte tachada de la imagen inferior:

Como queremos mandar los mensajes a un grupo usando nuestro Bot creamos un grupo (introducimos al bot) y obtenemos el ID del grupo de la URL de Telegram Web, es el número decimal a continuación de la URL https://web.telegram.org/#/im?p=g tachado en la imagen.

La magia del script PowerShell

Ahora ya tenemos todas las piezas necesarias:

  • Un bot creado
  • El token ID del bot para usar la API HTTP.
  • Un grupo de Telegram con el bot dentro.
  • El ID del grupo.

Usaremos el script obtenido del siguiente enlace de "Techno Chat Tech Blog!" (muy recomendable) "How to use Telegram Bot as Event Notifier to send instant notification on your Smartphone using PowerShell" - 27/03/2017.

Nota: Dentro del script sólo debemos modificar la variable $token = "bot_token" por el Token que nos ha proporcionado BoFather cuando hemos creado el bot.

Fuente: sendmessage_telegram.ps1.

#Usage: sendmessage_telegram.ps1 -chat_id CHAT_ID -text 'TEXT' -markdown
param(
[string]$chat_id = $(Throw "'-chat_id' argument is mandatory"),
[string]$text = $(Throw "'-text' argument is mandatory"),
[switch]$markdown,
[switch]$nopreview
)

$token = "bot_token"
if($nopreview) { $preview_mode = "True" }
if($markdown) { $markdown_mode = "Markdown" } else {$markdown_mode = ""}

$payload = @{
    "chat_id" = $chat_id;
    "text" = $text
    "parse_mode" = $markdown_mode;
    "disable_web_page_preview" = $preview_mode;
}

Invoke-WebRequest `
    -Uri ("https://api.telegram.org/bot{0}/sendMessage" -f $token) `
    -Method Post `
    -ContentType "application/json;charset=utf-8" `
    -Body (ConvertTo-Json -Compress -InputObject $payload)

Abrimos una consola de PS en MS Win y ejecutamos el cmdlet:

PS> .\sendmessage_telegram.ps1 -chat_id "-ID_chat_grupo" -text "Texto a enviar a grupo #Tests #PS #PowerShell #Scripting #cmdlet"

Nota: El ID del chat debe ir precedido del carácter '-'.

Conclusiones

Las utilidades que le podemos dar a este sistema de mensajería son tantas como se nos ocurran, una muy obvia es monitorizar una computadora usando PS para medir indicadores de rendimiento: CPU, puertos y servicios abiertos, procesos cave ejecutandose, ocupación del disco duro,...

También se puede usar para enviar mensajes informativos a diferentes grupos de forma rápida (podemos implementar algun sistema de plantillas para mensajes tipo más comunes).

Mejoras: Se puede ampliar el script pasandole como parámetro un array de IDs de chats y así notificar a varios grupos de usuarios el mismo mensaje.

Enlaces externos

Telegram y PowerShell:

Powershell: