Newsletter para devsEntra

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

  1. Bot personal de recordatorios
    Usa Telegraf para programar mensajes en momentos clave del día. Gracias a su soporte para session 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.

  2. 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.

  3. Notificaciones en tiempo real
    Al tener acceso directo al ctx.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.

  4. Encuestas internas o feedback exprés
    Aprovecha los botones inline y los manejadores de callback_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.

  5. 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

  1. Abre Telegram y busca @BotFather.
  2. Usa el comando /newbot y sigue los pasos (elige nombre y username).
  3. 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.

Web Reactiva Newsletter