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";-
Crie uma aplicação no Discord Developer Portal.
-
Na aplicação, abra Bot, crie o bot e copie o token.
-
Em General Information, copie o Application ID.
-
Ative o Developer Mode no Discord e copie o ID do servidor de teste.
-
Instale o bot no servidor usando os scopes
boteapplications.commands. -
Copie
.env.examplepara.enve 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.
bun install
bun run check
bun run devOs 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 startDepois de iniciar, use /ping no servidor para receber Pong! ou /register
para guardar/atualizar os dados do teu membro.
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:migratedb: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.