No description
- JavaScript 99.6%
- Dockerfile 0.4%
|
All checks were successful
ci/woodpecker/push/check Pipeline was successful
Reviewed-on: #33 |
||
|---|---|---|
| .woodpecker | ||
| commands | ||
| .dockerignore | ||
| .gitignore | ||
| bridgehandler.js | ||
| commands.js | ||
| database.js | ||
| Dockerfile | ||
| eslint.config.js | ||
| example.env | ||
| index.js | ||
| interactions.js | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| renovate.json | ||
| rest.js | ||
| utils.js | ||
| voicehandler.js | ||
Temp-Voice-URC
Discord bot that creates temporary voice channels with admin panels. Users join a spawn channel to automatically get a private voice channel with a dedicated admin text channel and control panel.
Features
- Auto Channel Creation: Temporary voice + admin text channel created on spawn join
- Admin Control Panel: Rename, kick members, manage role permissions
- Auto-Cleanup: Channels deleted when empty
- Persistent Storage: SQLite database for settings and spawn configs
- Slash Commands:
/createspawn,/spawn,/permissions,/checkcategory,/bridge - Cross-Server Bridge: Sync messages between text channels on different servers
Prerequisites
- Node.js 18+
- Discord bot token & client ID
- Docker (optional)
Setup
git clone <repo> && cd Temp-Voice-URC
npm ci
cp example.env .env
# Edit .env with BOT_TOKEN and CLIENT_ID
node index.js
Environment Variables
| Variable | Description |
|---|---|
BOT_TOKEN |
Discord bot token |
CLIENT_ID |
Application client ID |
Get credentials from Discord Developer Portal → Bot section.
Usage
Spawn Channels
Create new spawn:
/createspawn category:<category> name:<optional_name>
Register existing channel:
/spawn add kanal:<voice-channel> kategorie:<category>
/spawn remove kanal:<voice-channel>
/spawn list
Commands
| Command | Description |
|---|---|
/createspawn |
Create new spawn channel |
/removespawn |
Remove and delete spawn |
/spawn add/remove/list |
Manage existing spawns |
/permissions |
Check bot permissions |
/checkcategory |
Check category permissions |
/bridge create/add/remove/list/delete |
Manage cross-server bridges |
Admin Panel (buttons in private text channel)
- ✏️ Rename channel (type new name)
- 👢 Kick all non-owner members
- ➕/➖ Add/remove role access
Bridge
Connect text channels across servers via webhooks. Bot must be in all servers.
/bridge create name:<name>
/bridge add kanal:<channel> bridge:<name>
Messages appear as: Username • Server Name
Permissions
| Permission | Required |
|---|---|
| Manage Channels, Send/Manage Messages, Move Members, Manage Roles, View Channels, Connect, Manage Webhooks | Server-wide |
Use /permissions and /checkcategory to verify setup.
Docker
docker build -t temp-voice-urc .
docker run -d --name temp-voice-urc -e BOT_TOKEN=x -e CLIENT_ID=x -v $(pwd)/data:/app/data temp-voice-urc
Or with docker-compose.yml:
services:
bot:
build: .
environment:
- BOT_TOKEN=${BOT_TOKEN}
- CLIENT_ID=${CLIENT_ID}
volumes:
- ./data:/app/data
restart: unless-stopped
Project Structure
├── commands/ # Slash command handlers
├── data/ # SQLite database (auto-created)
├── bridgehandler.js # Bridge message forwarding
├── commands.js # Command registration
├── database.js # SQLite setup
├── index.js # Main entry
├── interactions.js # Command/button handlers
├── utils.js # Utilities
└── voicehandler.js # Voice state handling
Database
SQLite (data/data.db) stores: spawn configs, active temp channels, user names, voice roles, bridges.