Discord Soundboard
A complete Discord soundboard application with web dashboard, global hotkeys, and real-time voice channel integration. Perfect for gaming communities, streamers, and Discord servers.
โจ Features
๐ต Audio Management
- Web-based sound library with drag & drop upload
- Real-time sound playback in Discord voice channels
- Local preview before playing in Discord
- Search and filter your sound collection
๐ฎ Gaming Integration
- Overwolf hotkey system for instant sound triggering during gameplay
- Global hotkeys work across all applications
- No need to alt-tab - play sounds while gaming
๐ Real-time Dashboard
- Live bot connection status
- Voice channel monitoring
- Server and channel statistics
- Responsive design for all devices
๐ค Discord Bot
- Voice channel management (
!join,!leave) - Chat commands (
!play <sound_name>) - Multi-server support
- Reliable voice connections with discord.py 2.6.3
๐๏ธ Architecture
[React Dashboard] โโ Socket.io โโ [Node.js API] โโ HTTP โโ [Python Bot] โโ Discord
โ โ โ
Web Interface Real-time Updates Voice Channels
โ โ
[Overwolf Hotkeys] โโ Global Detection โโ API Calls
๐ Quick Start
One-command setup:
./start.sh # Starts backend + frontendIn a separate terminal:
uv run python bot/main.py # Start Discord botAccess your soundboard:
- Dashboard: http://localhost:3000
- API: http://localhost:3051
๐ Prerequisites
- Python 3.8+ with uv package manager
- Node.js 16+
- FFmpeg (for audio processing)
- Discord Bot Token (see setup below)
โ๏ธ Installation
1. Install Dependencies
# Python dependencies
uv sync
# Backend dependencies
cd backend && npm install
# Frontend dependencies
cd frontend && npm install2. Discord Bot Setup
- Go to https://discord.com/developers/applications
- Create new application โ Bot
- Copy bot token
- Invite bot to server with:
- Send Messages
- Connect & Speak in Voice Channels
- Use Voice Activity
3. Environment Configuration
# Copy template and edit
cp .env.example .env
# Required variables:
DISCORD_TOKEN=your_bot_token_here
PORT=3051
BACKEND_URL=http://localhost:3051
FRONTEND_URL=http://localhost:3000๐ฏ Usage
Basic Workflow
- Upload sounds via web dashboard (drag & drop)
- Join voice channel in Discord
- Bot joins with
!joincommand - Play sounds via dashboard or
!play <name>
Hotkey System (Overwolf)
- Install Overwolf app from store
- Configure hotkeys in dashboard
- Play sounds instantly while gaming
- No interruption to gameplay
๐งช Testing
Complete test suite:
./run_tests.sh # All tests with coverage reportIndividual test suites:
# Python bot tests
uv run pytest tests/test_bot.py -v
# Backend API tests
cd backend && npm test
# Frontend component tests
cd frontend && npm test๐ก API Reference
Sound Management
GET /api/sounds- List all available soundsPOST /api/sounds/upload- Upload new sound filesDELETE /api/sounds/:filename- Remove sound from libraryPOST /api/play- Trigger sound playback in voice channel
Bot Status
GET /api/status- Current bot and voice connection statusPOST /api/bot/ready- Bot startup notification (internal)POST /api/bot/voice-status- Voice state updates (internal)
Server Information
GET /api/servers- List Discord servers (mock data)GET /api/channels/:serverId- List voice channels (mock data)
๐ฌ Discord Commands
!join- Bot joins your current voice channel!leave- Bot leaves voice channel!play <sound_name>- Play specific sound by name
๐ Project Structure
discord-soundboard/
โโโ ๐ค bot/ # Python Discord bot
โ โโโ main.py # Bot entry point
โ โโโ bot_windows.py # Windows-compatible version
โโโ โ๏ธ backend/ # Node.js API server
โ โโโ server.js # Express server + Socket.io
โ โโโ tests/ # Backend API tests
โโโ ๐จ frontend/ # React web dashboard
โ โโโ src/App.js # Main React component
โ โโโ src/components/ # UI components
โ โโโ tests/ # Frontend component tests
โโโ ๐ต sounds/ # Audio files storage
โโโ ๐งช tests/ # Python integration tests
โโโ ๐ start.sh # Quick start script
โโโ ๐ง run_tests.sh # Complete test suite
โโโ ๐ฆ pyproject.toml # Python dependencies
๐ง Development
Individual Component Development
# Backend with auto-reload
cd backend && npm run dev
# Frontend with hot reload
cd frontend && npm start
# Bot with debug logging
BOT_DEBUG=true uv run python bot/main.pyCode Quality
# Python formatting
uv run black bot/ tests/
# JavaScript/React linting (if configured)
cd backend && npm run lint
cd frontend && npm run lint๐ Production Deployment
Windows Host (Recommended for Production)
- Use
bot_windows.pyfor better voice stability - Run on Windows host machine (not WSL2)
- See
WINDOWS_SETUP.mdfor detailed instructions
Environment Variables for Production
DISCORD_TOKEN=production_bot_token
NODE_ENV=production
PORT=3051
BACKEND_URL=https://your-domain.com
FRONTEND_URL=https://your-frontend-domain.com๐ Troubleshooting
Voice Connection Issues
- โ Fixed: Upgraded to discord.py 2.6.3
- Ensure FFmpeg is installed and accessible
- Check Discord bot permissions (Connect, Speak)
- For WSL2: Consider using Windows host deployment
Common Issues
- Bot offline: Check Discord token and internet connection
- Upload fails: Verify file size limits and format support
- Hotkeys not working: Install Overwolf and configure permissions
๐ Status
โ Production Ready
- All core features implemented and tested
- Voice connection issues resolved (discord.py 2.6.3)
- Comprehensive test coverage
- Real-time web dashboard functional
- Overwolf hotkey integration complete
๐ License
MIT License - Feel free to use for personal and commercial projects.