bin | ||
lib | ||
scripts | ||
test | ||
web | ||
.envrc | ||
.gitignore | ||
analysis_options.yaml | ||
build.yaml | ||
config.json | ||
dart_test.yaml | ||
dev-compose.yml | ||
docker-compose.yml | ||
flake.lock | ||
flake.nix | ||
pubspec.lock | ||
pubspec.yaml | ||
README.md | ||
ROADMAP.md |
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
- Clone the repository
- Install the dependencies:
dart pub get
- Generate the JSON serialization code:
dart run build_runner build
- Configure the bot by editing
config.json
- Run the bot:
dart bin/mumbullet.dart
Docker Test Environment
The project includes a Docker Compose configuration for local testing with a Mumble server:
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:
{
"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 executablelib/
- Library codesrc/
- Source codeconfig/
- 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 filesweb/
- Web dashboard static files (planned)
Contributing
Contributions to implement the planned features are welcome! The project needs help with:
- Understanding and implementing the dumble library for Mumble connectivity
- Implementing audio streaming using FFmpeg and yt-dlp
- Building the web dashboard interface
- 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.