JefnixSolicitar acceso →

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

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

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

¿Listo para operar de forma profesional?

Accede gratis durante la beta. Sin tarjeta. Sin contratos.

Solicitar acceso →

Posts relacionados

Cómo configurar MercadoPago en tu tienda Jefnix

Cómo configurar MercadoPago en tu tienda Jefnix

4 min · 9 de marzo de 2026

API REST de Jefnix: integra tu tienda web en un día

API REST de Jefnix: integra tu tienda web en un día

5 min · 4 de marzo de 2026