DEV Community

enzotrucchi
enzotrucchi

Posted on • Updated on

Desarrollando un Bot para Telegram

Objetivos del proyecto:

  • Etapa 1: Desarrollar y probar nuestro bot en local.
  • Etapa 2: Publicarlo por medio de Heroku.    

Pero antes de arrancar... ✋

¿Qué son los Bots de Telegram?

¿Escuchaste algo de esto? Si es tu primera vez, te lo resumo así nomás:
 
Son aplicaciones de terceros que se ejecutan dentro de la aplicación de mensajería.
No necesitas instalarlos ni hacer nada diferente para poder utilizarlos, ya que se utilizan como si estuvieras interactuando con una persona real (Es decír, buscando el nombre del bot en el buscador de la app como harías con cualquier usuario: @nombreDelBot).
Hay más: Son multiplataforma, y los podes usar en la versión de Telegram del sistema operativo que quieras.

Ahora, a nivel dev: Funcionan con una API de Telegram

 
 

🎌 ¿Intro lista?
¡Manos a la obra con nuestro primer proyecto de fin de semana! 👇👇

Requisitos

  1. NodeJs
  2. npm instalado
  3. Algún editor de código, yo voy a utilizar el siempre confiable Visual Studio Code
  4. Obvio pero también, tener una cuenta en Telegram.
  5. Telegraf. Esta librería será la que utilizaremos para crear el bot, específicamente con Js.

Paso a Paso

1. Damos de alta nuestro Bot

Abrimos Telegram y vamos a utilizar el Bot "Padre": botFather. Esta cuenta es la administradora de todos los bots, por lo que podrás administrar los tuyos interactuando con ella.
Como dato particular, el nombre del bot debe terminar con "bot". (¿Ya pensaste un nombre marketinero? 😎)

Una vez en el chat con botFather, basta con hacer /newbot y setear el nombre. Eso es todo.
Nos devolverá un token que necesitaremos luego en nuestro código. De todas formas, podemos volver y chequearlo.

🎁 En mi caso, voy a hacer un bot que me recuerde los días que cumple años cada miembro de mi familia. Luego intentaré desarrollar uno que les haga regalos y no tenga que gastar.

2. Primeras lineas

En nuestra carpeta preferida de proyectos, creamos una nueva con el nombre del bot/proyecto.
En mi caso: CumplesDeLaFliaBot

Nos ubicamos dentro de la carpeta y abrimos linea de comandos:

npm init 

npm install telegraf
Enter fullscreen mode Exit fullscreen mode

Creamos un archivo .js; Por ejemplo: bot.js.
Aquí tendremos la lógica del bot.

const Telegraf = require('telegraf');

const bot = new Telegraf('tokenProvistoPorBotFather');
Enter fullscreen mode Exit fullscreen mode

Empezamos con utilizar métodos de Telegraf, en este caso .command para mostrar un saludo personalizado cuando se inicia el bot (vamos a estar capturando el "start" propio de cuando se inicia la conversación)

 bot.command('start', ctx => {
        console.log(ctx.from)
        bot.telegram.sendMessage(ctx.chat.id, '¿Otra vez olvidaste los cumpleaños?', {
        })
    })
Enter fullscreen mode Exit fullscreen mode

3. Seteamos nuestro bot en Telegram

Esta sección es necesaria sólo si queres utilizar los comandos -una especie de accesos rápidos- que te provee botFather.
Para esto vamos a Telegram nuevamente:

/mybots: Recuperar la lista de bots propios y seleccionar el necesario.
/setcommands: Setear comandos que queremos utilizar.

En mi caso sería (Recordar que tenemos que responder en formato command - Description). Donde command es el comando que vamos a capturar y description es lo que ve el usuario.

genaro - Genaro

vito - Vito

✅ Listo, volvemos a Visual Studio Code.

4. Capturando comandos del usuario.

En esta parte vamos a capturar -> devolver. Recordá que podes llamar a una función y hacer lo-que-quieras en ella, y devolver el resultado. Por ejemplo, en otro bot que desarrollé, mandando un parámetro de tipo int a una función, recorría un array de objetos y devolvía uno específico. Anyways..

 //esperamos el command /genaro y devolvemos la fecha en formato string (dd/mm)
    bot.command('/genaro', ctx  => {
        bot.telegram.sendMessage(ctx.chat.id, '17/09');
    })

    //esperamos el command /vito y devolvemos la fecha en formato string (dd/mm)
    bot.command('/vito', ctx  => {
        bot.telegram.sendMessage(ctx.chat.id, '11/04');
    })

    //lanzamos nuestro bot
    bot.launch();
Enter fullscreen mode Exit fullscreen mode

5. Probando nuestro bot en local

Una vez finalizado nuestro código (o durante el desarrollo, porqué no), abrimos terminal y escribimos:

node bot.js
Enter fullscreen mode Exit fullscreen mode

Teniendo Telegram abierto, y si seteamos todo de manera correcta: ¡Ya estamos listos para empezar a testear nuestro bot! 🏄

Próximos episodios de esta maravillosa serie:

  • Utilizar nodemon para ver cambios en tiempo real, mientras desarrollamos.
  • Subir nuestro bot a Heroku y dejarlo operativo en Telegram.

 
 
 
¿Te sirvió el post?
Copate compartiendo y

Invitame un café en cafecito.app

Latest comments (0)