diff --git a/lib/Structures/Server.js b/lib/Structures/Server.js index b9d7f36c3..7d7320e70 100644 --- a/lib/Structures/Server.js +++ b/lib/Structures/Server.js @@ -69,6 +69,29 @@ var Server = (function (_Equality) { _this.channels.add(channel); } }); + + if (data.presences) { + for (var _iterator = data.presences, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + var presence = _ref; + + var user = client.internal.users.get("id", presence.user.id); + if (user) { + user.status = presence.status; + user.gameId = presence.game_id; + } + } + } } Server.prototype.rolesOfUser = function rolesOfUser(user) { @@ -90,19 +113,19 @@ var Server = (function (_Equality) { Server.prototype.equalsStrict = function equalsStrict(obj) { if (obj instanceof Server) { - for (var _iterator = strictKeys, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { - var _ref; + for (var _iterator2 = strictKeys, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { + var _ref2; - if (_isArray) { - if (_i >= _iterator.length) break; - _ref = _iterator[_i++]; + if (_isArray2) { + if (_i2 >= _iterator2.length) break; + _ref2 = _iterator2[_i2++]; } else { - _i = _iterator.next(); - if (_i.done) break; - _ref = _i.value; + _i2 = _iterator2.next(); + if (_i2.done) break; + _ref2 = _i2.value; } - var key = _ref; + var key = _ref2; if (obj[key] !== this[key]) { return false; diff --git a/lib/index.js b/lib/index.js index 8c2c2df59..68e9c0fd8 100644 --- a/lib/index.js +++ b/lib/index.js @@ -13,10 +13,7 @@ a.on("warn", function (m) { }); a.on("message", function (m) { - if (m.content === "$$$") a.reply(m, "you have the roles:\n" + m.channel.server.rolesOfUser(m.author).map(function (v) { - return "**" + v.name + "** " + v.id + "\n"; - })); - if (m.content === "$$") a.reply(m, JSON.stringify(m.channel.permissionsOf(m.author).serialise(), null, 4).replace(/true/g, "**true**")); + if (m.content === "$$$") a.reply(m, "I have you cached as being " + m.author.status); }); a.on("serverMemberRemoved", function (r, s) { console.log(r, s); diff --git a/src/Structures/Server.js b/src/Structures/Server.js index a1084fb8b..f0b2e9ba1 100644 --- a/src/Structures/Server.js +++ b/src/Structures/Server.js @@ -14,7 +14,7 @@ var strictKeys = [ class Server extends Equality { constructor(data, client) { - + super(); var self = this; @@ -31,45 +31,55 @@ class Server extends Equality { this.afkTimeout = data.afkTimeout; this.afkChannelID = data.afk_channel_id; this.memberMap = {}; - + var self = this; - - data.roles.forEach( (dataRole) => { - this.roles.add( new Role(dataRole, this, client) ); - } ); - - data.members.forEach( (dataUser) => { + + data.roles.forEach((dataRole) => { + this.roles.add(new Role(dataRole, this, client)); + }); + + data.members.forEach((dataUser) => { this.memberMap[dataUser.user.id] = { - roles : dataUser.roles.map((pid) => self.roles.get("id", pid)), - mute : dataUser.mute, - deaf : dataUser.deaf, - joinedAt : Date.parse(dataUser.joined_at) + roles: dataUser.roles.map((pid) => self.roles.get("id", pid)), + mute: dataUser.mute, + deaf: dataUser.deaf, + joinedAt: Date.parse(dataUser.joined_at) }; var user = client.internal.users.add(new User(dataUser.user, client)); - this.members.add( user ); - } ); - - data.channels.forEach( (dataChannel) => { - if(dataChannel.type === "text"){ + this.members.add(user); + }); + + data.channels.forEach((dataChannel) => { + if (dataChannel.type === "text") { var channel = client.internal.channels.add(new TextChannel(dataChannel, client, this)); this.channels.add(channel); - }else{ + } else { var channel = client.internal.channels.add(new VoiceChannel(dataChannel, client, this)); this.channels.add(channel); } - } ); + }); + + if (data.presences) { + for (var presence of data.presences) { + var user = client.internal.users.get("id", presence.user.id); + if (user) { + user.status = presence.status; + user.gameId = presence.game_id; + } + } + } } - - rolesOfUser(user){ + + rolesOfUser(user) { user = this.client.internal.resolver.resolveUser(user); - if(user){ + if (user) { return (this.memberMap[user.id] ? this.memberMap[user.id].roles : []); - }else{ + } else { return null; } } - - rolesOf(user){ + + rolesOf(user) { return this.rolesOfUser(user); } @@ -80,36 +90,36 @@ class Server extends Equality { return Endpoints.SERVER_ICON(this.id, this.icon); } } - + get afkChannel() { return this.channels.get("id", this.afkChannelID); } - + get defaultChannel() { return this.channels.get("id", this.id); } - + get owner() { return this.members.get("id", this.ownerID); } - + toString() { return this.name; } - - equalsStrict(obj){ - if(obj instanceof Server){ - for(var key of strictKeys){ - if(obj[key] !== this[key]){ + + equalsStrict(obj) { + if (obj instanceof Server) { + for (var key of strictKeys) { + if (obj[key] !== this[key]) { return false; } - } - }else{ + } + } else { return false; } return true; } - + } module.exports = Server; \ No newline at end of file diff --git a/src/index.js b/src/index.js index 033f20990..bce04d8b4 100644 --- a/src/index.js +++ b/src/index.js @@ -8,15 +8,7 @@ a.on("warn", (m) => console.log("[warn]", m)); a.on("message", m => { if(m.content === "$$$") - a.reply(m, - "you have the roles:\n" + m.channel.server.rolesOfUser(m.author) - .map(v => "**"+v.name+"** "+v.id+"\n") - ); - if(m.content === "$$") - a.reply(m, JSON.stringify( - m.channel.permissionsOf(m.author).serialise() - , null, 4 - ).replace(/true/g, "**true**")) + a.reply(m, "I have you cached as being " + m.author.status); }); a.on("serverMemberRemoved", (r, s) => { console.log(r, s);