Skip to main content
Голосовое подключение использует два WebSocket-соединения:
  1. основной Gateway управляет состоянием приложения;
  2. Miscord Voice Gateway выполняет voice handshake и WebRTC-сигнализацию.
Медиатрафик передаётся как Opus через WebRTC/DTLS-SRTP и не проходит через основной Gateway.

Требования

  • приложение установлено на сервер с областью bot;
  • роль приложения имеет права VIEW_CHANNEL, CONNECT и SPEAK;
  • при установке включён intent GUILD_VOICE_STATES (1 << 7);
  • Gateway-сессия идентифицирована Bot Token.

Запрос на подключение

Отправьте opcode 4 в основной Gateway:
Для выхода передайте channel_id: null. Если проверка прав и лимита канала прошла, основной Gateway отправит два события:
Voice Token является одноразовым короткоживущим секретом. Не сохраняйте его и не выводите в логи.

Voice Gateway handshake

Подключитесь к wss:// + endpoint. Сервер первым отправляет opcode 8 Hello с heartbeat_interval. Ответьте opcode 0 Identify:
Opcode 2 Ready содержит ssrc, список ice_servers, участников и транспорт webrtc. Выберите протокол:
Перед передачей аудио отправьте opcode 5 Speaking. Heartbeat отправляется opcode 3, подтверждение приходит opcode 6.

WebRTC-сигнализация

SDP и ICE передаются в том же Voice WebSocket как Miscord media extension:
Аналогично используются типы answer, ice_candidate и request_offer. Меньший user_id создаёт offer, что предотвращает одновременные конфликтующие предложения.

Готовый Music Bot

Пример очереди, slash-команд, YouTube-резолвера и Opus/WebRTC-передачи.