Aetheris: Infraestructura de Discord como Código Declarativo
Motor autónomo para servidores de Discord: manifiestos YAML versionables en Git, diff idempotente antes de aplicar y un bot en Python como única ruta de escritura.
El servidor, declarado en un manifiesto
Aetheris trata la configuración de un servidor de Discord como código. Roles, categorías, canales, overwrites de permisos, reglas de AutoMod y embeds se describen en un manifiesto YAML (schema_version: 1) que vive en un repositorio Git, donde se revisa, se versiona y se revierte como cualquier otro código. El dashboard (planobinario/aetheris-web, Astro 5 servido desde Cloudflare Pages) edita, valida y previsualiza. El bot (planobinario/aetheris, Python con discord.py y Pydantic) ejecuta. Nada se toca a mano en producción.
Una sola ruta de escritura
La regla que sostiene el sistema es simple: solo el bot muta Discord. La web valida el manifiesto para rechazar rápido lo que no cumple el contrato, encola un trabajo (apply o structure_sync) en el worker aetheris-lock, construido sobre Durable Objects con un tope de 25 trabajos y expiración de 10 minutos, y devuelve el progreso en directo. Si el bot no está consumiendo la cola, la sesión falla con un 503 apply_requires_worker en vez de fingir que aplicó. El antiguo motor de escritura en TypeScript se eliminó por completo: unas 1.700 líneas menos que mantener.
Diff antes de tocar nada
Cada aplicación empieza comparando el estado vivo del servidor con el manifiesto y mostrando el delta: qué roles, canales y permisos cambian y en qué orden. Las dependencias se resuelven en un grafo acíclico (categorías, roles, canales, overwrites y AutoMod) para no pedir identificadores que aún no existen. El despachante respeta los buckets de rate limit de Discord leyendo las cabeceras X-RateLimit en tiempo real, con colas separadas por ruta en lugar de ráfagas que terminan en un 429.
Permisos y AutoMod con números reales
Los 53 flags de permiso se validan como máscaras de bits con su precedencia de jerarquía, de modo que un override a nivel de canal no pueda colarse por encima de un rol de moderación mal configurado. Las reglas anti-raid se compilan a autómatas finitos deterministas para que la protección contra phishing, token-grabbers y filtros de invitaciones quepa en el presupuesto de Discord: 260 caracteres y 10 reglas por servidor.
Sesiones, auditoría y puesta en producción
El acceso pasa por OAuth2 de Discord. Los tokens viajan sellados con AES-256-GCM y el middleware verifica Origin y Sec-Fetch-Site en cada petición. La API del dashboard admite 30 peticiones por minuto e IP y rechaza cuerpos de más de 260 KB antes de parsearlos. Cada ejecución deja su rastro de auditoría. El camino inverso también existe: el workspace genera el manifiesto a partir del servidor vivo, con emojis, stickers, sonidos e identidad acompañados de su SHA-256.
El bot corre como servicio systemd dedicado y la web sirve desde el borde. Publicar código y desplegar son dos pasos separados y deliberados, nunca un push accidental.