A modern Discord music bot built with Discord.js and Lavalink, featuring a monorepo architecture with Turbo and Yarn workspaces.
sirubot/
├── apps/
│ ├── bot/ # Discord bot application
│ ├── dashboard/ # Next.js web dashboard
│ └── shardmanager/ # Shard management server
└── packages/
├── prisma/ # Database schema and client
├── shardclient/ # Shard client library
└── utils/ # Shared utility functions
- Node.js 22+
- Yarn 4.6.0+
- A Discord bot token
- Lavalink server
The main Discord bot application built with:
- Discord.js v14 - Discord API wrapper
- Sapphire Framework - Command and event handling
- Lavalink Client - Audio streaming
- Prisma - Database ORM
A Next.js web dashboard for bot management:
- Next.js 15 - React framework
- Tailwind CSS v4 - Styling
- TypeScript - Type safety
Shared utility functions including:
- Array manipulation helpers
- Time formatting functions
- YouTube search functionality
- Discord embed builders
Database schema and client configuration for data persistence.
- Music Playback: High-quality audio streaming via Lavalink
- Queue Management: Add, skip, and manage music queues
- Voice Controls: Volume control and playback commands
- Auto-complete: Smart search suggestions for tracks
- Playlist Support: Create and manage playlists
# Development
yarn dev # Start all apps in development mode
yarn watch # Build and watch for changes
# Building
yarn build # Build all packages and apps
yarn generate # Generate Prisma client
yarn workspace @sirubot/prisma migrate:dev # Run Prisma migrations
# Testing & Linting
yarn lint # Lint all packages
yarn test # Run testsIndividual app commands can be run using turbo filters:
# Bot-specific commands
turbo build --filter=@sirubot/bot
turbo start --filter=@sirubot/bot
turbo dev --filter=@sirubot/bot
# Dashboard-specific commands
turbo dev --filter=@sirubot/dashboard
turbo build --filter=@sirubot/dashboard
# Utils package commands
turbo build --filter=@sirubot/utils
turbo watch --filter=@sirubot/utils- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Discord.js - Discord API wrapper
- Sapphire Framework - Discord bot framework
- Lavalink - Audio server
- Next.js - React framework
- Prisma - Database toolkit