Ingeniero y no puedo

El blog personal de Juanjo Salvador

Mensajes de Año Nuevo automáticos

En este día, normalmente la banda de 3G/4G tiende a estar colapsada por la cantidad de mensajes de “Feliz año” que envía la gente a la misma hora. Esto, junto a tener que escribir el mismo mensaje para tus compañeros de trabajo, tu jefe, tus familiares, tu abuela (que es muy moderna y tiene smartphone) hace que el año nuevo sea cada vez más desesperante… ¿Y si automatizamos esta tarea y que sea otro quien se ocupe de enviarlo en nuestro lugar?

Esto es posible gracias a la magia de Telegram-CLI y Bash.

En primer lugar, necesitas instalar Telegram-Cli (Linux). Mi recomendación es instalarlo siempre desde el código fuente. Y si usas Debian, ten presente esta issue, ya que existe algún problema con OpenSSL a la hora de hacer el make. A continuación es necesario que nos logueemos (introduciendo el número de teléfono y el código del país).

En segundo lugar, necesitas este script y un usernames.txt donde incluiremos los ID de toda la gente a la que queremos que le llegue el mensaje (uno por línea).

El script original está aquí. Necesitarás actualizar la variable PATH con la ruta donde tienes tu Telegram-CLI instalado.

#!/bin/bash

############################################
# Author: Juanjo Salvador Piedra
# Website: http://juanjosalvador.es
# GitHub: https://github.es/JuanjoSalvador
# Twitter: @Linuxneitor
# Telegram: @JuanjoSalvador
############################################

# PATH to your Telegram-Cli installation
PATH="/path/to/tg"
# Replace this with your own message
MESSAGE="Feliz año nuevo! De parte de Juanjo y el equipo de JotaDevs ;)"
# File where is all usernames (one per line)
FILE="usernames.txt"

while IFS='' read -r USERNAME; do
	$PATH/bin/telegram-cli -W -e "msg $USERNAME $MESSAGE" > /dev/null && echo "Message sent to $USERNAME"
	sleep 10
done < "$FILE"

El último paso es programar el proceso utilizando at.

$ at 0000

Y veremos como el prompt cambia por un >. Entonces introducimos:

bash /ruta/del/script/happyNewYear.sh

Y le enviamos un EOF con Ctrl-D. Añadir bash delante es importante, dado que at ejecuta todo con /bin/sh en lugar de BASH, por lo que el script fallaría si no le indicamos explícitamente como debe ejecutarlo.

Llegados a este punto, podemos salir y despreocuparnos, que nuestro ordenador se encargará de enviar el mensaje llegada la hora, a la lista de contactos especificados.

Feliz Año Nuevo, y que disfrutéis de las vacaciones ;-)

ACTUALIZACIÓN

Me han notificado que es posible que Telegram nos ponga una limitación de mensajes por minuto que podemos enviar, lo cual podría dar pie a un baneo de una hora. Para evitar eso, he añadido un sleep 10 entre mensaje y mensaje. Sin embargo, es recomendable que la lista de usuarios no tenga más de 20 contactos para evitarnos malfuncionamiento.