diff --git a/docs/docs_voiceconnection.rst b/docs/docs_voiceconnection.rst index 6c99f5430..8a5b9f5cb 100644 --- a/docs/docs_voiceconnection.rst +++ b/docs/docs_voiceconnection.rst @@ -64,7 +64,7 @@ Plays a file to the voice channel. The file can be in practically any format; if In addition to a file path local to your computer, it can also accept a URL, however this is not recommended as the entire content of the URL will be read before any playback starts. This can cause delays from seconds to minutes - you can use `playRawStream` with a Stream obtained from the URL instead. -The `options` object can be used to control playback properties, currently, it only allows setting the volume using the `volume` property, which can be in any of the following formats: +The `options` object can be used to control playback properties, currently, it currently allows setting the seek (in seconds) using the `seek` property, and the volume using the `volume` property, which can be in any of the following formats: - A number representing the linear change in volume; 1 is equal to no change, 0 is completely silent, 0.5 is half the regular volume and 2 is double the regular volume. - A string representing the linear change in volume, if this is more convenient for you. diff --git a/lib/Client/InternalClient.js b/lib/Client/InternalClient.js index 8ceecd8b2..9bd48c715 100644 --- a/lib/Client/InternalClient.js +++ b/lib/Client/InternalClient.js @@ -1147,7 +1147,7 @@ var InternalClient = (function () { //def updateDetails InternalClient.prototype.updateDetails = function updateDetails(data) { - if (!this.email) { + if (!this.email && !data.email) { throw new Error("Can't use updateDetails because only a token has been used for login!"); } return this.apiRequest("patch", _Constants.Endpoints.ME, true, { @@ -1287,6 +1287,7 @@ var InternalClient = (function () { token: self.token, v: 3, compress: self.client.options.compress, + large_threshold: 250, properties: { "$os": "discord.js", "$browser": "discord.js", diff --git a/lib/Structures/Role.js b/lib/Structures/Role.js index f32eb0e4e..79eed38df 100644 --- a/lib/Structures/Role.js +++ b/lib/Structures/Role.js @@ -130,7 +130,7 @@ var Role = (function () { }; Role.prototype.colorAsHex = function colorAsHex() { - var val = this.color.toString(); + var val = this.color.toString(16); while (val.length < 6) { val = "0" + val; } diff --git a/lib/Voice/AudioEncoder.js b/lib/Voice/AudioEncoder.js index 5bc79116d..b43418e49 100644 --- a/lib/Voice/AudioEncoder.js +++ b/lib/Voice/AudioEncoder.js @@ -87,7 +87,7 @@ var AudioEncoder = (function () { return new Promise(function (resolve, reject) { _this.volume = new _VolumeTransformer2["default"](options.volume || 1); - var enc = _child_process2["default"].spawn(_this.getCommand(), ['-loglevel', '0', '-i', '-', '-f', 's16le', '-ar', '48000', '-ac', 2, 'pipe:1'], { stdio: ['pipe', 'pipe', 'ignore'] }); + var enc = _child_process2["default"].spawn(_this.getCommand(), ['-loglevel', '0', '-i', '-', '-f', 's16le', '-ar', '48000', '-ss', options.seek || 0, '-ac', 2, 'pipe:1'], { stdio: ['pipe', 'pipe', 'ignore'] }); stream.pipe(enc.stdin); enc.stdout.pipe(_this.volume); @@ -117,7 +117,7 @@ var AudioEncoder = (function () { return new Promise(function (resolve, reject) { _this2.volume = new _VolumeTransformer2["default"](options.volume || 1); - var enc = _child_process2["default"].spawn(_this2.getCommand(), ['-loglevel', '0', '-i', file, '-f', 's16le', '-ar', '48000', '-ac', 2, 'pipe:1'], { stdio: ['pipe', 'pipe', 'ignore'] }); + var enc = _child_process2["default"].spawn(_this2.getCommand(), ['-loglevel', '0', '-i', file, '-f', 's16le', '-ar', '48000', '-ss', options.seek || 0, '-ac', 2, 'pipe:1'], { stdio: ['pipe', 'pipe', 'ignore'] }); enc.stdout.pipe(_this2.volume); diff --git a/lib/Voice/VoicePacket.js b/lib/Voice/VoicePacket.js index 445f9d6c4..e62240c4c 100644 --- a/lib/Voice/VoicePacket.js +++ b/lib/Voice/VoicePacket.js @@ -5,24 +5,24 @@ exports.__esModule = true; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var VoicePacket = function VoicePacket(data, sequence, time, ssrc) { - _classCallCheck(this, VoicePacket); + _classCallCheck(this, VoicePacket); - var audioBuffer = data, - returnBuffer = new Buffer(audioBuffer.length + 12); + var audioBuffer = data, + returnBuffer = new Buffer(audioBuffer.length + 12); - returnBuffer.fill(0); - returnBuffer[0] = 0x80; - returnBuffer[1] = 0x78; + returnBuffer.fill(0); + returnBuffer[0] = 0x80; + returnBuffer[1] = 0x78; - returnBuffer.writeUIntBE(sequence, 2, 2); - returnBuffer.writeUIntBE(time, 4, 4); - returnBuffer.writeUIntBE(ssrc, 8, 4); + returnBuffer.writeUIntBE(sequence, 2, 2); + returnBuffer.writeUIntBE(time, 4, 4); + returnBuffer.writeUIntBE(ssrc, 8, 4); - for (var i = 0; i < audioBuffer.length; i++) { - returnBuffer[i + 12] = audioBuffer[i]; - } + for (var i = 0; i < audioBuffer.length; i++) { + returnBuffer[i + 12] = audioBuffer[i]; + } - return returnBuffer; + return returnBuffer; }; exports["default"] = VoicePacket; diff --git a/src/Client/InternalClient.js b/src/Client/InternalClient.js index 5a348f91e..480a80cab 100644 --- a/src/Client/InternalClient.js +++ b/src/Client/InternalClient.js @@ -969,7 +969,7 @@ export default class InternalClient { //def updateDetails updateDetails(data) { - if(!this.email) { + if(!this.email && !data.email) { throw new Error("Can't use updateDetails because only a token has been used for login!"); } return this.apiRequest("patch", Endpoints.ME, true, { @@ -1086,6 +1086,7 @@ export default class InternalClient { token: self.token, v: 3, compress: self.client.options.compress, + large_threshold : 250, properties: { "$os": "discord.js", "$browser": "discord.js", diff --git a/src/Structures/Role.js b/src/Structures/Role.js index 770079c31..3c3357c51 100644 --- a/src/Structures/Role.js +++ b/src/Structures/Role.js @@ -125,7 +125,7 @@ export default class Role { } colorAsHex(){ - var val = this.color.toString(); + var val = this.color.toString(16); while(val.length < 6){ val = "0" + val; } diff --git a/src/Voice/AudioEncoder.js b/src/Voice/AudioEncoder.js index 3ac16eafd..cc9c4b520 100644 --- a/src/Voice/AudioEncoder.js +++ b/src/Voice/AudioEncoder.js @@ -67,6 +67,7 @@ export default class AudioEncoder { '-i', '-', '-f', 's16le', '-ar', '48000', + '-ss', (options.seek || 0), '-ac', 2, 'pipe:1' ], {stdio: ['pipe', 'pipe', 'ignore']}); @@ -102,6 +103,7 @@ export default class AudioEncoder { '-i', file, '-f', 's16le', '-ar', '48000', + '-ss', (options.seek || 0), '-ac', 2, 'pipe:1' ], {stdio: ['pipe', 'pipe', 'ignore']});