# discord-music-bot Discord music bot template written in NodeJS using `discord.js` and `erela.js`, with Lavalink support. ## Features - Slash commands: `/ping`, `/join`, `/play`, `/leave` - Lavalink integration for audio playback - Modular command handler structure ## Prerequisites - Node.js (>=14) - pnpm or npm - A Discord application with bot token - LavaLink server for audio streaming ## Setup 1. Copy `.env.example` to `.env` and fill in your credentials: ```env DISCORD_TOKEN=your_discord_bot_token CLIENT_ID=your_discord_application_id LAVALINK_HOST=127.0.0.1 LAVALINK_PORT=2333 LAVALINK_PASSWORD=your_lavalink_password ``` 2. Install dependencies: ```sh pnpm install ``` 3. Run tests: ```sh npm test ``` 4. Register slash commands: ```sh npm start # or node deploy-commands.js ``` 5. Start the bot: ```sh npm start ``` ## Docker A `Dockerfile` and `docker-compose.yml` are provided for containerized deployment. - Build and run with Docker Compose: ```sh docker-compose up --build ``` - Environment variables are loaded from `.env`. - Lavalink service is configured in `docker-compose.yml` alongside the bot. ## Project Structure - `src/index.js` — Entry point - `src/commands/` — Slash command modules - `src/events/` — Discord event handlers - `src/structures/` — Erela.js (Lavalink) event wiring - `src/utils/logger.js` — Logging setup - `deploy-commands.js` — Slash command registration script - `Dockerfile` — Bot container image - `docker-compose.yml` — Multi-service setup (bot + Lavalink) ## License MIT