Crea un bot de Telegram con IA y monitorización RSS

Bot de telegram alojado gratis qe envia actualizaciones de feeds RSS

Bot de Telegram serverless construido sobre Cloudflare Workers con IA y gestion de feeds RSS de cualquier plataforma.

Whale - Telegram Bot en Cloudflare Workers que envia notificaciones y gestiona grupos y canales

Whale es un bot de Telegram modular y serverless desarrollado para ejecutarse sobre Cloudflare Workers. Lo desarrollé como un proyecto personal para gestionar tanto mi canal como el grupo de Telegram, pero decidí publicarlo como código abierto para que cualquiera pueda desplegar su propia instancia o utilizarlo como base para crear un bot similar.

Características principales

Gracias a la arquitectura edge de Cloudflare y Cloudflare KV, Whale ofrece bajas latencias, un consumo mínimo de recursos y un costo de operación prácticamente nulo. Además, puede gestionar múltiples feeds RSS/Atom, comprobarlos periódicamente y enviar automáticamente las nuevas publicaciones a los canales de Telegram donde está agregado, entre otras características:

  • IA con Groq: Respuestas mediante menciones, respuestas y el comando /ask.
  • Formateo automático: Convierte Markdown a HTML compatible con Telegram.
  • Monitor RSS/Atom: Detecta y publica novedades automáticamente evitando duplicados.
  • Seguridad y acceso: Webhook protegido, control de acceso de canales/grupos y rate limiting.
  • Limpieza automática: Elimina mensajes de servicio de Telegram, como entradas, salidas, etc.

Nota: No es necesario configurar todas las características. Puedes activar y utilizar únicamente las que necesites y dejar las demás deshabilitadas.

Arquitectura y tecnologías

Requisitos previos

  1. Node.js v18+ y pnpm (o npm).
  2. Cuenta de Cloudflare con Wrangler autenticado.
  3. Bot de Telegram creado con @BotFather.
  4. ID numérico de tu usuario de Telegram para el rol de administrador.
  5. Clave de API de Groq para las funciones de IA.

Instalación y configuración

Para comenzar, clona el repositorio (o haz un fork) e instala sus dependencias:

git clone https://github.com/zkreations/whale.git mybot
cd mybot
pnpm install

Crea el espacio de nombres (KV Namespace) en Cloudflare para almacenar los datos persistentes:

npx wrangler kv namespace create KV_WHALE_STORAGE

Copia el identificador generado y edita el archivo wrangler.toml con los datos correspondientes:

name = "whale-bot"
main = "src/index.js"
compatibility_date = "2026-01-01"

[vars]
GROQ_MODEL = "openai/gpt-oss-120b"

[[kv_namespaces]]
binding = "KV_WHALE_STORAGE"
id = "TU_NAMESPACE_ID"

[triggers]
crons = [ "*/5 * * * *" ]

[observability.logs]
enabled = true
persist = true
invocation_logs = true

Configura las variables secretas necesarias con Wrangler. Ejecuta cada comando por separado e introduce el valor correspondiente cuando se te solicite:

# Token del bot generado por @BotFather
npx wrangler secret put TELEGRAM_TOKEN

# Clave de API de Groq
npx wrangler secret put GROQ_API_KEY

# Tu ID numérico de Telegram (para autorizar /admin)
npx wrangler secret put ADMIN_CHAT_ID

# Token secreto aleatorio para validar las peticiones del webhook
npx wrangler secret put WEBHOOK_SECRET

Despliega el Worker en la red de Cloudflare:

pnpm run deploy

Por último, registra el Webhook en la API de Telegram apuntando a la URL proporcionada por Cloudflare:

curl -X POST "https://api.telegram.org/bot<TELEGRAM_TOKEN>/setWebhook" \
     -H "Content-Type: application/json" \
     -d '{
       "url": "https://whale-bot.<tu-subdominio>.workers.dev/endpoint",
       "secret_token": "<TU_WEBHOOK_SECRET>",
       "allowed_updates": ["message", "callback_query", "my_chat_member"]
     }'

