Crear un bot para telegram con Node.js

Antes de empezar con nada del proyecto, os adelanto que para este howto vamos a necesitar un espacio donde publicar la lógica de nuestro bot, yo uso heroku, porque lo tengo enlazado a mi repositorio de Github, así que tan solo tengo que hacer commit a mi rama master y la magia del desligue se produce.

Os comento que es lo que voy a mostraros, mi hermano me preguntó por algún bot que te permitiese el envío de un email a un destinatario, él había localizado @todolist_bot, pero no se fiaba mucho. Así que me puse manos a la obra para hacerle un bot muy simple con una función muy concreta.

He intentado usar el menor número de paquetes posible, tanto es así que tan sólo he usado dos node-telegram-bot-api y nodemailer.

Node-telegram-bot-api

Este paquete es la primera la vez que lo uso, me ha gustado la verdad, porque tiene lo que se le pide a un paquete de Node.js, que sea claro ligero y conciso.

Tiene un tutorial bastante simple, pero ya os adelanto que más o menos tiene las cosas más comunes, si no os gusta hay como 20 paquetes para hacer bots para telegram con Node.js

Nodemailer

El el paquete más común para el envío de correos electrónicos con Node.js. Ojo si usas una cuenta de gmail para el envio de correo electrónico, recuerda que debes de aceptar el acceso a tu cuenta desde herramientas de terceros.

Accede a esta url para poder cambiar la configuración de tu cuenta de correo. https://myaccount.google.com/lesssecureapps?pli=1

Creación de proyecto

Vamos a meternos en faena, como siempre debemos inicializar nuestro proyecto.

A mi personalmente me gusta hacerlo responiendo las preguntas del npm-cli, así que siempre uso la sentencia:

Si es muy molesto pues ya sabeis, usar la instrucción que os crea todo automáticamente y ya lo tocais lo que no os guste.

Ahora es momento de añadir los dos paquetes que hemos mencionado, recordar poner al final –save para que se edite nuestro package.json

Se debería quedar el apartado dependencias más o menos como esto (teniendo en cuenta que las versiones pueden variar)

Consideraciones de los bots de Telegram

Debes de tener una cosa muy importante cuándo programes un bot para telegram con Node.js o con cualquier lenguaje de programación. Se debe usar desde un servidor con certificado. Tienes dos opciones, montarte en local uno con un certificado o usar un servicio de alojamiento para aplicaciones Node.js.

Yo me he decantado por la segunda opción porque es más rápido y porque estoy acostumbrado a usar heroku para mis pruebas de concepto.

Por otro lado tenemos que tener en cuenta que debemos precrear nuestro bot en el ecosistema de telegram.

Usar Botfather

El padre de todos los bot en telegram es @Botfather. En el debemos de crear nuestro bot dándole un nombre público y un nombre de usuario, teniendo en cuenta que es obligatorio que el nombre de usuario tenga la palabra bot. Esto se hace para detectar claramente que está tratando con un robot.

A parte de darnos nuestro token de bot, desde @Botfather podremos definir los comandos que usara nuestro bot en telegram, biografía o imagen.

El código

Para salvaguardar mi bot programado en Node.js para telegram, he hecho uso de las variables de entorno.

Mediante la función isUserAtorizated controlo el acceso a mi bot, para evitar que lo usen usuarios no autorizados. Como podeis ver no tiene mucha historia y es muy sencillo de implementar, con tan solo 70 lineas tenemos un bot que manda email cuando usamos el comando /todo en telegram con él.

Ya solo nos quedaría subirlo a heroku y lo tendremos funcionando.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.