No description
  • JavaScript 99.6%
  • Dockerfile 0.4%
Find a file
phil fb0f1d2017
All checks were successful
ci/woodpecker/push/check Pipeline was successful
Merge pull request 'ci: migrate pr-review pipeline to plugin' (#33) from fix/ci into main
Reviewed-on: #33
2026-04-24 20:41:05 +02:00
.woodpecker ci: migrate pr-review pipeline to plugin 2026-04-24 20:39:38 +02:00
commands removed perm check 2026-03-04 18:54:50 +01:00
.dockerignore added dockerignore 2026-02-23 12:29:11 +01:00
.gitignore Docker npm i to npm ci 2026-02-23 10:29:42 +01:00
bridgehandler.js echo prevention now correctly tracks only the specific message IDs 2026-03-25 19:39:58 +01:00
commands.js fix/refactor critical/medium issues 2026-03-21 10:41:02 +01:00
database.js ChannelBridge (#27) 2026-03-01 13:03:56 +01:00
Dockerfile Typo: Dockerfile 2026-03-22 16:34:18 +01:00
eslint.config.js Added eslint for dev depends 2026-01-11 21:32:36 +01:00
example.env Fixed hardcoded token split into using .env File 2026-01-12 18:55:22 +01:00
index.js fix/refactor critical/medium issues 2026-03-21 10:41:02 +01:00
interactions.js ChannelBridge (#27) 2026-03-01 13:03:56 +01:00
package-lock.json fix: upgrade discord.js to v14 and fix deprecation warning- Update discord.js from v13.17.1 to v14.18.0- Change 'ready' event to 'clientReady' for v15 compatibility- Remove BOM from index.js 2026-02-20 19:16:31 +01:00
package.json fix: upgrade discord.js to v14 and fix deprecation warning- Update discord.js from v13.17.1 to v14.18.0- Change 'ready' event to 'clientReady' for v15 compatibility- Remove BOM from index.js 2026-02-20 19:16:31 +01:00
README.md docs: trim bloated readme 2026-03-22 16:38:42 +01:00
renovate.json renovate.json aktualisiert 2026-02-22 21:02:35 +01:00
rest.js fix/refactor critical/medium issues 2026-03-21 10:41:02 +01:00
utils.js ChannelBridge (#27) 2026-03-01 13:03:56 +01:00
voicehandler.js ChannelBridge (#27) 2026-03-01 13:03:56 +01:00

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.