diff --git a/lib/Client/InternalClient.js b/lib/Client/InternalClient.js index 0df7170c9..994ec076b 100644 --- a/lib/Client/InternalClient.js +++ b/lib/Client/InternalClient.js @@ -1285,6 +1285,8 @@ var InternalClient = (function () { }; InternalClient.prototype.createWS = function createWS(url) { + var _this36 = this; + var self = this; var client = self.client; @@ -1681,6 +1683,27 @@ var InternalClient = (function () { client.emit("warn", "presence update but user/server not in cache"); } + break; + case _Constants.PacketType.USER_UPDATE: + + var user = self.users.get("id", data.id); + + if (user) { + + data.username = data.username || user.username; + data.id = data.id || user.id; + data.avatar = data.avatar || user.avatar; + data.discriminator = data.discriminator || user.discriminator; + _this36.email = data.email || _this36.email; + + var presenceUser = new _StructuresUser2["default"](data, client); + + client.emit("presence", user, presenceUser); + self.users.update(user, presenceUser); + } else { + client.emit("warn", "user update but user not in cache (this should never happen)"); + } + break; case _Constants.PacketType.TYPING: diff --git a/lib/Constants.js b/lib/Constants.js index 0268950fe..b69c7c8f4 100644 --- a/lib/Constants.js +++ b/lib/Constants.js @@ -106,27 +106,28 @@ var Permissions = { exports.Permissions = Permissions; var PacketType = { - READY: "READY", - MESSAGE_CREATE: "MESSAGE_CREATE", - MESSAGE_UPDATE: "MESSAGE_UPDATE", - MESSAGE_DELETE: "MESSAGE_DELETE", - SERVER_CREATE: "GUILD_CREATE", - SERVER_DELETE: "GUILD_DELETE", - SERVER_UPDATE: "GUILD_UPDATE", CHANNEL_CREATE: "CHANNEL_CREATE", CHANNEL_DELETE: "CHANNEL_DELETE", CHANNEL_UPDATE: "CHANNEL_UPDATE", - SERVER_ROLE_CREATE: "GUILD_ROLE_CREATE", - SERVER_ROLE_DELETE: "GUILD_ROLE_DELETE", - SERVER_ROLE_UPDATE: "GUILD_ROLE_UPDATE", + MESSAGE_CREATE: "MESSAGE_CREATE", + MESSAGE_DELETE: "MESSAGE_DELETE", + MESSAGE_UPDATE: "MESSAGE_UPDATE", + PRESENCE_UPDATE: "PRESENCE_UPDATE", + READY: "READY", + SERVER_BAN_ADD: "GUILD_BAN_ADD", + SERVER_BAN_REMOVE: "GUILD_BAN_REMOVE", + SERVER_CREATE: "GUILD_CREATE", + SERVER_DELETE: "GUILD_DELETE", SERVER_MEMBER_ADD: "GUILD_MEMBER_ADD", SERVER_MEMBER_REMOVE: "GUILD_MEMBER_REMOVE", SERVER_MEMBER_UPDATE: "GUILD_MEMBER_UPDATE", - PRESENCE_UPDATE: "PRESENCE_UPDATE", + SERVER_MEMBERS_CHUNK: "GUILD_MEMBERS_CHUNK", + SERVER_ROLE_CREATE: "GUILD_ROLE_CREATE", + SERVER_ROLE_DELETE: "GUILD_ROLE_DELETE", + SERVER_ROLE_UPDATE: "GUILD_ROLE_UPDATE", + SERVER_UPDATE: "GUILD_UPDATE", TYPING: "TYPING_START", - SERVER_BAN_ADD: "GUILD_BAN_ADD", - SERVER_BAN_REMOVE: "GUILD_BAN_REMOVE", - VOICE_STATE_UPDATE: "VOICE_STATE_UPDATE", - SERVER_MEMBERS_CHUNK: "GUILD_MEMBERS_CHUNK" + USER_UPDATE: "USER_UPDATE", + VOICE_STATE_UPDATE: "VOICE_STATE_UPDATE" }; exports.PacketType = PacketType; diff --git a/lib/Util/TokenCacher-shim.js b/lib/Util/TokenCacher-shim.js index 53412d365..f483e9575 100644 --- a/lib/Util/TokenCacher-shim.js +++ b/lib/Util/TokenCacher-shim.js @@ -6,23 +6,23 @@ exports.__esModule = true; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var TokenCacher = (function () { - function TokenCacher() { - _classCallCheck(this, TokenCacher); - } + function TokenCacher() { + _classCallCheck(this, TokenCacher); + } - TokenCacher.prototype.setToken = function setToken() {}; + TokenCacher.prototype.setToken = function setToken() {}; - TokenCacher.prototype.save = function save() {}; + TokenCacher.prototype.save = function save() {}; - TokenCacher.prototype.getToken = function getToken() { - return null; - }; + TokenCacher.prototype.getToken = function getToken() { + return null; + }; - TokenCacher.prototype.init = function init(ind) { - this.done = true; - }; + TokenCacher.prototype.init = function init(ind) { + this.done = true; + }; - return TokenCacher; + return TokenCacher; })(); exports["default"] = TokenCacher; diff --git a/lib/Voice/VoicePacket.js b/lib/Voice/VoicePacket.js index e62240c4c..445f9d6c4 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 438d7b1ed..366cccbc9 100644 --- a/src/Client/InternalClient.js +++ b/src/Client/InternalClient.js @@ -1467,6 +1467,28 @@ export default class InternalClient { client.emit("warn", "presence update but user/server not in cache"); } + break; + case PacketType.USER_UPDATE: + + var user = self.users.get("id", data.id); + + if (user) { + + data.username = data.username || user.username; + data.id = data.id || user.id; + data.avatar = data.avatar || user.avatar; + data.discriminator = data.discriminator || user.discriminator; + this.email = data.email || this.email; + + var presenceUser = new User(data, client); + + client.emit("presence", user, presenceUser); + self.users.update(user, presenceUser); + + } else { + client.emit("warn", "user update but user not in cache (this should never happen)"); + } + break; case PacketType.TYPING: diff --git a/src/Constants.js b/src/Constants.js index 92c55fd3b..79cb74abe 100644 --- a/src/Constants.js +++ b/src/Constants.js @@ -64,26 +64,27 @@ export const Permissions = { }; export const PacketType = { - READY : "READY", - MESSAGE_CREATE : "MESSAGE_CREATE", - MESSAGE_UPDATE : "MESSAGE_UPDATE", - MESSAGE_DELETE : "MESSAGE_DELETE", - SERVER_CREATE : "GUILD_CREATE", - SERVER_DELETE : "GUILD_DELETE", - SERVER_UPDATE : "GUILD_UPDATE", CHANNEL_CREATE : "CHANNEL_CREATE", CHANNEL_DELETE : "CHANNEL_DELETE", CHANNEL_UPDATE : "CHANNEL_UPDATE", - SERVER_ROLE_CREATE : "GUILD_ROLE_CREATE", - SERVER_ROLE_DELETE : "GUILD_ROLE_DELETE", - SERVER_ROLE_UPDATE : "GUILD_ROLE_UPDATE", + MESSAGE_CREATE : "MESSAGE_CREATE", + MESSAGE_DELETE : "MESSAGE_DELETE", + MESSAGE_UPDATE : "MESSAGE_UPDATE", + PRESENCE_UPDATE : "PRESENCE_UPDATE", + READY : "READY", + SERVER_BAN_ADD : "GUILD_BAN_ADD", + SERVER_BAN_REMOVE: "GUILD_BAN_REMOVE", + SERVER_CREATE : "GUILD_CREATE", + SERVER_DELETE : "GUILD_DELETE", SERVER_MEMBER_ADD : "GUILD_MEMBER_ADD", SERVER_MEMBER_REMOVE : "GUILD_MEMBER_REMOVE", SERVER_MEMBER_UPDATE : "GUILD_MEMBER_UPDATE", - PRESENCE_UPDATE : "PRESENCE_UPDATE", + SERVER_MEMBERS_CHUNK : "GUILD_MEMBERS_CHUNK", + SERVER_ROLE_CREATE : "GUILD_ROLE_CREATE", + SERVER_ROLE_DELETE : "GUILD_ROLE_DELETE", + SERVER_ROLE_UPDATE : "GUILD_ROLE_UPDATE", + SERVER_UPDATE : "GUILD_UPDATE", TYPING : "TYPING_START", - SERVER_BAN_ADD : "GUILD_BAN_ADD", - SERVER_BAN_REMOVE: "GUILD_BAN_REMOVE", - VOICE_STATE_UPDATE : "VOICE_STATE_UPDATE", - SERVER_MEMBERS_CHUNK : "GUILD_MEMBERS_CHUNK" + USER_UPDATE : "USER_UPDATE", + VOICE_STATE_UPDATE : "VOICE_STATE_UPDATE" };