It works baby, seems like timing could be improved or something, but it freakin works
This commit is contained in:
@@ -1,2 +1,120 @@
|
||||
A sample command-line application with an entrypoint in `bin/`, library code
|
||||
in `lib/`, and example unit test in `test/`.
|
||||
# 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.
|
||||
|
||||
Reference in New Issue
Block a user