diff --git a/src/client/rest/RESTMethods.js b/src/client/rest/RESTMethods.js index 70a4da882..54254689a 100644 --- a/src/client/rest/RESTMethods.js +++ b/src/client/rest/RESTMethods.js @@ -41,16 +41,18 @@ class RESTMethods{ SendMessage(channel, content, tts, nonce) { return new Promise((resolve, reject) => { + var _this = this; + if (channel instanceof User || channel instanceof GuildMember) { this.CreateDM(channel).then(chan => { channel = chan; req(); }) .catch(reject); + } else { + req(); } - var _this = this; - function req() { _this.rest.makeRequest('post', Constants.Endpoints.CHANNEL_MESSAGES(channel.id), true, { content, tts, nonce, diff --git a/src/client/websocket/packets/handlers/PresenceUpdate.js b/src/client/websocket/packets/handlers/PresenceUpdate.js index 889017bce..e3c5e4f1a 100644 --- a/src/client/websocket/packets/handlers/PresenceUpdate.js +++ b/src/client/websocket/packets/handlers/PresenceUpdate.js @@ -60,11 +60,7 @@ class PresenceUpdateHandler extends AbstractHandler { data.user.discriminator === user.discriminator && data.user.avatar === user.avatar && data.user.status === user.status && - !( - (data.user.game && !user.game) || - (!data.user.game && user.game) || - (data.user.game && user.game && data.user.game.name !== user.game.name) - ) + JSON.stringify(data.user.game) === JSON.stringify(user.game) ); if (!same) { diff --git a/src/structures/EvaluatedPermissions.js b/src/structures/EvaluatedPermissions.js index 96d0a4c9d..30ef07844 100644 --- a/src/structures/EvaluatedPermissions.js +++ b/src/structures/EvaluatedPermissions.js @@ -27,7 +27,7 @@ class EvaluatedPermissions { } if (!explicit) { - if ((this.permissions & Constants.PermissionFlags.MANAGE_ROLES) > 0) { + if ((this.permissions & Constants.PermissionFlags.ADMINISTRATOR) > 0) { return true; } } diff --git a/src/structures/Role.js b/src/structures/Role.js index 30dc865a3..5d8a7dfa8 100644 --- a/src/structures/Role.js +++ b/src/structures/Role.js @@ -40,7 +40,7 @@ class Role { } if (!explicit) { - if ((this.permissions & Constants.PermissionFlags.MANAGE_ROLES) > 0) { + if ((this.permissions & Constants.PermissionFlags.ADMINISTRATOR) > 0) { return true; } } diff --git a/src/util/Constants.js b/src/util/Constants.js index 54df21ad5..33ceeca14 100644 --- a/src/util/Constants.js +++ b/src/util/Constants.js @@ -146,7 +146,7 @@ const PermissionFlags = exports.PermissionFlags = { CREATE_INSTANT_INVITE: 1 << 0, KICK_MEMBERS: 1 << 1, BAN_MEMBERS: 1 << 2, - MANAGE_ROLES: 1 << 3, + ADMINISTRATOR: 1 << 3, MANAGE_CHANNELS: 1 << 4, MANAGE_GUILD: 1 << 5, @@ -165,6 +165,10 @@ const PermissionFlags = exports.PermissionFlags = { DEAFEN_MEMBERS: 1 << 23, MOVE_MEMBERS: 1 << 24, USE_VAD: 1 << 25, + + CHANGE_NICKNAME: 1 << 26, + MANAGE_NICKNAMES: 1 << 27, + MANAGE_ROLES_OR_PERMISSIONS: 1 << 28, }; let _ALL_PERMISSIONS = 0; diff --git a/test/random.js b/test/random.js index 6041df9ae..aeb7147d2 100644 --- a/test/random.js +++ b/test/random.js @@ -77,6 +77,11 @@ client.on('message', message => { } } + if (message.content === 'myperms?') { + message.channel.sendMessage('Your permissions are:\n' + + JSON.stringify(message.channel.permissionsFor(message.author).serialize(), null, 4)); + } + if (message.content === 'delchann') { message.channel.delete().then(chan => console.log('selfDelChann', chan.name)); }