Faz tempo que o Fortuna rola dados, controla moedas e mantém campanhas rodando redondo nos servidores do Discord. Nos bastidores, porém, o bot tinha virado um único programa enorme fazendo malabarismo com tudo ao mesmo tempo — e as rachaduras já começavam a aparecer. Então fizemos aquilo que todo projeto de longa data um dia precisa encarar: reconstruímos o bot do zero.
O novo Fortuna responde mais rápido, aguenta melhor a carga, é mais fácil de evoluir e está pronto para crescer junto com a sua mesa. A maior parte desse trabalho aconteceu em lugares que você nunca vai ver — e é exatamente esse o ponto. Mas o resultado aparece em todo canto onde você de fato usa o bot. Esta é a história completa do que mudou e por que isso importa.
O Fortuna original foi construído sobre um padrão bem comum: um bot que mantém uma conexão permanente e sempre aberta com o Discord — o que o Discord chama de gateway — e fica escutando tudo o que acontece em todos os servidores em que ele está, o tempo inteiro. Para dar conta da carga conforme o bot crescia, essa conexão era dividida em várias cópias paralelas, chamadas de shards, cada uma um processo separado que precisava ser monitorado, reiniciado e mantido saudável.
Isso funciona, e funcionou por anos. Mas tem um custo real. Um bot permanentemente conectado está sempre consumindo memória e segurando estado, mesmo quando ninguém está digitando comando nenhum. Cada servidor, canal e membro que ele conseguia enxergar pesava um pouco mais. Quando um shard tropeçava, um monte de servidores sentia. E cada recurso novo precisava ser costurado com cuidado dentro de um programa que já fazia uma dúzia de coisas ao mesmo tempo.
A gente queria algo mais enxuto. Algo que faz o trabalho quando há trabalho a fazer, fica quieto quando não há, e é montado a partir de pequenas peças que podemos consertar ou escalar uma de cada vez.
Os bots modernos do Discord têm uma opção melhor para comandos: em vez de manter uma conexão aberta esperando, o bot pode deixar que o Discord chame ele só quando alguém de fato usa um comando de barra. O Discord empacota o comando, manda tudo numa única requisição web segura, e o bot responde. Sem conexão permanente, sem peso ocioso. Quando não está acontecendo nada, o bot praticamente não consome recurso algum.
Esse é o coração do novo design. Dividimos o velho monolito em duas peças bem focadas:
Pense numa cozinha de restaurante. O Fortuna antigo era um único cozinheiro desesperado tentando anotar os pedidos, gerenciar o salão e tocar a cozinha ao mesmo tempo. O novo Fortuna tem uma cozinha que liga na hora em que o pedido chega (fortuna-http) e um único recepcionista atento na porta de olho em quem chega sem reserva (fortuna-gateway). Cada um faz bem o seu papel, e nenhum atrasa o outro.
Falar de arquitetura é legal, mas eis o que você vai de fato perceber no seu servidor.
Respostas mais ágeis. Como o núcleo de comandos faz uma coisa só e não carrega bagagem ociosa, ele responde rápido e de forma consistente. Sobra menos fila para um comando esperar.
Mais confiabilidade. As duas peças são independentes. Se o ajudante de rolagens no chat precisar reiniciar, seus comandos de barra continuam funcionando sem piscar. Os problemas ficam contidos em vez de se espalharem pelo bot inteiro.
Mais estável sob pressão. Um núcleo de comandos stateless não acumula peso à medida que mais servidores e jogadores chegam. As noites movimentadas passam a se comportar muito mais como as tranquilas.
Melhorias mais rápidas. Com um núcleo limpo e modular, conseguimos adicionar e corrigir recursos sem mexer em tudo ao redor. Comandos novos se encaixam de forma limpa, o que significa que as atualizações chegam até você mais cedo.
Uma reconstrução também é a chance de lançar aquelas coisas que a gente queria adicionar há tempos. O novo Fortuna traz um lote e tanto de novidades:
/lc para os membros e /mod_lc para os moderadores gerenciarem os saldos. Recompensas e ranks ficam restritos à sua comunidade./config de verdade reúne as configurações por servidor num só lugar, para que cada comunidade possa ajustar o Fortuna do jeito que joga./handouts, do jeito que uma boa mesa virtual merece./checkin facilita marcar presença e manter o grupo nos trilhos.Tudo isso convive com aquilo que o Fortuna sempre fez bem: rolagem de dados completa (tanto por comandos de barra quanto digitando as rolagens direto no chat), a recompensa diária, os ranks, a loja e o resto.
Uma das maiores melhorias de qualidade de vida já vem embutida no novo núcleo: localização completa. O Fortuna agora fala todos os idiomas do Discord — mais de trinta locales — e escolhe o certo automaticamente, com base nas configurações do Discord de cada usuário. Nomes de comandos, descrições e respostas chegam no idioma do próprio jogador, com uma cadeia de fallback sensata para que ninguém fique olhando para uma tradução faltando. Não importa se a sua mesa joga em português, inglês, espanhol, francês, japonês ou qualquer coisa no meio do caminho: o Fortuna encontra cada pessoa onde ela está.
Se você curte os detalhes técnicos, aqui vão algumas das escolhas das quais temos orgulho — e pode pular esta seção sem problema se não for o seu caso.
Toda requisição de comando vinda do Discord é verificada criptograficamente com assinaturas Ed25519 antes de o Fortuna agir, então o bot só responde a requisições genuínas e sem adulteração. O núcleo de comandos roda em Bun com o framework leve Hono; o ajudante de rolagens no chat é um pequeno programa em Go compilado estaticamente, que fica ocioso com uma pegada mínima. Os dois são entregues como imagens limpas e conteinerizadas, o que torna os deploys rápidos e repetíveis. E ligamos um monitoramento de erros de verdade, para que, quando algo der errado, a gente fique sabendo e possa corrigir rápido — sempre com o cuidado de nunca registrar nada sensível.
O motor de dados compartilhado é a mesma matemática confiável que move as nossas outras ferramentas, então uma rolagem significa exatamente a mesma coisa, seja você fazendo ela no Discord ou em qualquer outro canto do ecossistema.
Nada disso muda o espírito do Fortuna. Ele continua sendo o bot camarada que rola os seus dados e mantém a sua campanha organizada. O que mudou foi a fundação por baixo: mais enxuta, mais estável e construída para que a gente possa seguir melhorando sem nunca atrapalhar o seu jogo.
Adicione o Fortuna ao seu servidor, experimente os novos comandos e nos conte o que você gostaria de ver a seguir. Os dados estão prontos quando você estiver.