Files
joel/README.md
2026-02-23 15:16:15 +01:00

65 lines
2.3 KiB
Markdown

# Joel Discord Bot
A Discord bot with AI-powered responses and message tracking.
## Quick Start
```bash
# 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](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 |
| `AI_CLASSIFICATION_FALLBACK_MODELS` | Comma-separated fallback model IDs for classification requests |
| `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 |