From 3fa9ed1f42588e11b8d82ff928b835229cf7988e Mon Sep 17 00:00:00 2001 From: Lewdcario Date: Fri, 29 Jun 2018 19:11:50 -0500 Subject: [PATCH] backport: deleted property --- src/client/actions/ChannelDelete.js | 1 + src/client/actions/GuildDelete.js | 1 + src/client/actions/GuildEmojiDelete.js | 1 + src/client/actions/GuildMemberRemove.js | 1 + src/client/actions/GuildRoleDelete.js | 1 + src/client/actions/MessageDelete.js | 1 + src/client/actions/MessageDeleteBulk.js | 1 + src/structures/Channel.js | 6 ++++++ src/structures/Emoji.js | 6 ++++++ src/structures/Guild.js | 6 ++++++ src/structures/GuildMember.js | 6 ++++++ src/structures/Message.js | 10 ++++++++-- src/structures/Role.js | 6 ++++++ 13 files changed, 45 insertions(+), 2 deletions(-) diff --git a/src/client/actions/ChannelDelete.js b/src/client/actions/ChannelDelete.js index 77732c3f2..e4e46849b 100644 --- a/src/client/actions/ChannelDelete.js +++ b/src/client/actions/ChannelDelete.js @@ -17,6 +17,7 @@ class ChannelDeleteAction extends Action { } else { channel = this.deleted.get(data.id) || null; } + if (channel) channel.deleted = true; return { channel }; } diff --git a/src/client/actions/GuildDelete.js b/src/client/actions/GuildDelete.js index ec4779344..822232350 100644 --- a/src/client/actions/GuildDelete.js +++ b/src/client/actions/GuildDelete.js @@ -38,6 +38,7 @@ class GuildDeleteAction extends Action { } else { guild = this.deleted.get(data.id) || null; } + if (guild) guild.deleted = true; return { guild }; } diff --git a/src/client/actions/GuildEmojiDelete.js b/src/client/actions/GuildEmojiDelete.js index 7f9aefba3..044679c36 100644 --- a/src/client/actions/GuildEmojiDelete.js +++ b/src/client/actions/GuildEmojiDelete.js @@ -4,6 +4,7 @@ class GuildEmojiDeleteAction extends Action { handle(emoji) { const client = this.client; client.dataManager.killEmoji(emoji); + emoji.deleted = true; return { emoji }; } } diff --git a/src/client/actions/GuildMemberRemove.js b/src/client/actions/GuildMemberRemove.js index 6a2528ead..6682b63ff 100644 --- a/src/client/actions/GuildMemberRemove.js +++ b/src/client/actions/GuildMemberRemove.js @@ -22,6 +22,7 @@ class GuildMemberRemoveAction extends Action { } else { member = this.deleted.get(guild.id + data.user.id) || null; } + if (member) member.deleted = true; } return { guild, member }; } diff --git a/src/client/actions/GuildRoleDelete.js b/src/client/actions/GuildRoleDelete.js index 8f032a161..deafc8547 100644 --- a/src/client/actions/GuildRoleDelete.js +++ b/src/client/actions/GuildRoleDelete.js @@ -22,6 +22,7 @@ class GuildRoleDeleteAction extends Action { } else { role = this.deleted.get(guild.id + data.role_id) || null; } + if (role) role.deleted = true; } return { role }; diff --git a/src/client/actions/MessageDelete.js b/src/client/actions/MessageDelete.js index be026d2d6..9dc0828bf 100644 --- a/src/client/actions/MessageDelete.js +++ b/src/client/actions/MessageDelete.js @@ -20,6 +20,7 @@ class MessageDeleteAction extends Action { } else { message = this.deleted.get(channel.id + data.id) || null; } + if (message) message.deleted = true; } return { message }; diff --git a/src/client/actions/MessageDeleteBulk.js b/src/client/actions/MessageDeleteBulk.js index 5cf3fe7a0..7ee245571 100644 --- a/src/client/actions/MessageDeleteBulk.js +++ b/src/client/actions/MessageDeleteBulk.js @@ -11,6 +11,7 @@ class MessageDeleteBulkAction extends Action { for (const id of data.ids) { const message = channel.messages.get(id); if (message) { + message.deleted = true; messages.set(message.id, message); channel.messages.delete(id); } diff --git a/src/structures/Channel.js b/src/structures/Channel.js index 226ab9847..e5263ccc7 100644 --- a/src/structures/Channel.js +++ b/src/structures/Channel.js @@ -24,6 +24,12 @@ class Channel { */ this.type = null; + /** + * Whether the channel has been deleted + * @type {boolean} + */ + this.deleted = false; + if (data) this.setup(data); } diff --git a/src/structures/Emoji.js b/src/structures/Emoji.js index 470122639..ef10fd35c 100644 --- a/src/structures/Emoji.js +++ b/src/structures/Emoji.js @@ -22,6 +22,12 @@ class Emoji { */ this.guild = guild; + /** + * Whether this emoji has been deleted + * @type {boolean} + */ + this.deleted = false; + this.setup(data); } diff --git a/src/structures/Guild.js b/src/structures/Guild.js index bfff04fb8..972f7b889 100644 --- a/src/structures/Guild.js +++ b/src/structures/Guild.js @@ -49,6 +49,12 @@ class Guild { */ this.presences = new Collection(); + /** + * Whether the bot has been removed from the guild + * @type {boolean} + */ + this.deleted = false; + if (!data) return; if (data.unavailable) { /** diff --git a/src/structures/GuildMember.js b/src/structures/GuildMember.js index 9615aeb8d..1a56868ba 100644 --- a/src/structures/GuildMember.js +++ b/src/structures/GuildMember.js @@ -51,6 +51,12 @@ class GuildMember { * @type {?Message} */ this.lastMessage = null; + + /** + * Whether the member has been removed from the guild + * @type {boolean} + */ + this.deleted = false; } setup(data) { diff --git a/src/structures/Message.js b/src/structures/Message.js index ca9441bdc..c6179524c 100644 --- a/src/structures/Message.js +++ b/src/structures/Message.js @@ -29,6 +29,12 @@ class Message { */ this.channel = channel; + /** + * Whether this message has been deleted + * @type {boolean} + */ + this.deleted = false; + if (data) this.setup(data); } @@ -319,9 +325,9 @@ class Message { * @readonly */ get deletable() { - return this.author.id === this.client.user.id || (this.guild && + return !this.deleted && (this.author.id === this.client.user.id || (this.guild && this.channel.permissionsFor(this.client.user).has(Permissions.FLAGS.MANAGE_MESSAGES) - ); + )); } /** diff --git a/src/structures/Role.js b/src/structures/Role.js index d8baaf49d..389e96949 100644 --- a/src/structures/Role.js +++ b/src/structures/Role.js @@ -21,6 +21,12 @@ class Role { */ this.guild = guild; + /** + * Whether the role has been deleted + * @type {boolean} + */ + this.deleted = false; + if (data) this.setup(data); }