PreciosBlogQuiénes somos
Iniciar sesión
Construye tu propio bot de ventas en Telegram con la API de Jefnix

Construye tu propio bot de ventas en Telegram con la API de Jefnix

Si Telegram es tu canal principal de ventas y quieres que tus clientes compren directamente desde ahí, este tutorial te muestra cómo construir un bot completo con Node.js y la API de Jefnix.

Consejos operativos·Equipo Jefnix·18 de marzo de 2026·7 min lectura
TelegrambotAPINode.jsintegracionesavanzado

Construye tu propio bot de ventas en Telegram con la API de Jefnix

Telegram es, sin discusión, uno de los canales más usados por distribuidores de productos digitales en LATAM. La informalidad del canal, la facilidad de uso y el alcance orgánico de los grupos hacen de Telegram un punto de contacto natural con clientes.

Pero atender pedidos manualmente por Telegram tiene un techo claro: si recibes 20 pedidos un sábado a las 10 de la noche, o los atienes tú personalmente o los pierdes. Un bot lo resuelve de manera elegante.

En este tutorial te muestro cómo conectar un bot de Telegram directamente a la API de Jefnix para que el flujo completo — cobro, registro, asignación y entrega de credenciales — funcione solo.


Lo que vas a construir

Al terminar este tutorial tendrás un bot que:

  1. Responde cuando un cliente escribe /planes
  2. Muestra los planes disponibles con precios
  3. Guía al cliente a confirmar el pago
  4. Registra al cliente en Jefnix automáticamente
  5. Confirma el pago y dispara la entrega de credenciales por email

Todo sin que tengas que tocar nada.


Requisitos previos

Antes de empezar necesitas:

RequisitoDónde lo consigues
Plan Pro activo en Jefnix/solicitar-acceso
API key de JefnixDashboard → Configuración → API Keys
Token de tu bot de Telegram@BotFather en Telegram
Node.js 18+ instaladonodejs.org
Cuenta en Railway o Render (opcional, para deploy)Para que el bot corra 24/7

Paso 1 — Crea tu bot en Telegram

Abre Telegram y busca @BotFather. Envía el comando /newbot y sigue las instrucciones:

/newbot
→ ¿Cómo se llama tu bot? MiTiendaDigitalBot
→ ¿Cuál es el usuario? mitiendadigital_bot
→ ¡Listo! Tu token: 7123456789:AAHxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Guarda ese token. Lo vas a necesitar en el siguiente paso.


Paso 2 — Prepara el proyecto

Crea una carpeta para tu bot e inicializa el proyecto:

mkdir jefnix-telegram-bot
cd jefnix-telegram-bot
npm init -y
npm install node-telegram-bot-api axios dotenv

Crea un archivo .env con tus credenciales:

TELEGRAM_TOKEN=7123456789:AAHxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
JEFNIX_API_KEY=jxk_live_XXXXXXXXXXXXXXXX
JEFNIX_API_URL=https://jefnix.io/api/v1

Paso 3 — El código del bot

Crea bot.js con el siguiente código:

require('dotenv').config();
const TelegramBot = require('node-telegram-bot-api');
const axios = require('axios');

const bot = new TelegramBot(process.env.TELEGRAM_TOKEN, { polling: true });
const API = process.env.JEFNIX_API_URL;
const headers = { 'x-api-key': process.env.JEFNIX_API_KEY };

// Comando /start
bot.onText(/\/start/, (msg) => {
  bot.sendMessage(msg.chat.id,
    `¡Bienvenido a nuestra tienda digital! 👋\n\nEscribe /planes para ver nuestras opciones disponibles.`
  );
});

// Comando /planes — lista planes desde Jefnix
bot.onText(/\/planes/, async (msg) => {
  try {
    const { data: planes } = await axios.get(`${API}/plans`, { headers });

    if (!planes.length) {
      return bot.sendMessage(msg.chat.id, 'No hay planes disponibles en este momento.');
    }

    const texto = planes.map(p =>
      `📦 *${p.nombre}*\n💰 ${p.moneda} ${p.precio.toLocaleString()}/mes\n⏳ ${p.duracion_dias} días\n`
    ).join('\n---\n');

    bot.sendMessage(msg.chat.id,
      `*Nuestros planes disponibles:*\n\n${texto}\n\nEscribe /comprar [tu-email] [nombre-del-plan] para iniciar tu pedido.`,
      { parse_mode: 'Markdown' }
    );
  } catch (err) {
    bot.sendMessage(msg.chat.id, 'Hubo un error cargando los planes. Intenta de nuevo en un momento.');
  }
});

