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:
- Responde cuando un cliente escribe
/planes - Muestra los planes disponibles con precios
- Guía al cliente a confirmar el pago
- Registra al cliente en Jefnix automáticamente
- Confirma el pago y dispara la entrega de credenciales por email
Todo sin que tengas que tocar nada.
Requisitos previos
Antes de empezar necesitas:
| Requisito | Dónde lo consigues |
|---|---|
| Plan Pro activo en Jefnix | /solicitar-acceso |
| API key de Jefnix | Dashboard → Configuración → API Keys |
| Token de tu bot de Telegram | @BotFather en Telegram |
| Node.js 18+ instalado | nodejs.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:
- Sube tu código a un repositorio en GitHub (sin el
.env) - En railway.app, conecta el repo
- En Variables, agrega
TELEGRAM_TOKEN,JEFNIX_API_KEYyJEFNIX_API_URL - 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:
| Mejora | Descripción | Dificultad |
|---|---|---|
| Integrar MercadoPago | Pagos en línea sin confirmación manual | Media |
| Base de datos (Supabase/PlanetScale) | Persistir pedidos pendientes | Baja |
| OTP para ver credenciales | El cliente solicita y verifica con código | Baja |
| Panel de admin en Telegram | Ver clientes, métricas y estados | Media |
| Recordatorio de renovación | Notificar 3 días antes del vencimiento | Baja |
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 →