A Discord bot built with TypeScript and discord.js v14.
- Slash Commands: Modern Discord slash command support
- Quote System: Add, remove, and retrieve quotes (including quote-via-reaction with 📖)
- Reaction Roles: Assign roles based on message reactions
- Invite Tracking: Track which invite was used when members join
- Temporary Voice Channels: Auto-create/delete voice channels
- Moderation: Mass move, clear messages, server settings
- Runtime: Node.js 22+ / TypeScript
- Discord: discord.js v14
- Database: PostgreSQL with Prisma ORM
- Background Jobs: pg-boss
- Testing: Vitest
- Docker & Docker Compose
- Discord Bot Token (Discord Developer Portal)
-
Clone the repository and copy environment file:
git clone https://github.com/GreaterGamersLounge/bot_man.git cd bot_man cp .env.example .env -
Edit
.envwith your Discord credentials:BOTMAN_BOT_TOKEN=your_bot_token DISCORD_CLIENT_ID=your_client_id
-
Start services:
docker compose up -d
-
Deploy slash commands (first time only):
docker compose exec bot npm run deploy-commands
# View bot logs
docker compose logs -f bot
# Run tests
docker compose run --rm bot npm run test:run
# Run linting
docker compose run --rm bot npm run lint
# Database migrations
docker compose exec bot npx prisma migrate dev
# Open Prisma Studio (database GUI)
docker compose --profile tools up -d
# Then visit http://localhost:5555src/
├── commands/ # Slash & prefix commands
├── events/ # Discord event handlers
├── services/ # Business logic
├── lib/ # Utilities (config, database, logger)
├── jobs/ # Background jobs (pg-boss)
└── types/ # TypeScript types
prisma/
└── schema.prisma # Database schema
To add the bot to your server: