Skip to content

VoiceConnection

Package: @erinjs/voice

Voice connection using Discord's UDP-based protocol. Emits ready, error, disconnect.

Constructor

NameTypeOptionalDescription
clientClientNo
channelVoiceChannelNo
userIdstringNo

Properties

NameTypeReadonlyOptionalDescription
audioPacketQueueBuffer<ArrayBufferLike>[]NoNo
channelVoiceChannelYesNo
clientClientYesNo
currentStream{ destroy?: () => void; } | nullNoNo
guildIdstringYesNo
heartbeatIntervalNodeJS.Timeout | nullNoNo
pacingIntervalNodeJS.Timeout | nullNoNo
playingbooleanYesNoWhether audio is currently playing.
remoteUdpAddressstringNoNo
remoteUdpPortnumberNoNo
secretKeyUint8Array<ArrayBufferLike> | nullNoNo
sequencenumberNoNo
sessionIdstring | nullYesNoDiscord voice session ID.
ssrcnumberNoNo
timestampnumberNoNo
udpSocketdgram.Socket | nullNoNo
voiceWsVoiceWebSocket | nullNoNo

Methods

connect() async

Called when we have both server update and state update.

Returns: Promise<void>

Parameters:

NameTypeOptionalDescription
serverGatewayVoiceServerUpdateDispatchDataNo
stateGatewayVoiceStateUpdateDispatchDataNo

destroy()

Disconnect and remove all listeners.

Returns: void

Parameters:

None


disconnect()

Disconnect from voice (closes WebSocket and UDP).

Returns: void

Parameters:

None


getWebSocketConstructor() async

Returns: Promise<new (url: string) => VoiceWebSocket>

Parameters:

None


play() async

Play a direct WebM/Opus URL or stream. Fetches the URL (if string), demuxes with prism-media WebmDemuxer, and sends Opus packets to the voice connection. No FFmpeg or encoding; input must be WebM with Opus.

Returns: Promise<void>

Parameters:

NameTypeOptionalDescription
urlOrStreamstring | NodeJS.ReadableStreamNo

playOpus()

Play a stream of raw Opus packets Uses the same queue and 20ms pacing as play(). Use this for local files (MP3 → PCM → Opus) or other Opus sources.

Returns: void

Parameters:

NameTypeOptionalDescription
streamNodeJS.ReadableStreamNo

sendAudioFrame()

Returns: void

Parameters:

NameTypeOptionalDescription
opusPayloadBuffer<ArrayBufferLike>No

sendVoiceOp()

Returns: void

Parameters:

NameTypeOptionalDescription
opnumberNo
dunknownNo

setupUDP()

Returns: void

Parameters:

NameTypeOptionalDescription
remoteAddressstringNo
remotePortnumberNo
onReady() => voidNo

stop()

Stop playback and clear the queue.

Returns: void

Parameters:

None

Released under the Apache-2.0 License.