Portal do Desenvolvedor
Experimental A plataforma de bots e apps está em desenvolvimento ativo. O suporte a servidores auto-hospedados chegou em 13/08/2026 com menos recursos que a nuvem. Veja o que é suportado.
← Documentação

Voz

Bots de voz — incluindo Lavalink e @discordjs/voice — funcionam sem mudanças de código. O GameVox fala o protocolo do gateway de voz do Discord ao pé da letra e depois leva o fluxo AEAD-RTP para o SFU WebRTC nativo como um peer sintético.

Bibliotecas compatíveis

  • Lavalink v3 + v4 (Java; bots JVM que o usam à frente via JDA / discord4j etc.)
  • @discordjs/voice (Node)
  • discord.py com os extras de voz (PyNaCl)
  • JDA com o módulo de áudio
  • discord4j
  • Eris com as dependências opcionais de voz

Endpoints

Por região — o bot se conecta à região que o despacho VOICE_SERVER_UPDATE indicar.

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

O gateway principal envia a região certa conforme a localização do SFU do canal. Sua biblioteca lê o endpoint do despacho e se conecta lá — sem roteamento manual.

Fluxo de conexão

  1. O bot envia op:4 Update Voice State no gateway principal (gateway.gamevox.com) com channel_id.
  2. O gateway principal envia VOICE_STATE_UPDATE + VOICE_SERVER_UPDATE com um endpoint e um token por sessão.
  3. O bot abre WSS para wss://{endpoint}/?v=8 e envia op:0 Identify com {server_id, user_id, session_id, token}.
  4. O gateway de voz responde op:2 Ready com ssrc, ip, port e os modos de criptografia suportados.
  5. O bot faz a descoberta de IP por UDP (pacote de 74 bytes do tipo 0x0001 → resposta do tipo 0x0002).
  6. O bot envia op:1 Select Protocol com o modo de criptografia escolhido.
  7. O gateway de voz responde op:4 Session Description com a secret_key de 32 bytes.
  8. O bot transmite Opus por RTP, criptografado com AEAD no modo negociado.

Modos de criptografia

Dois modos AEAD-RTPSize são suportados, igual ao Discord:

  • aead_aes256_gcm_rtpsize — preferido. AES-256-GCM com o nonce derivado de um contador de 4 bytes anexado ao payload criptografado.
  • aead_xchacha20_poly1305_rtpsize — alternativa para bibliotecas sem AES-NI.

Modos antigos (xsalsa20_poly1305, _lite, _suffix) não são oferecidos — o Discord os aposentou em 2024 e as principais bibliotecas migraram. Se a sua biblioteca está presa a um modo antigo, atualize-a.

Notas sobre o Lavalink

O Lavalink lê o endpoint direto do VOICE_SERVER_UPDATE e abre o UDP sozinho. Enquanto o endpoint estiver acessível (e está), o Lavalink não percebe que não está falando com o Discord.

Versões testadas: Lavalink v3.7.x e v4.0.x. Se encontrar um problema específico de versão, relate no portal para que possamos fixá-la na CI.

Orçamento de latência

Meta de latência adicionada pela ponte: abaixo de 5 ms, medida do UDP de entrada até a saída do SFU. Acima de 5 ms a música soa errada (desvio de tempo nos ataques de nota, jitter nos chimbais). A ponte faz repasse direto de Opus — sem transcodificação — então o número principal é descriptografar + reempacotar.

Eventos de fala

O op:5 Speaking é bidirecional e idêntico ao do Discord. O gateway de voz associa os SSRCs de quem está falando aos IDs de usuário e envia op:5 com {ssrc, user_id} para o bot poder correlacionar.

Encerrando corretamente

Enviar op:4 Update Voice State com channel_id: null no gateway principal encerra a sessão. O gateway de voz fecha o socket UDP e remove o peer sintético do SFU; quem está ouvindo para de receber áudio na hora.

Ainda não suportado

  • DAVE / E2EE — o modo de voz com criptografia ponta a ponta por canal do Discord. Ainda sem prazo.
  • Soundboard — bots não conseguem tocar sons do soundboard.
  • Canais de palco — aceitos no transporte, mas sem tratamento separado de plateia e quem fala.

← Voltar para a documentação