From 8e5e1ad8fe8e76b53d0f25bd75eda62381bf2b5c Mon Sep 17 00:00:00 2001 From: Amish Shah Date: Fri, 19 Jan 2018 23:03:01 +0000 Subject: [PATCH] Document Receiver --- src/client/voice/receiver/Receiver.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/client/voice/receiver/Receiver.js b/src/client/voice/receiver/Receiver.js index c6b03ea2d..51beb682c 100644 --- a/src/client/voice/receiver/Receiver.js +++ b/src/client/voice/receiver/Receiver.js @@ -2,6 +2,13 @@ const EventEmitter = require('events'); const prism = require('prism-media'); const PacketHandler = require('./PacketHandler'); +/** + * Receives audio packets from a voice connection. + * @example + * const receiver = connection.createReceiver(); + * // opusStream is a ReadableStream - that means you could play it back to a voice channel if you wanted to! + * const opusStream = receiver.createStream(user); + */ class VoiceReceiver extends EventEmitter { constructor(connection) { super(); @@ -16,6 +23,21 @@ class VoiceReceiver extends EventEmitter { this.connection.sockets.udp.socket.on('message', buffer => this.packets.push(buffer)); } + /** + * Options passed to `VoiceReceiver#createStream`. + * @typedef {Object} ReceiveStreamOptions + * @property {string} [mode='opus'] The mode for audio output. This defaults to opus, meaning discord.js won't decode + * the packets for you. You can set this to 'pcm' so that the stream's output will be 16-bit little-endian stereo + * audio + */ + + /** + * Creates a new audio receiving stream. If a stream already exists for a user, then that stream will be returned + * rather than generating a new one. + * @param {UserResolvable} user The user to start listening to. + * @param {ReceiveStreamOptions} options Options. + * @returns {ReadableStream} + */ createStream(user, { mode = 'opus' } = {}) { user = this.connection.client.users.resolve(user); if (!user) throw new Error('VOICE_USER_MISSING');