Skip to content

Latest commit

 

History

History
95 lines (72 loc) · 3.37 KB

README.md

File metadata and controls

95 lines (72 loc) · 3.37 KB

codiconomy

Bot Discord de economia (CD$ — Codify Money) feito com discord.js 14, Bun, SQLite e Drizzle: conta com dinheiro limpo e sujo, banco, trabalho, quiz, crime e roubo, prisão e fiança, investimentos, cassino (roleta, blackjack, caça-níqueis e corrida de cavalos), notícias e eventos, temporadas e ranking.

Os imports internos usam o alias @/*, que aponta para src/*:

import { Color } from "@/shared-domain/messages";

Configuração

  1. Crie uma aplicação no Discord Developer Portal.

  2. Em Bot, crie o bot e copie o token; em General Information, copie o Application ID.

  3. Ative o Developer Mode no Discord e copie o ID do servidor de teste.

  4. Instale o bot no servidor com os scopes bot e applications.commands.

  5. Copie .env.example para .env e preencha:

    cp .env.example .env
    DISCORD_TOKEN=seu-token
    DISCORD_CLIENT_ID=seu-application-id
    DISCORD_GUILD_ID=seu-server-id
    SQLITE_DATABASE_PATH=./storage/codiconomy.sqlite

O Bun carrega o .env automaticamente. Não faça commit do arquivo .env nem compartilhe o token.

Instalar e iniciar

bun install
bun run db:migrate   # cria o banco (necessário antes do primeiro start)
bun run check
bun test
bun run dev

Os comandos slash são registrados em cada inicialização, somente no servidor definido por DISCORD_GUILD_ID. Para executar sem watch, use bun run start.

O schema foi recriado do zero. Se você tem um banco local da versão anterior (carteiras/CDC), mova-o antes de migrar — veja docs/DEVELOPMENT.md.

Comandos

Área Comandos
Conta /cadastrar, /perfil [usuario], /extrato
Banco /depositar, /sacar, /pix
Ganhos /trabalhar, /quiz, /investir, /investimentos
Mundo /noticias, /ranking
Crime /crime, /roubar, /fianca, /trabalhar voluntario:true
Cassino /roleta, /blackjack, /cacaniqueis, `/cavalos abrir
Admin `/admin parametro
Outros /ping

As regras completas estão em docs/RULES.md.

Documentação

Persistência

O SQLite é aberto pelo composition root com uma única conexão gerenciada pelo Drizzle. Drizzle e bun:sqlite ficam restritos a src/database. O schema fica em src/database/schema/index.ts e os modelos em src/database/models/. As migrations recebem prefixos de timestamp:

bun run db:generate -- --name=nome-da-migration
bun run db:migrate

db:migrate usa o migrator oficial do Drizzle para Bun/SQLite; não é necessário criar DATABASE_URL.

Simulações

bun run sim:casino    # RTP de cada jogo e piso de 3% de vantagem da casa
bun run sim:economy   # jogadores de vários perfis ao longo de uma temporada