A Discord YouTube music bot with a web dashboard interface.
- 🎵 Play music from YouTube URLs or search queries
- 🎛️ Web dashboard for remote control
- 📱 Discord slash commands and buttons
- 🔊 High-quality audio playback
- 📋 Queue management
- 🎤 Text-to-speech support (with ElevenLabs)
- 🔄 Auto-disconnect when voice channel is empty
- Python 3.8 or higher
- FFmpeg (for audio processing)
- A Discord bot token
- (Optional) ElevenLabs API key for TTS
git clone https://github.com/yourusername/sacudo.git
cd sacudopip install .This will install Sacudo and all its dependencies, making the sacudo command available system-wide.
Create a .env file in the project directory:
# Required
BOT_TOKEN=your_discord_bot_token_here
# Optional
API_PORT=8000
ELEVENLABS_API_KEY=your_elevenlabs_api_key_here
ELEVENLABS_VOICE_ID=your_voice_id_hereTo get a Discord bot token:
- Go to https://discord.com/developers/applications
- Create a new application
- Go to the "Bot" section
- Copy the token
Download from https://ffmpeg.org/download.html and add to PATH
# Ubuntu/Debian
sudo apt update && sudo apt install ffmpeg
# macOS
brew install ffmpegsacudoThis starts the Discord bot without the web dashboard.
sacudo --with-apiThis starts the Discord bot with the web API at http://localhost:8000.
sacudo --with-dashboardThis starts the Discord bot, web API, and React dashboard. The API will be available at http://localhost:8000 and the React frontend at http://localhost:3000.
sacudo --help # Show help message
sacudo --version # Show version
sacudo --with-api # Run with web API only
sacudo --with-dashboard # Run with API and React dashboard (requires Node.js)/play <song>- Play a song from YouTube/skip- Skip the current song/queue- Show the current queue/volume <1-100>- Set the volume/pause- Pause playback/resume- Resume playback/stop- Stop playback and clear queue/leave- Leave the voice channel/join- Join your voice channel/talk <text>- Text-to-speech (requires ElevenLabs)/debug- Show debug information
When running with --with-api, you can access the web dashboard at http://localhost:8000.
Features:
- View connected servers
- Control playback remotely
- Manage queue
- Real-time updates via WebSocket
python bot.py # Bot only
python bot.py --with-api # Bot with web dashboardpython -m pytest tests/-
"BOT_TOKEN is not set"
- Make sure you have a
.envfile with your bot token
- Make sure you have a
-
"FFmpeg not found"
- Install FFmpeg and ensure it's in your PATH
-
"Permission denied"
- Make sure the bot has the necessary permissions in your Discord server
-
YouTube extraction errors
- Check if cookies.txt exists and is properly formatted
- Some videos may be region-restricted
Bot logs are stored in bot.log with automatic rotation.
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
If you encounter any issues, please create an issue on GitHub or contact the maintainers.