// Comando /comprar email plan
bot.onText(/\/comprar (.+) (.+)/, async (msg, match) => {
  const email = match[1].trim().toLowerCase();
  const planNombre = match[2].trim();
  const chatId = msg.chat.id;

  try {
    const { data: planes } = await axios.get(`${API}/plans`, { headers });
    const plan = planes.find(p => p.nombre.toLowerCase().includes(planNombre.toLowerCase()));

    if (!plan) {
      return bot.sendMessage(chatId, `No encontré el plan "${planNombre}". Escribe /planes para ver las opciones.`);
    }

    await axios.post(`${API}/clients`, { email }, { headers }).catch(() => {});

    bot.sendMessage(chatId,
      `¡Perfecto! Para completar tu pedido:\n\n` +
      `📦 Plan: *${plan.nombre}*\n` +
      `💰 Total: *${plan.moneda} ${plan.precio.toLocaleString()}*\n\n` +
      `Realiza el pago al número [TU_NÚMERO] y envíame el comprobante aquí.\n` +
      `Una vez verificado, confirmo tu acceso en menos de 5 minutos. ✅`,
      { parse_mode: 'Markdown' }
    );

    global.pedidosPendientes = global.pedidosPendientes || {};
    global.pedidosPendientes[chatId] = { email, planId: plan.id, planNombre: plan.nombre };

  } catch (err) {
    bot.sendMessage(chatId, 'Ocurrió un error. Por favor escríbenos a soporte@jefnix.io');
  }
});

// Confirmar pago (tú como admin lo haces con /confirmar chatId)
bot.onText(/\/confirmar (\d+)/, async (msg, match) => {
  const adminIds = [process.env.ADMIN_CHAT_ID];
  if (!adminIds.includes(String(msg.chat.id))) return;

  const clientChatId = match[1];
  const pedido = (global.pedidosPendientes || {})[clientChatId];

  if (!pedido) {
    return bot.sendMessage(msg.chat.id, 'No hay pedido pendiente para ese chat ID.');
  }

  try {
    await axios.post(`${API}/payments/confirm`, {
      client_email: pedido.email,
      plan_id: pedido.planId,
    }, { headers });

    bot.sendMessage(clientChatId,
      `✅ ¡Tu pago fue confirmado!\n\nTe enviamos tus credenciales de acceso al correo *${pedido.email}*.\n\nSi en 5 minutos no las ves, revisa spam o escríbenos.`,
      { parse_mode: 'Markdown' }
    );

    bot.sendMessage(msg.chat.id, `Pedido confirmado para ${pedido.email} ✓`);
    delete global.pedidosPendientes[clientChatId];

  } catch (err) {
    bot.sendMessage(msg.chat.id, `Error al confirmar: ${err.message}`);
  }
});

console.log('Bot iniciado ✓');

Paso 4 — Prueba local

Ejecuta el bot:

node bot.js
# Bot iniciado ✓

Abre Telegram, busca tu bot y prueba la secuencia:

Tú:  /start
Bot: ¡Bienvenido! Escribe /planes para ver opciones.

Tú:  /planes
Bot: 📦 Plan Premium 30 días
     💰 COP 12.500/mes...

Tú:  /comprar tucorreo@gmail.com premium
Bot: ¡Perfecto! Para completar tu pedido...

Paso 5 — Deploy en Railway (para que corra 24/7)

Railway es la opción más sencilla y tiene un tier gratuito generoso:

  1. Sube tu código a un repositorio en GitHub (sin el .env)
  2. En railway.app, conecta el repo
  3. En Variables, agrega TELEGRAM_TOKEN, JEFNIX_API_KEY y JEFNIX_API_URL
  4. Railway detecta que es Node.js y despliega automáticamente

En menos de 3 minutos tu bot está corriendo en la nube, sin costo adicional hasta los límites del free tier.


Próximos pasos para mejorar el bot

Una vez que el flujo básico funcione, puedes extenderlo:

MejoraDescripciónDificultad
Integrar MercadoPagoPagos en línea sin confirmación manualMedia
Base de datos (Supabase/PlanetScale)Persistir pedidos pendientesBaja
OTP para ver credencialesEl cliente solicita y verifica con códigoBaja
Panel de admin en TelegramVer clientes, métricas y estadosMedia
Recordatorio de renovaciónNotificar 3 días antes del vencimientoBaja

Conclusión

Conectar Telegram a Jefnix no requiere ser programador de élite. Con unas pocas líneas de JavaScript y las herramientas correctas, puedes tener un bot que vende y entrega productos digitales de manera completamente automática.

La diferencia entre un distribuidor que atiende 50 clientes con esfuerzo y uno que atiende 500 sin perder el control está, casi siempre, en la automatización.

Accede a tu API key en el dashboard →


¿Problemas con la integración? Escríbenos a soporte@jefnix.io y te ayudamos paso a paso.

Recibe una guía nueva cada semana, sin spam.

Equipo Jefnix

Escrito por

Equipo Jefnix

El equipo editorial de Jefnix comparte estrategias, guías y novedades para creadores y operadores de productos digitales en Latinoamérica.

¿Listo para operar de forma profesional?

Sin tarjeta. Sin permanencia. Empieza a vender hoy mismo.

Comienza gratis

Posts relacionados

Recordatorios automáticos de renovación: cómo bajar la cancelación en tu membresía

Recordatorios automáticos de renovación: cómo bajar la cancelación en tu membresía

6 min · 25 de julio de 2026

Cobros rechazados en suscripciones: cómo recuperarlos antes de perder al cliente

Cobros rechazados en suscripciones: cómo recuperarlos antes de perder al cliente

6 min · 25 de julio de 2026

Cómo reducir la cancelación en tus suscripciones digitales: 7 tácticas que sí funcionan

Cómo reducir la cancelación en tus suscripciones digitales: 7 tácticas que sí funcionan

5 min · 25 de julio de 2026

Habla con nosotros