121 lines
3.2 KiB
Markdown
121 lines
3.2 KiB
Markdown
# 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.
|