diff --git a/lib/Client/Resolver/Resolver.js b/lib/Client/Resolver/Resolver.js index 4bb62f9bb..fc643cbae 100644 --- a/lib/Client/Resolver/Resolver.js +++ b/lib/Client/Resolver/Resolver.js @@ -84,6 +84,10 @@ var _StructuresInvite = require("../../Structures/Invite"); var _StructuresInvite2 = _interopRequireDefault(_StructuresInvite); +var _VoiceVoiceConnection = require("../../Voice/VoiceConnection"); + +var _VoiceVoiceConnection2 = _interopRequireDefault(_VoiceVoiceConnection); + var Resolver = (function () { function Resolver(internal) { _classCallCheck(this, Resolver); @@ -221,12 +225,11 @@ var Resolver = (function () { // accepts Array, Channel, Server, User, Message, String and anything // toString()-able - var final = resource; if (resource instanceof Array) { - final = resource.join("\n"); + resource = resource.join("\n"); } - return final.toString(); + return resource.toString(); }; Resolver.prototype.resolveUser = function resolveUser(resource) { @@ -273,7 +276,7 @@ var Resolver = (function () { Resolver.prototype.resolveChannel = function resolveChannel(resource) { /* - accepts a Message, Channel, Server, String ID, User + accepts a Message, Channel, VoiceConnection, Server, String ID, User */ if (resource instanceof _StructuresMessage2["default"]) { @@ -282,6 +285,9 @@ var Resolver = (function () { if (resource instanceof _StructuresChannel2["default"]) { return Promise.resolve(resource); } + if (resource instanceof _VoiceVoiceConnection2["default"]) { + return Promise.resolve(resource.voiceChannel); + } if (resource instanceof _StructuresServer2["default"]) { return Promise.resolve(resource.defaultChannel); } diff --git a/lib/Voice/VoiceConnection.js b/lib/Voice/VoiceConnection.js index 8b2140336..4912346e3 100644 --- a/lib/Voice/VoiceConnection.js +++ b/lib/Voice/VoiceConnection.js @@ -78,7 +78,9 @@ var VoiceConnection = (function (_EventEmitter) { VoiceConnection.prototype.destroy = function destroy() { this.stopPlaying(); - if (this.KAI) clearInterval(this.KAI); + if (this.KAI) { + clearInterval(this.KAI); + } this.vWS.close(); this.udp.close(); this.client.internal.sendWS({ @@ -350,7 +352,7 @@ var VoiceConnection = (function (_EventEmitter) { } discordPort = msg.readUIntLE(msg.length - 2, 2).toString(10); - var wsDiscPayload = { + vWS.send(JSON.stringify({ "op": 1, "d": { "protocol": "udp", @@ -360,8 +362,7 @@ var VoiceConnection = (function (_EventEmitter) { "mode": self.vWSData.modes[0] //Plain } } - }; - vWS.send(JSON.stringify(wsDiscPayload)); + })); firstPacket = false; } }); diff --git a/src/Client/Resolver/Resolver.js b/src/Client/Resolver/Resolver.js index 1fe6ad759..b16725880 100644 --- a/src/Client/Resolver/Resolver.js +++ b/src/Client/Resolver/Resolver.js @@ -43,6 +43,7 @@ import Role from "../../Structures/Role"; import Server from "../../Structures/Server"; import Message from "../../Structures/Message"; import Invite from "../../Structures/Invite"; +import VoiceConnection from "../../Voice/VoiceConnection"; export default class Resolver { constructor(internal) { @@ -151,12 +152,11 @@ export default class Resolver { // accepts Array, Channel, Server, User, Message, String and anything // toString()-able - var final = resource; if (resource instanceof Array) { - final = resource.join("\n"); + resource = resource.join("\n"); } - return final.toString(); + return resource.toString(); } resolveUser(resource) { @@ -203,7 +203,7 @@ export default class Resolver { resolveChannel(resource) { /* - accepts a Message, Channel, Server, String ID, User + accepts a Message, Channel, VoiceConnection, Server, String ID, User */ if (resource instanceof Message) { @@ -212,6 +212,9 @@ export default class Resolver { if (resource instanceof Channel) { return Promise.resolve(resource); } + if (resource instanceof VoiceConnection) { + return Promise.resolve(resource.voiceChannel); + } if (resource instanceof Server) { return Promise.resolve(resource.defaultChannel); } diff --git a/src/Voice/VoiceConnection.js b/src/Voice/VoiceConnection.js index b72b2ae50..31f2b4319 100644 --- a/src/Voice/VoiceConnection.js +++ b/src/Voice/VoiceConnection.js @@ -43,8 +43,9 @@ export default class VoiceConnection extends EventEmitter { destroy() { this.stopPlaying(); - if(this.KAI) + if (this.KAI) { clearInterval(this.KAI); + } this.vWS.close(); this.udp.close(); this.client.internal.sendWS( @@ -67,10 +68,10 @@ export default class VoiceConnection extends EventEmitter { //not all streams implement these... //and even file stream don't seem to implement them properly... unpipe(this.instream); - if(this.instream.end) { + if (this.instream.end) { this.instream.end(); } - if(this.instream.destroy) { + if (this.instream.destroy) { this.instream.destroy(); } this.instream = null; @@ -106,26 +107,26 @@ export default class VoiceConnection extends EventEmitter { } try { - var buffer = stream.read(1920 * channels); + var buffer = stream.read(1920 * channels); - if (!buffer) { - if (onWarning) { - retStream.emit("end"); - self.setSpeaking(false); - //console.log("ending 2"); - return; - } else { - onWarning = true; - setTimeout(send, length * 10); // give chance for some data in 200ms to appear - return; - } - } + if (!buffer) { + if (onWarning) { + retStream.emit("end"); + self.setSpeaking(false); + //console.log("ending 2"); + return; + } else { + onWarning = true; + setTimeout(send, length * 10); // give chance for some data in 200ms to appear + return; + } + } - if(buffer.length !== 1920 * channels) { - var newBuffer = new Buffer(1920 * channels).fill(0); - buffer.copy(newBuffer); - buffer = newBuffer; - } + if (buffer.length !== 1920 * channels) { + var newBuffer = new Buffer(1920 * channels).fill(0); + buffer.copy(newBuffer); + buffer = newBuffer; + } count++; self.sequence + 1 < 65535 ? self.sequence += 1 : self.sequence = 0; @@ -144,7 +145,6 @@ export default class VoiceConnection extends EventEmitter { retStream.emit("time", self.streamTime); - } catch (e) { retStream.emit("error", e); } @@ -184,7 +184,7 @@ export default class VoiceConnection extends EventEmitter { var self = this; self.playing = true; try { - if(!self.encoder.opus){ + if (!self.encoder.opus){ self.playing=false; self.emit("error", "No Opus!"); self.client.emit("debug", "Tried to use node-opus, but opus not available - install it!"); @@ -309,7 +309,7 @@ export default class VoiceConnection extends EventEmitter { } discordPort = msg.readUIntLE(msg.length - 2, 2).toString(10); - var wsDiscPayload = { + vWS.send(JSON.stringify({ "op": 1, "d": { "protocol": "udp", @@ -319,8 +319,7 @@ export default class VoiceConnection extends EventEmitter { "mode": self.vWSData.modes[0] //Plain } } - } - vWS.send(JSON.stringify(wsDiscPayload)); + })); firstPacket = false; } });