7dbe952929441f80d9dabbd50c2f7e0951531473
Joel Discord Bot
A Discord bot with AI-powered responses and message tracking.
Quick Start
# Install dependencies
bun install
# Set environment variables
cp .env.example .env
# Edit .env with your tokens
# Run in development mode
bun run dev
# Run in production
bun run start
Project Structure
See src/README.md for detailed architecture documentation.
src/
├── core/ # Bot client, config, logging
├── commands/ # Slash commands
├── events/ # Discord event handlers
├── features/ # Feature modules (Joel AI, message logging)
├── services/ # External services (AI providers)
├── database/ # Database schema and repositories
└── utils/ # Shared utilities
Environment Variables
| Variable | Description |
|---|---|
DISCORD_TOKEN |
Discord bot token |
DISCORD_CLIENT_ID |
Discord application client ID |
DISCORD_CLIENT_SECRET |
Discord application client secret |
OPENROUTER_API_KEY |
OpenRouter API key for AI |
KLIPY_API_KEY |
Klipy API key for GIF search (optional) |
ELEVENLABS_API_KEY |
ElevenLabs API key for voiceover |
ELEVENLABS_VOICE_ID |
Default ElevenLabs voice ID (optional) |
ELEVENLABS_MODEL |
ElevenLabs model ID (default: eleven_multilingual_v2) |
WEB_PORT |
Port for web dashboard (default: 3000) |
WEB_BASE_URL |
Base URL for web dashboard |
SESSION_SECRET |
Secret for session encryption |
Scripts
| Script | Description |
|---|---|
bun run dev |
Development with hot reload |
bun run start |
Production start |
bun run build |
Build for production |
bun run db:generate |
Generate DB migrations |
bun run db:migrate |
Run DB migrations |
bun run db:studio |
Open Drizzle Studio |
bun run typecheck |
Type check without emit |
Languages
TypeScript
82.1%
CSS
11%
JavaScript
6%
Nix
0.4%
Dockerfile
0.3%
Other
0.2%