Guía 01

Primeros pasos con bots: plataformas, arquitecturas y primeras decisiones

Antes de escribir código, toma cuatro decisiones: dónde están tus usuarios, cómo llegan los mensajes a tu código, dónde vive el estado y cómo se comporta el bot cuando algo falla.

Guía4 min de lecturaActualizado

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:

  1. Recibir un evento: un mensaje, la pulsación de un botón, un comando slash, un disparo programado, un webhook de otro servicio.
  2. Decidir: interpretar la entrada, comprobar permisos, consultar el estado y, quizá, llamar a un modelo de IA u otra API.
  3. Actuar: responder, actualizar un registro, publicar en un canal, abrir un ticket.
  4. 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 (getUpdates en Telegram). Sencillo, funciona detrás de NAT, pero necesita un proceso siempre encendido.
  • Webhooks: la plataforma envía un POST HTTPS 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 /help o "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.

Comprueba lo aprendido

1. ¿Qué modelo de entrega necesita un endpoint HTTPS público?
2. ¿Por qué los manejadores deben tolerar procesar dos veces el mismo evento?