Cómo crear un bot de Telegram en 15 minutos (sin complicarte la vida)
May 1, 2026
He creado decenas de bots de Telegram para automatización, notificaciones y experimentos con IA. Te muestro cómo construir uno funcional en minutos, con código real y sin frameworks innecesarios.
Cómo crear un bot de Telegram en 15 minutos (sin complicarte la vida)
Los bots de Telegram son una de las formas más rápidas de construir automatizaciones útiles. No necesitas hosting complicado, la API es ridículamente simple, y puedes tener algo funcionando en minutos.
He usado bots de Telegram para todo: desde recibir alertas de producción hasta experimentos con GPT-4. Déjame mostrarte cómo hacerlo bien desde el inicio.
Por qué Telegram y no Slack o Discord
Tres razones:
- API más simple: No necesitas OAuth flows ni configuraciones bizantinas
- Sin límites absurdos: 30 mensajes por segundo vs los 1 mensaje por segundo de WhatsApp Business
- Serverless-friendly: Webhooks que funcionan de verdad, sin mantener conexiones WebSocket abiertas
Para proyectos personales o MVPs, Telegram gana siempre.
Setup inicial: BotFather es tu mejor amigo
Telegram tiene un bot para crear bots. Sí, es meta, pero funciona perfectamente.
- Busca
@BotFatheren Telegram - Envía
/newbot - Elige un nombre y un username (debe terminar en 'bot')
- Guarda el token que te da. Lo necesitarás.
Eso es todo. Tu bot ya existe.
Arquitectura: Long polling vs Webhooks
Tienes dos opciones para recibir mensajes:
Long polling (más fácil para empezar):
- Tu código pregunta constantemente "¿hay mensajes nuevos?"
- Perfecto para desarrollo local
- No necesitas HTTPS ni dominio
Webhooks (para producción):
- Telegram hace POST a tu endpoint cuando llega un mensaje
- Requiere HTTPS
- Más eficiente, escala mejor
Empieza con polling, migra a webhooks cuando lo deploys.
Código: El bot más simple que funciona
Usando Node.js y la biblioteca oficial node-telegram-bot-api:
import TelegramBot from 'node-telegram-bot-api';
const token = process.env.TELEGRAM_BOT_TOKEN;
const bot = new TelegramBot(token, { polling: true });
// Responde a /start
bot.onText(/\/start/, (msg) => {
const chatId = msg.chat.id;
bot.sendMessage(chatId, '¡Hola! Estoy vivo 🤖');
});
// Echo de cualquier mensaje de texto
bot.on('message', (msg) => {
if (msg.text && !msg.text.startsWith('/')) {
bot.sendMessage(msg.chat.id, `Recibí: ${msg.text}`);
}
});
console.log('Bot corriendo...');
Eso es literalmente todo para tener un bot funcional.
Features útiles que siempre implemento
1. Teclados inline
Los botones hacen que tu bot se sienta profesional:
bot.sendMessage(chatId, '¿Qué quieres hacer?', {
reply_markup: {
inline_keyboard: [
[{ text: 'Opción A', callback_data: 'opt_a' }],
[{ text: 'Opción B', callback_data: 'opt_b' }]
]
}
});
// Manejar clicks
bot.on('callback_query', (query) => {
const data = query.data;
bot.answerCallbackQuery(query.id);
// Hacer algo con 'data'
});
2. Rate limiting básico
Evita que un usuario abuse de tu bot:
const userLimits = new Map();
function checkRateLimit(userId) {
const now = Date.now();
const userLog = userLimits.get(userId) || [];
const recentRequests = userLog.filter(t => now - t < 60000);
if (recentRequests.length >= 10) return false;
recentRequests.push(now);
userLimits.set(userId, recentRequests);
return true;
}
3. Logging que vale la pena
Siempre loggeo el username y chat_id:
bot.on('message', (msg) => {
console.log(`[${msg.from.username}:${msg.chat.id}] ${msg.text}`);
});
Cuando algo falla en producción, esto salva vidas.
Deployment: Mis opciones favoritas
Para prototipos: Railway o Render con plan gratuito. Deploy directo desde GitHub.
Para producción seria: Vercel Edge Functions o AWS Lambda + API Gateway.
Ejemplo de handler para Vercel:
export default async function handler(req, res) {
if (req.method === 'POST') {
const update = req.body;
// Procesar update de Telegram
await handleUpdate(update);
return res.status(200).json({ ok: true });
}
return res.status(200).json({ status: 'alive' });
}
Configuras el webhook una vez:
curl https://api.telegram.org/bot<TOKEN>/setWebhook?url=https://tu-dominio.vercel.app/api/bot
Errores que ya cometí por ti
-
No manejar errores de red: Telegram puede devolver 429 (rate limit). Implementa retry con exponential backoff.
-
Ignorar
chat_idvsfrom.id: En grupos son diferentes. Siempre usamsg.chat.idpara responder. -
No sanitizar input del usuario: Si pasas mensajes a una API externa (como OpenAI), valida primero.
-
Olvidar answering callback queries: Si no llamas
answerCallbackQuery, los botones se quedan con el spinner de carga.
Mi stack actual para bots avanzados
- Runtime: Node.js o Deno
- DB: Supabase para persistencia simple
- Caching: Redis en Upstash (tienen free tier generoso)
- Monitoring: Sentry + logs en Axiom
Para bots que usan IA, agrego un queue (BullMQ) para procesar requests pesadas de forma asíncrona.
Cuándo NO usar un bot de Telegram
Sé honesto con los trade-offs:
- Si necesitas alcance masivo: Telegram no es WhatsApp en Latinoamérica
- Si tu audiencia no es tech-savvy: La fricción de "instala Telegram" mata conversión
- Si necesitas pagos complejos: Usa Stripe directamente
Pero para herramientas internas, notificaciones, o side projects, los bots de Telegram son imbatibles en velocidad de desarrollo.
Siguiente nivel
Una vez dominas lo básico, experimenta con:
- Inline mode (responder en cualquier chat con
@tubot) - Telegram Mini Apps (webapps embebidas)
- Bot API local para archivos grandes
Mi próximo experimento es un bot que use function calling de GPT-4 para ejecutar acciones complejas. La combinación de Telegram + IA conversacional es perfecta.
Arranca con el código simple que compartí. En 15 minutos tendrás algo funcionando. Luego iteras.