A decir verdad, ni siquiera sabia que escribir bots de Telegram con Google Script era posible (de hecho, ni sabia que Google Script existía). Pero me viene bien. Es mas seguro que usar el @gmailbot que hace mucho que no me funciona. Después de todo, esto seria mas seguro que andar dando credenciales a desconocidos en internet.
Introducción
La verdad, todo comenzó de una idea era bastante sencilla, necesitaba mandar un correo de una notificación a un grupo familiar apenas llegaba el correo a mi bandeja de entrada. Dado que era una tarea bastante sencilla, no me cabía en la cabeza que fuera imposible de automatizar. Pensé en un inicio en hacer un script con Python o Node, pero la burocracia de la autenticación me aburrió un montón, aparte de lo complicado que es lidiar con IMAP (por mucho que le haya hecho un articulo) así que hice lo que seria sentido común en esta época; preguntarle a la IA. Específicamente a Copilot para Telegram.
Resulta que Gooogle tiene una plataforma llamada App Script, que como describe en su misma pagina, permite ejecutar automatizaciones para todos lo servicios de Google. Puedes utilizarla en cualquiera de tus cuentas de Google y ejecuta una versión de Javascript llamada Google Script que a modo superficial, no les encuentro diferencia alguna. Si bien, no puedes ejecutar programas completos, permite la ejecución regular de tareas, con lo que puedes fácilmente crear un bucle para escanear regularmente tu correo electrónico por novedades y responder acorde a esto. Un bot en toda la regla.
Proyecto Rápido: Reenviar un correo a un grupo de Telegram
Te dejo de tarea la configuración de tu entorno de trabajo. En realidad es bastante sencillo y tendrás que ver tu panel de control en script.google.com y crear un nuevo trabajo. Como código de ejemplo, usare el bot de telegram que hice de forma rápida utilizando la API de Google y Telegram.
const TELEGRAM_TOKEN = '<tu token>';
const CHAT_ID = '<chat id del grupo>';
function reenviarCorreosATelegram() {
const threads = GmailApp.search('is:unread newer_than:1h TEXTO A BUSCAR');
for (const thread of threads) {
const messages = thread.getMessages();
for (const message of messages) {
if (!message.isUnread()) continue;
const subject = message.getSubject();
const sender = message.getFrom();
const body = message.getPlainBody().substring(0, 300); // Limita el texto
const texto = `📬 Nuevo correo:\nDe: ${sender}\nAsunto: ${subject}\n\n${body}`;
const url = `https://api.telegram.org/bot${TELEGRAM_TOKEN}/sendMessage`;
const payload = {
chat_id: CHAT_ID,
text: texto
};
UrlFetchApp.fetch(url, {
method: 'post',
contentType: 'application/json',
payload: JSON.stringify(payload)
});
message.markRead(); // Opcional: marca como leído
}
}
}
Recuerda Cambiar las variables de tu Token, obtenido del botfather y id de grupo, que puedes obtener mediante este código como digo en este articulo
También deberás crear una tarea programada para que el bot se ejecute regularmente. Como este sistema solo permite la ejecución de Scripts, no es posible dejar corriendo alguno de fondo, como normalmente hacernos, así que es un poco limitado en ese sentido a solo enviar mensajes y no recibirlos.
Conclusiones
Este sistema me ha gustado en el sentido de que no necesito un servidor para dejar escaneando los mensajes hasta que llega el que necesito reenviar a Telegram, y que hace bastante ligero trabajar con los correos al ocultar el tedio de usar IMAP mediante clases y métodos específicos para esta tarea. Aun así, esto solo funciona para correos de Google, así que otros servidores carecen de esta funcionalidad. Aun así, me interesa aprender para utilizar con mi servidor propio de correo electrónico.