Skip to content

Commit

Permalink
feat: Add "deleted" property to multiple structures. (#2556)
Browse files Browse the repository at this point in the history
* Add "deleted" property to "Message" structure

* Add "deleted" property to Multiple structures

Structures edited:
- Channel
- Emoji
- Guild
- Guild Member
- Role

* Update "deletable" getter

* Fix ESLint "no-trailing-spaces" errors

* Requested Change: Mark w/ bulkDelete
  • Loading branch information
a1icja authored and Lewdcario committed May 28, 2018
1 parent 27fcb64 commit f0c4d0e
Show file tree
Hide file tree
Showing 13 changed files with 45 additions and 2 deletions.
1 change: 1 addition & 0 deletions src/client/actions/ChannelDelete.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ class ChannelDeleteAction extends Action {

if (channel) {
client.channels.remove(channel.id);
channel.deleted = true;
client.emit(Events.CHANNEL_DELETE, channel);
}

Expand Down
1 change: 1 addition & 0 deletions src/client/actions/GuildDelete.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ class GuildDeleteAction extends Action {

// Delete guild
client.guilds.remove(guild.id);
guild.deleted = true;
client.emit(Events.GUILD_DELETE, guild);
this.deleted.set(guild.id, guild);
this.scheduleForDeletion(guild.id);
Expand Down
1 change: 1 addition & 0 deletions src/client/actions/GuildEmojiDelete.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ const { Events } = require('../../util/Constants');
class GuildEmojiDeleteAction extends Action {
handle(emoji) {
emoji.guild.emojis.remove(emoji.id);
emoji.deleted = true;
this.client.emit(Events.GUILD_EMOJI_DELETE, emoji);
return { emoji };
}
Expand Down
1 change: 1 addition & 0 deletions src/client/actions/GuildMemberRemove.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ class GuildMemberRemoveAction extends Action {
guild.memberCount--;
if (member) {
guild.voiceStates.delete(member.id);
member.deleted = true;
guild.members.remove(member.id);
if (client.status === Status.READY) client.emit(Events.GUILD_MEMBER_REMOVE, member);
}
Expand Down
1 change: 1 addition & 0 deletions src/client/actions/GuildRoleDelete.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ class GuildRoleDeleteAction extends Action {
role = guild.roles.get(data.role_id);
if (role) {
guild.roles.remove(data.role_id);
role.deleted = true;
client.emit(Events.GUILD_ROLE_DELETE, role);
}
}
Expand Down
1 change: 1 addition & 0 deletions src/client/actions/MessageDelete.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ class MessageDeleteAction extends Action {
message = channel.messages.get(data.id);
if (message) {
channel.messages.delete(message.id);
message.deleted = true;
client.emit(Events.MESSAGE_DELETE, message);
}
}
Expand Down
1 change: 1 addition & 0 deletions src/client/actions/MessageDeleteBulk.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ class MessageDeleteBulkAction extends Action {
for (const id of ids) {
const message = channel.messages.get(id);
if (message) {
message.deleted = true;
messages.set(message.id, message);
channel.messages.delete(id);
}
Expand Down
6 changes: 6 additions & 0 deletions src/structures/Channel.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,12 @@ class Channel extends Base {
*/
this.type = type ? type.toLowerCase() : 'unknown';

/**
* Whether the channel has been deleted
* @type {boolean}
*/
this.deleted = false;

if (data) this._patch(data);
}

Expand Down
6 changes: 6 additions & 0 deletions src/structures/Emoji.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,12 @@ class Emoji extends Base {
* @type {?Snowflake}
*/
this.id = emoji.id;

/**
* Whether this emoji has been deleted
* @type {boolean}
*/
this.deleted = false;
}

/**
Expand Down
6 changes: 6 additions & 0 deletions src/structures/Guild.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,12 @@ class Guild extends Base {
*/
this.presences = new PresenceStore(this.client);

/**
* Whether the bot has been removed from the guild
* @type {boolean}
*/
this.deleted = false;

if (!data) return;
if (data.unavailable) {
/**
Expand Down
6 changes: 6 additions & 0 deletions src/structures/GuildMember.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,12 @@ class GuildMember extends Base {
*/
this.lastMessageChannelID = null;

/**
* Whether the member has been removed from the guild
* @type {boolean}
*/
this.deleted = false;

this._roles = [];
if (data) this._patch(data);
}
Expand Down
10 changes: 8 additions & 2 deletions src/structures/Message.js
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,12 @@ class Message extends Base {
* @private
*/
this._edits = [];

/**
* Whether this message has been deleted
* @type {boolean}
*/
this.deleted = false;
}

/**
Expand Down Expand Up @@ -341,9 +347,9 @@ class Message extends Base {
* @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)
);
));
}

/**
Expand Down
6 changes: 6 additions & 0 deletions src/structures/Role.js
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,12 @@ class Role extends Base {
* @type {boolean}
*/
this.mentionable = data.mentionable;

/**
* Whether the role has been deleted
* @type {boolean}
*/
this.deleted = false;
}

/**
Expand Down

0 comments on commit f0c4d0e

Please sign in to comment.