5bf3b845e433a3656d4d6d7d982468ae98a443fa
voice-bridge
Verbindet Gruppen in Simple Voice Chat mit Voice-Channels in TeamSpeak und Discord („Crosstalk“). Jede Seite hört die beiden anderen: Discord und TeamSpeak bekommen je einen gemischten Stream, im Spiel kommt jeder externe Sprecher einzeln an (Lautstärke-Kategorie „Discord/TeamSpeak“).
| Modul | Läuft als | Inhalt |
|---|---|---|
plugin |
plugins/voice-bridge.jar auf Paper |
legt die Gruppen an, schickt/spielt Audio, Hinweis beim Beitritt |
bridge |
eigener Dienst (voice-bridge.jar) |
Discord-Bots (JDA + JDave), TeamSpeak-Clients (ts3j), Mischer (Concentus) |
protocol |
in beiden | UDP-Nachrichten Plugin ↔ Bridge (Standard: 127.0.0.1:24470) |
third_party/ts3j ist ein Git-Submodul (git submodule update --init), JitPack hat keinen aktuellen Build.
Bauen
./gradlew build
- Plugin:
plugin/build/libs/voice-bridge.jar - Bridge:
bridge/build/libs/voice-bridge.jar(Fat-Jar), starten mitjava --enable-native-access=ALL-UNNAMED -jar voice-bridge.jar config.yml
Verhalten
- Ein Raum ist aktiv, sobald auf mindestens zwei Seiten jemand ist.
- Bots verbinden sich nur, wenn der Raum aktiv ist und auf ihrer Seite jemand sitzt; danach bleiben
sie
lingerSeconds(Standard 15) verbunden. - TeamSpeak: ein Beobachter-Client ist dauerhaft verbunden (1 Slot), Raum-Clients nur bei Bedarf.
Fehlende Channels legt die Bridge unter
parentChannelan (braucht Rechte zum Anlegen). - Discord: ein Bot pro Raum (ein Bot kann pro Server nur in einem Voice-Channel sein). Fehlende
Channels legt der Bot in
categoryan. Einladen mithttps://discord.com/oauth2/authorize?client_id=APP_ID&scope=bot&permissions=70255632(Kanäle sehen, verbinden, sprechen, Kanäle verwalten, Nickname ändern).
Config
Vorlage: bridge/config.example.yml. Die echte config.yml enthält Bot-Tokens und gehört nicht ins Repo.
Stolpersteine
- glibc ≥ 2.38: Die
libdave.soaus JDave (und Discords eigene Builds) brauchen glibc 2.38 und GLIBCXX_3.4.32. Auf Debian 13 kein Problem, auf Ubuntu 22.04 lädt sie nicht („Cannot open library … dave….so“). Lokal hilft ein Debian-13-Loader: glibc und libstdc++ aus den trixie-Paketen entpacken undld-linux-x86-64.so.2 --library-path <libs>:$JAVA_HOME/lib:$JAVA_HOME/lib/server $JAVA_HOME/bin/java …starten. - TeamSpeak 6 (mhsl.eu): verlangt Security-Level 15, Nicknames höchstens 30 Zeichen.
Schnelle Reconnects lösen den Flood-Schutz aus (IP-Bann), deshalb Backoff beim Verbinden.
Den Bot-Identitäten am besten
b_client_ignore_antifloodgeben. - Discord: Die ersten Pakete nach dem Beitritt schlagen beim Entschlüsseln fehl („Decrypt failed“), bis DAVE die Schlüssel ausgehandelt hat. Das ist normal.
- Mit
-Dvoicebridge.ts3debug=trueloggt ts3j das TeamSpeak-Protokoll (Fehlercodes vom Server).
Languages
Java
100%