Variables de entorno y opciones

Variable secreta Descripción Ejemplo
TELEGRAM_TOKEN Token oficial de la API de Telegram 123456789:ABCdefGHI...
GROQ_API_KEY Clave de acceso a Groq Cloud gsk_...
ADMIN_CHAT_ID ID de usuario con permisos de administrador 123456789
WEBHOOK_SECRET Token secreto para autenticar llamadas al webhook f7a8b9c0d1e2...

También puedes personalizar el comportamiento y el idioma del bot editando src/config/index.js. A continuación se describen las opciones más importantes:

Opción Descripción Valor por defecto
WEBHOOK_PATH Ruta del webhook HTTP /endpoint
AUTO_DELETE_SERVICE_MESSAGES Elimina mensajes de servicio true
SEND_FEED_UPDATES_IN_CHANNELS Publica feeds en canales true
SEND_FEED_UPDATES_IN_GROUPS Publica feeds en grupos false
ALLOW_BOT_ADDITION_TO_NEW_CHATS Permite añadir el bot a nuevos chats true
ALLOW_AI_IN_PRIVATE Permite IA en chats privados false
ALLOW_AI_IN_GROUPS Permite IA en grupos true
ADMIN_TIMEOUT_SECONDS Expiración de sesiones de /admin 180
GROQ_MAX_TOKENS Límite de tokens de IA 800
GROQ_SYSTEM_PROMPT Prompt del sistema de IA
THINKING_INTERVAL Intervalo de actualización del indicador 500 ms
THINKING_FRAMES Animación del indicador de espera 🐋 thinking...
CUSTOM_COMMANDS Comandos personalizados y alias {}

Panel de administración

El comando /admin abre un panel de administración interactivo mediante botones inline de Telegram. Desde este menú puedes gestionar las principales funciones del bot sin necesidad de modificar directamente su configuración.

  • Enviar a todos: Envía un mensaje a todos los canales y grupos registrados.
  • Enviar a un chat: Envía un mensaje a un canal o grupo específico.
  • Gestionar feeds: Permite agregar, editar, eliminar y probar feeds RSS/Atom.

El acceso al panel está restringido al usuario configurado mediante ADMIN_CHAT_ID, y las sesiones expiran automáticamente después del tiempo definido en ADMIN_TIMEOUT_SECONDS.

Comandos personalizados

Puedes definir respuestas directas o plantillas en src/config/index.js dentro del objeto CUSTOM_COMMANDS:

export const CUSTOM_COMMANDS = {
  // Respuesta simple usando variables de plantilla
  greet: 'Hola, {name}! ¿En qué puedo ayudarte hoy?',

  // Comando avanzado con alias y respuesta directa
  help: {
    response: '¡Hola {first_name}! Puedes usar `/ask` para interactuar con la IA.',
    aliases: ['start', 'info'],
    reply: true,
  },
}

Variables disponibles: {first_name}, {last_name}, {name}, {username}, {user_id}, {chat_title} y {args}.

Scripts de utilidad

Comando Descripción
pnpm run dev Inicia el entorno de desarrollo local con Wrangler
pnpm run deploy Compila y despliega el Worker en Cloudflare
pnpm run lint Ejecuta la revisión de código con ESLint
pnpm run lint:fix Corrige automáticamente el formato y problemas de estilo

Conclusion

Whale combina Telegram, Cloudflare Workers y Groq en un bot ligero, modular y fácil de personalizar. Su arquitectura serverless permite mantenerlo operativo con un consumo mínimo de recursos y, aunque comenzó como un proyecto personal, decidí publicarlo como código abierto para que puedas construir tu propia instancia.

Si buscas un punto de partida para crear un bot de Telegram con IA, automatizaciones y monitorización de feeds sin necesidad de mantener un servidor tradicional, Whale puede ser una buena alternativa.