Um bot modular para Discord construído com JDA 5, com banco de dados local gerenciado por Docker e PostgreSQL.
Versão Atual: Beta 0.2 (17 de Junho de 2025)
- Conexão com a API do Discord usando JDA 5.
- Infraestrutura de banco de dados (PostgreSQL) gerenciada via Docker Compose.
- Carregamento dinâmico de Slash Commands.
- Configuração flexível para dados não-sensíveis (
config.properties). - Logging configurado com Logback.
- JDK (Java Development Kit): Versão 17 ou superior.
- Maven: Para gerenciamento de dependências e build do projeto.
- Docker: Para executar e gerenciar a infraestrutura do banco de dados.
- Conta Discord e Bot Application: Necessária para obter o token do bot.
A configuração do projeto é dividida em duas partes: a infraestrutura (o banco de dados) e a aplicação (o bot).
Usamos um arquivo .env para facilitar a configuração do Docker Compose sem expor senhas.
- Navegue até o diretório de infraestrutura (infra).
- Você encontrará um arquivo chamado
.env.example. Copie este arquivo e renomeie a cópia para.env. - Abra o novo arquivo
infra/.enve defina uma senha paraPOSTGRES_PASSWORD.
O bot em si precisa de suas próprias variáveis de ambiente para dados sensíveis. Elas devem ser configuradas no seu sistema ou na sua IDE, fora do projeto.
Variáveis de Ambiente Obrigatórias para o Bot:
DISCORD_BOT_TOKEN: O token de autenticação do seu bot.DATABASE_URL: A URL de conexão JDBC completa. Use os mesmos dados que você definiu no arquivoinfra/.env.
Exemplo de como definir as variáveis:
- Linux/macOS:
export DISCORD_BOT_TOKEN="SEU_TOKEN_AQUI" export DATABASE_URL="jdbc:postgresql://localhost:5432/<postgres_db>?user=<postgres_user>&password=<postgres_password>"
- Windows (CMD):
set DISCORD_BOT_TOKEN=SEU_TOKEN_AQUI set DATABASE_URL=jdbc:postgresql://localhost:5432/<postgres_db>?user=<postgres_user>&password=<postgres_password>
- Windows (PowerShell):
$env:DISCORD_BOT_TOKEN=SEU_TOKEN_AQUI $env:DATABASE_URL=jdbc:postgresql://localhost:5432/<postgres_db>?user=<postgres_user>&password=<postgres_password>
Importante: Nunca coloque o token do bot ou a DATABASE_URL diretamente no código ou em arquivos versionados pelo Git!
-
Iniciar o Banco de Dados:
- Abra um terminal e navegue até a pasta
infra/. - Execute o comando abaixo. O Docker Compose irá ler seu arquivo
infra/.enve iniciar o container do PostgreSQL em segundo plano.docker compose up -d
- Abra um terminal e navegue até a pasta
-
Compilar (Build) a Aplicação:
- Volte para o diretório raiz do projeto.
- Compile e empacote a aplicação:
mvn clean package
-
Executar o Bot:
- Execute o JAR gerado. A aplicação Java lerá as variáveis de ambiente (
DISCORD_BOT_TOKEN,DATABASE_URL) para se conectar aos serviços.(Lembre-se de substituir pelo nome exato do seu arquivo JAR)java -jar target/AstolfoBot-0.1.jar
- Execute o JAR gerado. A aplicação Java lerá as variáveis de ambiente (
infradocker-entrypoint-initdb.dcompose.yaml.env
src/main/javaDiscordBot: Classe principal.commands/: Comandos Slash.listeners/: Classes que ouvem eventos do JDA.ReadyListener: Ouve o evento Ready e coordena a inicialização.SlashCommandListener: Ouve e processa interações de Slash Command.
handlers/: Pacote contendo lógica de gerenciamento.CommandHandler: Responsável por carregar e registrar os comandos.
src/main/resources: Contém arquivos de recursos.pom.xml: Arquivo de configuração do build tool.