Cómo crear un bot de telegram en nodejs?

Cómo crear un bot de telegram en nodejs?

Que es NodeJs?

NodeJs es un entorno en tiempo de ejecución multiplataforma, de código abierto, para la capa del servidor basado en el lenguaje de programación ECMAScript, asíncrono, con I/O (entrada/salida) de datos en una arquitectura orientada a eventos y basado en el motor V8 de Google.

¿Que es y para qué sirve el archivo package.json?

En este archivo, que debe estar en la raíz del proyecto, va a quedar reflejada la configuración del proyecto de NodeJs tales como:

  • Nombre del proyecto.
  • Autor.
  • Versión.
  • Dependencias.
  • Scripts.
  • Repositorio Git.
  • Motor de Node.

Que necesitamos para empezar con el desarrollo de nuestro bot?

Lo primero de todo y más importante es descargar nodejs de este link https://nodejs.org/es/

Recomiendo que os descargueis la versión LTS que es la versión más estable.

Una vez acabado el paso anterior procedemos a crear una carpeta, por ejemplo en el escritorio, en mi caso le voy a llamar a la carpeta test-bot.

Abrimos la carpeta que hemos creados y pulsamos ctrl+shift y con el ráton hacemos click derecho dentro de la carpeta y os debería aparecer la opción de abrir con cmd o powershell.

Abrir Powershell en Windows

Otra opción es abrir cmd y poner cd + la ruta de la carpeta:

Ejemplo:
cd C:\Users\dpefe\Desktop\test-bot

Para empezar a prepara el proyecto empezamos ejecutando el siguiente comando:

npm init

comandos-npm-init

Con este comando se crea un archivo llamado package.json. El contenido del archivo debería tener una estructura simalar a esta:

 {
   "name": "test-bot",
   "version": "1.0.0",
   "description": "Bot para telegram en nodejs",
   "main": "bot.js",
   "scripts": {
     "test": "echo \"Error: no test specified\" && exit 1"
   },
   "author": "Tecnonucleous",
   "license": "ISC"
 }

Pero tenemos que modificar ese archivo ya que nos sobra el apartado de "scripts". Quedando algo similar a esto:

 {
   "name": "test-bot",
   "version": "1.0.0",
   "description": "Bot para telegram en nodejs",
   "main": "bot.js",
   "author": "Tecnonucleous",
   "license": "ISC"
 }

Una vez acabamos de editar el archivo package.json procedemos a instalar la api de Telegram para nodejs. Se instala con el siguiente comando:

npm install --save node-telegram-bot-api

instalando api de telegram node

Una vez tenemos esto creamos un archivo llamado bot.js. Dentro de este archivo vamos a meter todo el programa del bot:

 const TelegramBot = require('node-telegram-bot-api');
 
 // API Token Telegram
 const token = 'escribe-aqui-tu-token';

 // Creamos un bot que usa 'polling'para obtener actualizaciones
const bot = new TelegramBot(token, {polling: true});
 const request = require('request');
 
// Cuando mandes el mensaje "Hola" reconoce tú nombre y genera un input: Hola Daniel
 bot.on('message', (msg) => {
 var Hola = "hola";
 if (msg.text.toString().toLowerCase().indexOf(Hola) === 0) {
     bot.sendMessage(msg.chat.id, "Hola  " + msg.from.first_name);
 }
 });

Para ejecutar el bot una vez tenemos el archivo bot.js configurado solo tenemos que poner en la terminal:

node bot.js

Obteniendo como resultado lo siguiente:

activar-bot

Una vez que el bot se está ejecutando vamos a Telegram y hablamos con el por privado. El saludo del bot también funciona si lo metes en un grupo.

El resultado sería el siguiente:

pepebits-test-hola

Cada vez que le llega la palabra hola, manda un mensaje con la palabra Hola + el nombre del usuario. En próximos tutoriales ampliaremos y explicaremos nuevas funciones.

Más información sobre la Api: https://github.com/yagop/node-telegram-bot-api

Grupo de Telegram para resolver las dudas sobre los Bots para Telegram en Nodejs: @Tecnonucleous_chat

Artículo Relacionado