Bot de Telegram en Typescript
Aprende a crear un bot en Telegram, agregar escucha de comandos y configurar el envío de notificaciones.
Daniel Gustaw
• 3 min read
Uno de los proyectos que lanzamos el mes pasado utilizó Telegram para enviar notificaciones. Esta entrada te mostrará cómo configurar el envío de notificaciones desde cero usando typescript
.
Preparando el entorno
Comenzaremos preparando los archivos de configuración:
tsc --init
npm init -y
Instalamos telebot
- un paquete que proporciona el SDK de Telegram. Su documentación se puede encontrar aquí:
Junto con él, instalamos el conjunto necesario de bibliotecas para typescript
:
npm i telebot @types/telebot @types/node typescript ts-node
En el archivo tsconfig.json
, sobreescribimos las siguientes opciones:
"target": "ESNEXT",
"moduleResolution": "node",
"allowSyntheticDefaultImports": true,
Obtención de un TOKEN de API
Para poder usar la API, necesitaremos un token. La forma más sencilla de obtenerlo es escribir al bot que crea bots en Telegram. Este es BotFather
.
Toda la conversación consiste en proporcionar el comando para crear un bot, su nombre
, nombre de usuario
, y recibir el token.
Agregar un token al proyecto
Recomiendo agregar TELEGRAM_TOKEN
con este valor al archivo .env
, p. ej.
TELEGRAM_TOKEN=xxx
En package.json
añadimos una línea
"start": "ts-node index.ts",
dentro de scripts
. Creamos un archivo Makefile
include .env
export
node_modules: package.json
npm i
up: node_modules
npm run start
gracias a ello importamos automáticamente .env
y no necesitamos usar flags desde la línea de comandos o paquetes como dotenv
. No olvides agregar .env
a .gitignore
.
Código para obtener el ID de chat
Si queremos que nuestro bot responda, solo necesitamos escribir el código en el archivo index.ts
:
import TeleBot from "telebot"
const bot = new TeleBot({
token: process.env.TELEGRAM_TOKEN || '',
});
bot.on(["/configure_bot"], (msg) => {
console.log(msg);
bot.sendMessage(msg.chat.id, `CHAT_ID: ${msg.chat.id}`);
});
bot.start();
A continuación, agrega el bot al chat y escríbele. El resultado será el siguiente:
El identificador de chat es una pieza clave de información si queremos enviarle notificaciones. El ID de chat y el Token son piezas clave de información que indican qué bot está escribiendo y dónde. En nuestro caso, el bot fue configurado para enviar diferentes datos a diferentes grupos, así que tuvimos que repetir este comando para varios grupos y anotarlos en el archivo .env
. Agregamos la línea al archivo .env
GROUP_LOG_ID=-506870285
Enviando señales
Enviaremos un número aleatorio al canal cada segundo si es mayor que 0.5. El siguiente código es suficiente para esto.
setInterval(() => {
const rand = Math.random();
if (rand > .5) {
bot.sendMessage(parseInt(process.env.GROUP_LOG_ID || ''), `${rand}`)
}
}, 1000)
Era un código muy simple y un bot muy simple. Con tales bots, puedes hacer cosas prácticas. Por ejemplo:
- Construir una interfaz de texto para la configuración remota del sistema. Tal CLI es más económico que conectar un frontend, formularios y botones.
- Construir sistemas de notificación de eventos. Esto es más fácil que enviar SMS o correos electrónicos, que requieren (o recomiendan) proveedores externos. En Telegram, evitamos el problema del pago por mensajes, y los grupos pueden alojar cientos de miles de miembros.
Other articles
You can find interesting also.
Raspar las cuentas de Twitter más populares
Gracias a la observación de publicaciones en Twitter, podemos rastrear diversas tendencias. En esta entrada, mostraré cómo descargar datos sobre cuentas en este servicio y seleccionar aquellas que tienen el mayor ratio de influencia.
Daniel Gustaw
• 8 min read
Otra guía de instalación para Arch Linux (i3)
Instalar Arch Linux me enseña algo nuevo cada vez sobre discos, redes y sistemas operativos. Te lo recomiendo si deseas un sistema adaptado a tus necesidades.
Daniel Gustaw
• 16 min read
Simplificando la línea de comandos de Linux con GPT-CLI (rust, código abierto)
Ejecuta comandos de Linux con lenguaje natural. Ej.: 'muestra mi tarjeta gráfica' en lugar de 'lspci | grep VGA', proyecto de código abierto escrito en Rust
Daniel Gustaw
• 4 min read