Fortuna lleva mucho tiempo tirando dados, llevando la cuenta de las monedas y manteniendo las campañas en marcha en servidores de Discord. Pero, entre bastidores, el bot se había convertido en un único programa enorme que hacía malabares con todo a la vez, y las costuras empezaban a notarse. Así que hicimos eso a lo que todo proyecto longevo acaba enfrentándose: lo reconstruimos desde cero.
El nuevo Fortuna responde más rápido, aguanta mejor la carga, es más fácil de mejorar para nosotros y está listo para crecer junto a tu mesa. La mayor parte de ese trabajo ocurrió en lugares que nunca llegarás a ver, y eso es justamente lo que buscábamos. Pero los resultados se notan en todo lo que sí usas a diario. Aquí va la historia completa de lo que cambió y por qué importa.
El Fortuna original se basaba en un patrón muy común: un bot que mantiene una conexión permanente y siempre abierta con Discord —lo que Discord llama el gateway— y que escucha sin parar todo lo que ocurre en cada servidor al que pertenece. Para soportar la carga a medida que el bot crecía, esa conexión se dividía en varias copias paralelas, llamadas shards, cada una un proceso independiente en ejecución que había que vigilar, reiniciar y mantener sano.
Esto funciona, y funcionó durante años. Pero tiene un coste real. Un bot conectado de forma permanente consume memoria y mantiene estado constantemente, incluso cuando nadie escribe ningún comando. Cada servidor, canal y miembro que podía ver sumaba peso. Cuando un shard tropezaba, todo un grupo de servidores podía notarlo. Y cada función nueva había que entretejerla con cuidado en un programa que ya estaba haciendo una docena de cosas al mismo tiempo.
Queríamos algo más ligero. Algo que trabaje cuando hay trabajo, se mantenga en silencio cuando no lo hay y esté construido a base de piezas pequeñas que podamos arreglar o escalar una a una.
Los bots de Discord modernos tienen una opción mejor para los comandos: en lugar de mantener una conexión abierta a la espera, el bot puede dejar que Discord lo llame solo cuando alguien usa de verdad un comando de barra. Discord empaqueta el comando, lo envía como una única petición web segura, y el bot responde. Sin conexión permanente, sin peso en reposo. Cuando no pasa nada, el bot apenas consume recursos.
Ese es el corazón del nuevo diseño. Dividimos el viejo monolito en dos piezas bien enfocadas:
Piénsalo como un restaurante. El viejo Fortuna era un único cocinero frenético intentando tomar los pedidos, gestionar el comedor y llevar la cocina a la vez. El nuevo Fortuna tiene una cocina que se enciende al instante cuando llega un pedido (fortuna-http) y un único anfitrión atento en la puerta pendiente de quien entra (fortuna-gateway). Cada uno hace bien su trabajo, y ninguno ralentiza al otro.
Hablar de arquitectura está bien, pero esto es lo que de verdad vas a notar en tu servidor.
Respuestas más ágiles. Como el núcleo de comandos hace una sola cosa y no carga con peso en reposo, responde de forma rápida y constante. Hay menos cola por delante de cada comando.
Mayor fiabilidad. Las dos piezas son independientes. Si el ayudante de tiradas en el chat necesita reiniciarse, tus comandos de barra siguen funcionando sin pestañear. Los problemas quedan contenidos en lugar de propagarse por todo el bot.
Más estable bajo presión. Un núcleo de comandos sin estado no acumula peso a medida que se suman más servidores y jugadores. Las noches movidas se comportan mucho más como las tranquilas.
Mejoras más rápidas. Con un núcleo limpio y modular, podemos añadir y arreglar funciones sin alterar todo lo que las rodea. Los comandos nuevos encajan sin esfuerzo, lo que significa que las actualizaciones te llegan antes.
Una reconstrucción es también la oportunidad de lanzar esas cosas que llevábamos tiempo queriendo añadir. El nuevo Fortuna trae un buen puñado de novedades:
/lc para los miembros y /mod_lc para que los moderadores gestionen los saldos. Las recompensas y los rangos quedan acotados a tu comunidad./config en condiciones reúne los ajustes de cada servidor en un solo lugar, para que cada comunidad pueda afinar Fortuna según su forma de jugar./handouts dedicado, como debe hacerlo una buena mesa virtual./checkin facilita registrar la asistencia y mantener a tu grupo organizado.Todo esto convive con lo que Fortuna siempre hizo bien: tiradas de dados completas (tanto mediante comandos de barra como escribiéndolas directamente en el chat), la recompensa diaria, los rangos, la tienda y todo lo demás.
Una de las mayores mejoras de calidad de vida viene integrada de serie en el nuevo núcleo: localización completa. Fortuna ahora habla todos los idiomas de Discord —más de treinta locales— y elige el correcto de forma automática según los ajustes de Discord de cada usuario. Los nombres de los comandos, las descripciones y las respuestas llegan en el idioma de cada jugador, con una cadena de respaldo sensata para que nadie se quede nunca mirando una traducción que falta. Tanto si tu mesa juega en portugués, inglés, español, francés, japonés o cualquier cosa entre medias, Fortuna se adapta a cada persona.
Si te gustan los detalles técnicos, aquí van algunas de las decisiones de las que estamos orgullosos; y puedes saltarte tranquilamente esta sección si no es lo tuyo.
Cada petición de comando que llega de Discord se verifica criptográficamente con firmas Ed25519 antes de que Fortuna actúe, de modo que el bot solo responde a peticiones genuinas y sin manipular. El núcleo de comandos corre sobre Bun con el ligero framework Hono; el ayudante de tiradas en el chat es un pequeño programa en Go compilado de forma estática que permanece en reposo con una huella mínima. Ambos se distribuyen como imágenes limpias y contenedorizadas, lo que hace que los despliegues sean rápidos y repetibles. Y montamos una monitorización de errores en condiciones, para que, cuando algo salga mal, nos enteremos y podamos arreglarlo deprisa, con el cuidado de no registrar jamás nada sensible.
El motor de dados compartido usa las mismas matemáticas de confianza que mueven nuestras otras herramientas, así que una tirada significa exactamente lo mismo tanto si la haces en Discord como en cualquier otro lugar del ecosistema.
Nada de esto cambia el espíritu de Fortuna. Sigue siendo el bot simpático que tira tus dados y mantiene tu campaña organizada. Lo que cambió son los cimientos de debajo: más ligeros, más estables y construidos para que podamos seguir mejorándolo sin estorbarte.
Añade Fortuna a tu servidor, prueba los nuevos comandos y dinos qué te gustaría ver a continuación. Los dados están listos cuando tú lo estés.