Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

codiconomy

Bot Discord inicial usando discord.js 14 e Bun.

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

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

Configuração

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

  2. Na aplicação, abra Bot, crie o bot e copie o token.

  3. Em General Information, copie o Application ID.

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

  5. Instale o bot no servidor usando os scopes bot e applications.commands.

  6. 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=./data/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 check
bun run dev

Os comandos slash são registrados automaticamente durante cada inicialização, somente no servidor definido por DISCORD_GUILD_ID, para que a atualização seja imediata. Para executar sem watch, use:

bun run start

Depois de iniciar, use /ping no servidor para receber Pong! ou /register para guardar/atualizar os dados do teu membro.

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 bootstrap injeta o cliente Drizzle no registry de comandos. O /register usa o repositório local de usuários para registrar ou atualizar o membro atual da guild.

O Drizzle Kit está configurado em drizzle.config.ts para usar SQLITE_DATABASE_PATH como caminho do arquivo SQLite. Não é necessário criar DATABASE_URL: para SQLite, o caminho local é usado diretamente em dbCredentials.url.

O schema Drizzle fica em src/database/schema/index.ts e exporta o modelo de src/database/models/users.ts. Como o bot opera em uma única guild, cada usuário possui um único registro em users, que combina identidade Discord e dados de membro do servidor. discord_id é a chave primária.

As migrations recebem prefixos de timestamp. Depois de alterar os modelos, gere e, quando apropriado, aplique a migration:

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

db:migrate usa o migrator oficial do Drizzle para Bun/SQLite e aplica a migration no banco indicado por SQLITE_DATABASE_PATH; não é necessário nem recomendado criar DATABASE_URL para SQLite.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages