Qué es realmente un bot
Un bot es un programa que actúa en una plataforma de mensajería, un sitio web o una API en nombre de quien lo opera. En la práctica casi todos los bots repiten el mismo ciclo:
- Recibir un evento: un mensaje, la pulsación de un botón, un comando slash, un disparo programado, un webhook de otro servicio.
- Decidir: interpretar la entrada, comprobar permisos, consultar el estado y, quizá, llamar a un modelo de IA u otra API.
- Actuar: responder, actualizar un registro, publicar en un canal, abrir un ticket.
- Registrar: dejar constancia de lo ocurrido para depurar, medir y auditar.
Todo este sitio trata de hacer esos cuatro pasos de forma fiable, segura y con el consentimiento de las personas implicadas.
Elegir plataforma
Elige la plataforma que tus usuarios ya usan y acepta sus reglas. Cada una tiene su propio modelo de identidad, permisos y costes.
| Plataforma | Ideal para | Identidad y consentimiento | Coste | Entrega |
|---|---|---|---|---|
| Telegram | Comunidades, utilidades, avisos, mini apps | El usuario inicia el bot; los grupos lo añaden | API gratuita | Long polling o webhook |
| Discord | Servidores de comunidad y juegos, moderación | Los administradores lo instalan con scopes OAuth2 | API gratuita | WebSocket del Gateway o interacciones HTTP |
| WhatsApp Cloud API | Atención al cliente, avisos transaccionales | Consentimiento explícito, verificación del negocio | Cobro por mensaje de plantilla | Solo webhook |
| Slack | Flujos internos, ChatOps, aprobaciones | Los administradores lo instalan con scopes | API gratuita | Events API o Socket Mode |
| Widget de chat web | Soporte de producto, onboarding | Tu sitio y tu política de privacidad | Alojamiento más costes de IA | Tu propia API |
Si estás aprendiendo, empieza por Telegram: creas un bot en dos minutos con BotFather y lo pruebas desde el móvil. Después construye el mismo bot en Discord para aprender interacciones y permisos.
Cómo llegan los eventos a tu código
Hay tres modelos de entrega, y la elección determina el alojamiento:
- Polling: tu proceso pregunta una y otra vez a la plataforma si hay eventos nuevos (
getUpdatesen Telegram). Sencillo, funciona detrás de NAT, pero necesita un proceso siempre encendido. - Webhooks: la plataforma envía un
POSTHTTPS a tu URL por cada evento. Eficiente y apto para serverless, pero necesitas un endpoint HTTPS público y verificar cada petición. - Conexiones persistentes: un WebSocket (Gateway de Discord) o Socket Mode (Slack). Baja latencia y acceso a eventos que no llegan de otra forma, pero exige un proceso de larga duración.
Regla práctica: usa webhooks en producción cuando la plataforma los ofrezca, y polling o sockets para desarrollo local y para funciones que los requieran.
Con estado o sin estado
Casi todos los bots necesitan recordar algo: el paso de una conversación, el idioma del usuario, una suscripción. Guarda el estado fuera del proceso para poder reiniciar, escalar y desplegar sin perderlo.
- Datos clave-valor pequeños: Redis, Cloudflare KV, DynamoDB.
- Datos relacionales: PostgreSQL, SQLite o Cloudflare D1.
- Memoria de conversación para bots de IA: guarda mensajes con un límite de retención y resume los historiales largos.
Diseña los manejadores para que procesar dos veces el mismo evento no cause daño. Las plataformas reintentan entregas y verás duplicados. Consulta fiabilidad y límites de tasa.
Una arquitectura mínima
plataforma --POST HTTPS--> edge / API gateway --> manejador (verifica, interpreta, confirma rápido)
|
v
cola / tarea en segundo plano --> IA, BD, otras APIs
|
v
API de la plataforma (respuesta)
Confirma rápido, haz el trabajo lento en segundo plano y responde mediante la API de la plataforma. Discord y Slack esperan respuesta en 3 segundos; Telegram y WhatsApp reintentan si tardas o devuelves errores.
Elegir lenguaje y biblioteca
Usa lo que tu equipo conoce. Los ecosistemas más maduros son:
- JavaScript o TypeScript: grammY y Telegraf (Telegram), discord.js, Bolt para JavaScript (Slack). Funcionan en Node.js, Deno, Bun y Cloudflare Workers.
- Python: python-telegram-bot y aiogram, discord.py, Bolt para Python. Muy bueno para datos e IA.
- Go, Rust, Java, C#: hay bibliotecas sólidas para todas las plataformas grandes; útiles si te importan la memoria y la concurrencia.
Revisa el directorio para encontrar SDK oficiales y bibliotecas mantenidas.
Lista de lanzamiento
Antes de invitar a usuarios reales:
- Token y secretos en variables de entorno o en un gestor de secretos, nunca en el repositorio.
- Peticiones de webhook verificadas (cabecera secreta, firma HMAC o Ed25519).
- Scopes, intents y permisos mínimos.
- Un mensaje
/helpo "acerca de" que diga qué hace el bot, quién lo opera y cómo contactar. - Un aviso de privacidad: qué guardas, cuánto tiempo y cómo borrarlo.
- Limitación de tasa y backoff en las llamadas salientes.
- Registros estructurados con secretos y datos personales redactados.
- Una alerta cuando suben los errores o el webhook deja de recibir eventos.
- Un comando de parar o darse de baja que funcione.
Con qué no te ayudará este sitio
Spam, interacción falsa, granjas de cuentas, evasión de bloqueos, scraping detrás de inicios de sesión, relleno de credenciales o cualquier cosa diseñada para engañar a personas o plataformas. Eso incumple leyes y términos de servicio y perjudica a quien está al otro lado. Todo aquí supone que construyes algo que los usuarios pidieron.