Telegraf.js
Framework moderno para crear bots de Telegram con Node.js y TypeScript
Telegraf.js es un framework moderno para crear bots de Telegram usando Node.js. Con una API limpia, tipados en TypeScript y soporte total del Bot API de Telegram, te permite lanzar desde bots simples hasta sistemas complejos.
🧡 Recomendamos Telegraf ¶
Usamos telgraf para construir de forma muy sencilla bots con telegram, tanto con polling como con webhook. En la masterclass vimos con detalle la arquitectura de estos bots y cómo explotar las facilidades del framework.
⭐️ Accede a la masterclass completa
Ficha ¶
Distribución:
Open source (licencia MIT) — Instalación vía npm, yarn o pnpm.
🔑 Características clave ¶
- Soporte completo para el Telegram Bot API 7.1.
- Compatible con TypeScript y entornos serverless (AWS Lambda, Cloud Functions, etc.).
- Integración flexible con servidores HTTP, Express, Fastify y más.
Perfecto. Aquí tienes la sección 💡 Ideas para usar este recurso con cada idea más desarrollada, destacando los puntos críticos donde Telegraf.js brilla:
💡 Ideas para usar Telegraf ¶
-
Bot personal de recordatorios
Usa Telegraf para programar mensajes en momentos clave del día. Gracias a su soporte parasession
o tareas programadas desde el backend, puedes recordar hábitos, enviar mensajes motivacionales o mantener un seguimiento diario de objetivos. Ideal para automatizar rutinas sin depender de apps externas. -
Atención al cliente automatizada
Telegraf permite escuchar mensajes y comandos personalizados, por lo que puedes construir flujos conversacionales simples (FAQ, horarios, contacto, etc.) o integrar una lógica más compleja con botones interactivos (inline_keyboard
). Su estructura de middleware facilita escalar la lógica según el tipo de usuario o canal. -
Notificaciones en tiempo real
Al tener acceso directo alctx.telegram.sendMessage
, puedes usar Telegraf como puente para recibir alertas de eventos en tu backend: nuevos pagos, errores en producción, commits en GitHub o menciones en redes. Es una solución ágil para no depender de servicios de terceros tipo Slack o email. -
Encuestas internas o feedback exprés
Aprovecha los botones inline y los manejadores decallback_query
para lanzar encuestas rápidas en grupos o chats privados. Puedes recoger respuestas, almacenarlas y tomar decisiones con datos en tiempo real. Perfecto para equipos ágiles o comunidades activas. -
Gestión de contenidos
Telegraf puede conectarse con tu CMS, RSS o backend para publicar automáticamente nuevos artículos, vídeos o episodios de podcast en un canal de Telegram. También puedes añadir comandos para moderar publicaciones o seleccionar manualmente qué se envía. Útil tanto para medios como para proyectos personales con contenido regular.
👍 Ventajas ¶
- Muy fácil de usar y configurar, incluso para proyectos pequeños.
- Tipados excelentes en TypeScript que reducen errores.
- Ligero y extensible mediante middlewares personalizados.
Ejemplo de uso ¶
🛠 Instalación ¶
mkdir mi-bot-telegram
cd mi-bot-telegram
npm init -y
npm install telegraf
🤖 Crear un bot en Telegram ¶
- Abre Telegram y busca
@BotFather
. - Usa el comando
/newbot
y sigue los pasos (elige nombre y username). - Copia el token que te entrega al final, será algo así como
123456789:ABCDefGhIjKlmNoPQRsTUVwxyZ
.
📦 Código de ejemplo ¶
Crea un archivo bot.js
:
// bot.js
import { Telegraf } from 'telegraf';
// Usa una variable de entorno para el token del bot
const bot = new Telegraf(process.env.BOT_TOKEN);
// Comando /start
bot.start((ctx) => {
ctx.reply('👋 ¡Hola! Soy tu bot de pruebas. Usa /help para ver qué puedo hacer.');
});
// Comando /help
bot.help((ctx) => {
ctx.reply('🛠 Comandos disponibles:\n/start - Saludo\n/help - Ayuda\n/echo <texto> - Repito lo que me digas');
});
// Comando /echo que repite el mensaje
bot.command('echo', (ctx) => {
const input = ctx.message.text.split(' ').slice(1).join(' ');
if (input) {
ctx.reply(`📢 ${input}`);
} else {
ctx.reply('❗️ Usa el comando así: /echo hola mundo');
}
});
// Lanzamos el bot
bot.launch();
console.log('🤖 Bot iniciado');
// Parada segura en caso de señal
process.once('SIGINT', () => bot.stop('SIGINT'));
process.once('SIGTERM', () => bot.stop('SIGTERM'));
▶️ Ejecutar el bot ¶
BOT_TOKEN=tu_token_aqui node bot.js
El bot ya estará listo para recibir mensajes en Telegram. Solo búscalo por el username que elegiste.
