diff --git a/lib/Structures/Server.js b/lib/Structures/Server.js index 2eafa75ea..dace8828a 100644 --- a/lib/Structures/Server.js +++ b/lib/Structures/Server.js @@ -116,6 +116,31 @@ var Server = (function (_Equality) { } } } + + if (data.voice_states) { + for (var _iterator2 = data.voice_states, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { + var _ref2; + + if (_isArray2) { + if (_i2 >= _iterator2.length) break; + _ref2 = _iterator2[_i2++]; + } else { + _i2 = _iterator2.next(); + if (_i2.done) break; + _ref2 = _i2.value; + } + + var voiceState = _ref2; + + var _user = this.members.get("id", voiceState.user_id); + var channel = this.channels.get("id", voiceState.channel_id); + if (_user && channel) { + this.eventStartSpeaking(_user, channel); + } else { + this.client.emit("warn", "user doesn't exist even though READY expects them to"); + } + } + } } Server.prototype.detailsOf = function detailsOf(user) { @@ -165,19 +190,19 @@ var Server = (function (_Equality) { }; Server.prototype.eventStopSpeaking = function eventStopSpeaking(user) { - for (var _iterator2 = this.channels.getAll("type", "voice"), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { - var _ref2; + for (var _iterator3 = this.channels.getAll("type", "voice"), _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { + var _ref3; - if (_isArray2) { - if (_i2 >= _iterator2.length) break; - _ref2 = _iterator2[_i2++]; + if (_isArray3) { + if (_i3 >= _iterator3.length) break; + _ref3 = _iterator3[_i3++]; } else { - _i2 = _iterator2.next(); - if (_i2.done) break; - _ref2 = _i2.value; + _i3 = _iterator3.next(); + if (_i3.done) break; + _ref3 = _i3.value; } - var chan = _ref2; + var chan = _ref3; if (chan.speaking.has(user)) { chan.speaking.remove(user); @@ -189,19 +214,19 @@ var Server = (function (_Equality) { Server.prototype.equalsStrict = function equalsStrict(obj) { if (obj instanceof Server) { - for (var _iterator3 = strictKeys, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { - var _ref3; + for (var _iterator4 = strictKeys, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) { + var _ref4; - if (_isArray3) { - if (_i3 >= _iterator3.length) break; - _ref3 = _iterator3[_i3++]; + if (_isArray4) { + if (_i4 >= _iterator4.length) break; + _ref4 = _iterator4[_i4++]; } else { - _i3 = _iterator3.next(); - if (_i3.done) break; - _ref3 = _i3.value; + _i4 = _iterator4.next(); + if (_i4.done) break; + _ref4 = _i4.value; } - var key = _ref3; + var key = _ref4; if (obj[key] !== this[key]) { return false; diff --git a/src/Structures/Server.js b/src/Structures/Server.js index 9025db755..d4520bb24 100644 --- a/src/Structures/Server.js +++ b/src/Structures/Server.js @@ -69,6 +69,18 @@ export default class Server extends Equality { } } } + + if (data.voice_states) { + for (var voiceState of data.voice_states) { + let user = this.members.get("id", voiceState.user_id); + let channel = this.channels.get("id", voiceState.channel_id); + if (user && channel) { + this.eventStartSpeaking(user, channel); + } else { + this.client.emit("warn", "user doesn't exist even though READY expects them to"); + } + } + } } detailsOf(user) { diff --git a/test/msgbot.js b/test/msgbot.js index 67a1295ad..f162a1164 100644 --- a/test/msgbot.js +++ b/test/msgbot.js @@ -34,6 +34,12 @@ client.on("message", msg => { client.destroy(); } + if (msg.content === "who tf is speaking") { + for (var chan of msg.channel.server.channels.getAll("type", "voice")) { + msg.channel.send(`${chan} : ${chan.speaking}`); + } + } + if(msg.content === "replyme"){ msg.reply("hi"); }