# MumBullet - Mumble Music Bot A Dart-based framework for building a music bot that connects to Mumble servers, processes chat commands, downloads audio from URLs, and streams audio back to the server with queue management and admin dashboard functionality. ## Current Status This project is currently in development. The framework and architecture are set up, but the Mumble connectivity is not yet implemented due to limitations in the dumble library documentation. ### What Works - Configuration management - Logging system - Command line interface ### What's Planned - Mumble server connection - Command processing with permissions - YouTube audio downloading and streaming - Queue management - Admin dashboard ## Setup and Installation ### Prerequisites - Dart SDK (version 3.7.3 or later) - FFmpeg (for audio processing) - yt-dlp (for YouTube downloads) - Docker and Docker Compose (for local testing) ### Installation 1. Clone the repository 2. Install the dependencies: ```bash dart pub get ``` 3. Generate the JSON serialization code: ```bash dart run build_runner build ``` 4. Configure the bot by editing `config.json` 5. Run the bot: ```bash dart bin/mumbullet.dart ``` ### Docker Test Environment The project includes a Docker Compose configuration for local testing with a Mumble server: ```bash docker-compose up ``` This will start a Mumble server on port 64738 with the password "testpass". ## Configuration The bot is configured using a JSON file (`config.json` by default). You can specify a different configuration file using the `-c` command line option. Example configuration: ```json { "mumble": { "server": "localhost", "port": 64738, "username": "MusicBot", "password": "testpass", "channel": "Music" }, "bot": { "command_prefix": "!", "default_permission_level": 0, "max_queue_size": 50, "cache_directory": "./cache", "max_cache_size_gb": 5 }, "dashboard": { "port": 8080, "admin_username": "admin", "admin_password": "changeme" } } ``` ## Project Structure The project is organized into the following directories: - `bin/` - Main executable - `lib/` - Library code - `src/` - Source code - `config/` - Configuration management (implemented) - `logging/` - Logging system (implemented) - `audio/` - Audio downloading and conversion (planned) - `command/` - Command parsing and handling (planned) - `dashboard/` - Web dashboard (planned) - `mumble/` - Mumble connection and audio streaming (planned) - `queue/` - Music queue management (planned) - `storage/` - Database and cache management (planned) - `test/` - Test files - `web/` - Web dashboard static files (planned) ## Contributing Contributions to implement the planned features are welcome! The project needs help with: 1. Understanding and implementing the dumble library for Mumble connectivity 2. Implementing audio streaming using FFmpeg and yt-dlp 3. Building the web dashboard interface 4. Creating a robust queue management system ## Roadmap See the ROADMAP.md file for a detailed development plan. ## License This project is open source and available for collaborative development.