diff --git a/lib/Client.js b/lib/Client.js index f02f8f1d6..7cf2e0ec6 100644 --- a/lib/Client.js +++ b/lib/Client.js @@ -1013,7 +1013,12 @@ var Client = (function () { if (!channel) { - var chann = self.addChannel(data, data.guild_id); + var chann; + if (data.is_private) { + chann = self.addPMChannel(data); + } else { + chann = self.addChannel(data, data.guild_id); + } var srv = self.getServer("id", data.guild_id); if (srv) { srv.addChannel(chann); @@ -1091,6 +1096,7 @@ var Client = (function () { gameId: data.game_id }); userInCache.status = data.status; + userInCache.gameId = data.game_id; } else { //one of their details changed. self.userCache[self.userCache.indexOf(userInCache)] = presenceUser; @@ -1288,7 +1294,9 @@ var Client = (function () { for (var _iterator9 = data.presences[Symbol.iterator](), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) { var presence = _step9.value; - self.getUser("id", presence.user.id).status = presence.status; + var user = self.getUser("id", presence.user.id); + user.status = presence.status; + user.gameId = presence.game_id; } } catch (err) { _didIteratorError9 = true; @@ -1504,7 +1512,7 @@ var Client = (function () { for (var _iterator14 = self.pmChannelCache[Symbol.iterator](), _step14; !(_iteratorNormalCompletion14 = (_step14 = _iterator14.next()).done); _iteratorNormalCompletion14 = true) { var pmc = _step14.value; - if (pmc.user.equals(destination)) { + if (pmc.user && pmc.user.equals(destination)) { resolve(pmc.id); return; } diff --git a/lib/user.js b/lib/user.js index 9a3d64c88..1f0fb0eed 100644 --- a/lib/user.js +++ b/lib/user.js @@ -13,6 +13,7 @@ var User = (function () { this.id = data.id; this.avatar = data.avatar; this.status = data.status || "offline"; + this.gameId = data.game_id || null; } // access using user.avatarURL; diff --git a/src/Client.js b/src/Client.js index 1900642f7..ad9b33524 100644 --- a/src/Client.js +++ b/src/Client.js @@ -920,7 +920,12 @@ class Client { if (!channel) { - var chann = self.addChannel(data, data.guild_id); + var chann; + if (data.is_private) { + chann = self.addPMChannel(data); + } else { + chann = self.addChannel(data, data.guild_id); + } var srv = self.getServer("id", data.guild_id); if (srv) { srv.addChannel(chann); @@ -1000,6 +1005,7 @@ class Client { gameId: data.game_id }); userInCache.status = data.status; + userInCache.gameId = data.game_id; } else { //one of their details changed. self.userCache[self.userCache.indexOf(userInCache)] = presenceUser; @@ -1168,7 +1174,9 @@ class Client { } for (var presence of data.presences) { - self.getUser("id", presence.user.id).status = presence.status; + var user = self.getUser("id", presence.user.id); + user.status = presence.status; + user.gameId = presence.game_id; } return server; @@ -1265,7 +1273,7 @@ class Client { //check if we have a PM for (var pmc of self.pmChannelCache) { - if (pmc.user.equals(destination)) { + if (pmc.user && pmc.user.equals(destination)) { resolve(pmc.id); return; } diff --git a/src/user.js b/src/user.js index 9686fed27..30af4f3e6 100644 --- a/src/user.js +++ b/src/user.js @@ -5,6 +5,7 @@ class User{ this.id = data.id; this.avatar = data.avatar; this.status = data.status || "offline"; + this.gameId = data.game_id || null; } // access using user.avatarURL;