Files
discord.js/packages/voice
Snazzah 8bdea6232b feat: implement DAVE end-to-end encryption (#10921)
* feat(voice): implement DAVE E2EE encryption

* chore(voice): update dependencies

* chore(voice): update debug logs and dependency report

* feat(voice): emit and propogate DAVESession errors

* chore(voice): export dave session things

* chore(voice): move expiry numbers to consts

* feat(voice): keep track of and pass connected client IDs

* fix(voice): dont set initial transitions as pending

* feat(voice): dave encryption

* chore(voice): directly reference package name in import

* feat(voice): dave decryption

* chore(deps): update @snazzah/davey

* fix(voice): handle decryption failure tolerance

* fix(voice): move and update decryption failure logic to DAVESession

* feat(voice): propogate voice privacy code

* fix(voice): actually send a transition ready when ready

* feat(voice): propogate transitions and verification code function

* feat(voice): add dave options

* chore: resolve format change requests

* chore: emit debug messages on bad transitions

* chore: downgrade commit/welcome errors as debug messages

* chore: resolve formatting change requests

* chore: update davey dependency

* chore: add types for underlying dave session

* fix: fix rebase

* chore: change "ID" to "id" in typedocs

---------

Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com>
2025-07-13 17:02:56 +00:00
..
2023-05-03 02:14:22 +02:00
2023-05-03 02:14:22 +02:00
2022-06-07 10:51:33 +02:00


discord.js


Discord server npm version npm downloads Build status Last commit. Code coverage

Vercel Cloudflare Workers

About

@discordjs/voice is a TypeScript implementation of the Discord Voice API for Node.js.

Features:

  • Send and receive* audio in Discord voice-based channels
  • A strong focus on reliability and predictable behavior
  • Horizontal scalability and libraries other than discord.js are supported with custom adapters
  • A robust audio processing system that can handle a wide range of audio sources

*Audio receive is not documented by Discord so stable support is not guaranteed

Installation

Node.js 22.12.0 or newer is required.

npm install @discordjs/voice
yarn add @discordjs/voice
pnpm add @discordjs/voice
bun add @discordjs/voice

Dependencies

This library has several optional dependencies to support a variety of different platforms. Install one dependency from each of the categories shown below. The dependencies are listed in order of preference for performance. If you can't install one of the options, try installing another.

Encryption Libraries (npm install):

Note

You only need to install one of these libraries if your system does not support aes-256-gcm (verify by running require('node:crypto').getCiphers().includes('aes-256-gcm')).

  • sodium-native: ^3.3.0
  • sodium: ^3.0.2
  • @stablelib/xchacha20poly1305: ^2.0.0
  • @noble/ciphers: ^1.0.0
  • libsodium-wrappers: ^0.7.9

Opus Libraries (npm install):

  • @discordjs/opus: ^0.4.0
  • opusscript: ^0.0.7

FFmpeg:

  • FFmpeg (installed and added to environment)
  • ffmpeg-static: ^4.2.7 (npm install)

Examples

The voice-examples repository contains examples on how to use this package. Feel free to check them out if you need a nudge in the right direction.

Contributing

Before creating an issue, please ensure that it hasn't already been reported/suggested, and double-check the documentation.
See the contribution guide if you'd like to submit a PR.

Help

If you don't understand something in the documentation, you are experiencing problems, or you just need a gentle nudge in the right direction, please don't hesitate to join our official discord.js Server.