Entwicklerportal
Experimentell Die Bot- & App-Plattform wird aktiv weiterentwickelt. Die Unterstützung für selbst gehostete Server ist am 13.08.2026 erschienen und bietet weniger Funktionen als die Cloud. Sieh dir an, was unterstützt wird.
← Doku

Sprache

Sprach-Bots — einschließlich Lavalink und @discordjs/voice — funktionieren ohne Codeänderungen. GameVox spricht Discords Sprach-Gateway-Protokoll wortgetreu und überführt den AEAD-RTP-Strom dann als synthetischen Peer in die native WebRTC-SFU.

Kompatible Bibliotheken

  • Lavalink v3 + v4 (Java, JVM-Bots, die es über JDA / discord4j usw. ansprechen)
  • @discordjs/voice (Node)
  • discord.py mit Sprach-Extras (PyNaCl)
  • JDA mit dem Audio-Modul
  • discord4j
  • Eris mit den optionalen Sprach-Abhängigkeiten

Endpunkte

Pro Region — der Bot verbindet sich mit der Region, die ihm der VOICE_SERVER_UPDATE-Dispatch nennt.

  • compatible-voice-gateway-us.gamevox.com
  • compatible-voice-gateway-eu.gamevox.com
  • compatible-voice-gateway-ap.gamevox.com

Das Haupt-Gateway liefert anhand des SFU-Standorts des Kanals die richtige Region aus. Deine Bot-Bibliothek liest endpoint aus dem Dispatch und verbindet sich dorthin — kein manuelles Routing nötig.

Verbindungsablauf

  1. Der Bot sendet op:4 Update Voice State auf dem Haupt-Gateway (gateway.gamevox.com) mit channel_id.
  2. Das Haupt-Gateway liefert VOICE_STATE_UPDATE + VOICE_SERVER_UPDATE mit einem Endpunkt und einem Token pro Sitzung aus.
  3. Der Bot öffnet WSS zu wss://{endpoint}/?v=8 und sendet op:0 Identify mit {server_id, user_id, session_id, token}.
  4. Das Sprach-Gateway antwortet mit op:2 Ready und liefert ssrc, ip, port sowie die unterstützten Verschlüsselungsmodi.
  5. Der Bot führt die UDP-IP-Erkennung durch (74-Byte-Paket vom Typ 0x0001 → Rückantwort vom Typ 0x0002).
  6. Der Bot sendet op:1 Select Protocol mit dem gewählten Verschlüsselungsmodus.
  7. Das Sprach-Gateway antwortet mit op:4 Session Description und dem 32-Byte-secret_key.
  8. Der Bot streamt Opus über RTP, AEAD-verschlüsselt mit dem ausgehandelten Modus.

Verschlüsselungsmodi

Zwei AEAD-RTPSize-Modi werden unterstützt, passend zu Discord:

  • aead_aes256_gcm_rtpsize — bevorzugt. AES-256-GCM, wobei die Nonce aus einem 4-Byte-Zähler abgeleitet wird, der an die verschlüsselte Nutzlast angehängt ist.
  • aead_xchacha20_poly1305_rtpsize — Rückfall für Bibliotheken ohne AES-NI.

Ältere Modi (xsalsa20_poly1305, _lite, _suffix) werden nicht angeboten — Discord hat sie 2024 abgeschaltet und die großen Bibliotheken sind umgestiegen. Falls deine Bot-Bibliothek auf einen alten Modus festgelegt ist, aktualisiere sie.

Hinweise zu Lavalink

Lavalink liest den endpoint direkt aus VOICE_SERVER_UPDATE und baut die UDP-Verbindung selbst auf. Solange der Endpunkt erreichbar ist (das ist er), merkt Lavalink nicht, dass es nicht mit Discord spricht.

Getestete Versionen: Lavalink v3.7.x und v4.0.x. Wenn dir ein versionsspezifisches Problem begegnet, melde es im Entwicklerportal, damit wir in CI gegen deine Version testen können.

Latenzbudget

Ziel für die zusätzliche Bridge-Latenz: unter 5 ms, gemessen vom eingehenden UDP bis zum SFU-Ausgang. Über 5 ms klingt Musik falsch (Timing-Drift bei Notenanschlägen, Hi-Hat-Jitter). Die Bridge reicht Opus unverändert durch — kein Transcoding — der Kernwert ist also Entschlüsseln + Repaketieren.

Speaking-Ereignisse

op:5 Speaking ist bidirektional und identisch zu Discord. Das Sprach-Gateway ordnet die SSRCs eingehender menschlicher Sprecherinnen und Sprecher ihren Benutzer-IDs zu und liefert op:5 mit {ssrc, user_id} aus, damit der Bot sie zuordnen kann.

Sauber beenden

Das Senden von op:4 Update Voice State mit channel_id: null auf dem Haupt-Gateway beendet die Sitzung. Das Sprach-Gateway schließt den UDP-Socket und entfernt den synthetischen SFU-Peer; menschliche Zuhörende erhalten sofort kein Audio mehr.

Noch nicht unterstützt

  • DAVE / E2EE — Discords Ende-zu-Ende-verschlüsselter Sprachmodus pro Kanal. Noch kein Zeitplan.
  • Soundboard — Bots können keine Soundboard-Sounds abspielen.
  • Stage-Kanäle — werden auf dem Wire akzeptiert, aber ohne getrennte Behandlung von Publikum und Sprechenden.

← Zurück zur Doku