diff --git a/lib/EvaluatedPermissions.js b/lib/EvaluatedPermissions.js index a0795823c..4c56d9e64 100644 --- a/lib/EvaluatedPermissions.js +++ b/lib/EvaluatedPermissions.js @@ -11,6 +11,9 @@ var EvaluatedPermissions = (function () { var self = this; function getBit(x) { + if ((self.packed >>> 3 & 1) === 1) { + return true; + } return (self.packed >>> x & 1) === 1; } diff --git a/lib/Member.js b/lib/Member.js index d879355cd..ba29467db 100644 --- a/lib/Member.js +++ b/lib/Member.js @@ -27,6 +27,10 @@ var Member = (function (_User) { key: "permissionsIn", value: function permissionsIn(channel) { + if (channel.server.ownerID === this.id) { + return new EvaluatedPermissions(4294967295); //all perms + } + var affectingOverwrites = []; var affectingMemberOverwrites = []; diff --git a/lib/channel.js b/lib/channel.js index eee332b0d..fbaa8ce4c 100644 --- a/lib/channel.js +++ b/lib/channel.js @@ -47,6 +47,18 @@ var Channel = (function () { } _createClass(Channel, [{ + key: "permissionsOf", + value: function permissionsOf(member) { + + var mem = this.server.getMember("id", member.id); + + if (mem) { + return mem.permissionsIn(this); + } else { + return null; + } + } + }, { key: "equals", value: function equals(object) { return object && object.id === this.id; diff --git a/src/EvaluatedPermissions.js b/src/EvaluatedPermissions.js index 3c21e7870..ba71f8e85 100644 --- a/src/EvaluatedPermissions.js +++ b/src/EvaluatedPermissions.js @@ -4,6 +4,9 @@ class EvaluatedPermissions{ var self = this; function getBit(x) { + if(((self.packed >>> 3) & 1) === 1){ + return true; + } return ((self.packed >>> x) & 1) === 1; } diff --git a/src/Member.js b/src/Member.js index e5cc946f1..9ac6c644b 100644 --- a/src/Member.js +++ b/src/Member.js @@ -37,6 +37,10 @@ class Member extends User{ permissionsIn(channel){ + if(channel.server.ownerID === this.id){ + return new EvaluatedPermissions(4294967295); //all perms + } + var affectingOverwrites = []; var affectingMemberOverwrites = []; diff --git a/src/channel.js b/src/channel.js index 81d5c5b28..6e3b2ef99 100644 --- a/src/channel.js +++ b/src/channel.js @@ -32,6 +32,18 @@ class Channel { return this.server.client; } + permissionsOf(member){ + + var mem = this.server.getMember("id", member.id); + + if(mem){ + return mem.permissionsIn(this); + }else{ + return null; + } + + } + equals(object) { return (object && object.id === this.id); } diff --git a/test/bot.1.js b/test/bot.1.js index 0d21c7af2..19caf0151 100644 --- a/test/bot.1.js +++ b/test/bot.1.js @@ -9,13 +9,22 @@ counter = 1; mybot.on("message", function (message) { console.log("Everyone mentioned? " + message.everyoneMentioned); - if (message.content !== "$$$") { + if (message.content.substr(0,3) !== "$$$") { return; } // we can go ahead :) - mybot.reply(message, "your evaluated permissions in this channel are " + JSON.stringify(message.sender.permissionsIn(message.channel), null, 4).replace(/true/g, "**true**")); + var user; + if(message.mentions.length > 0){ + user = message.mentions[0]; + }else{ + user = message.sender; + } + + console.log("the ID is ", user.id); + + mybot.reply(message, user + "'s evaluated permissions in this channel are " + JSON.stringify(message.channel.permissionsOf(user), null, 4).replace(/true/g, "**true**")); });