From c76f3048afa6cac1fe7e5c60a64a96dc6a97d844 Mon Sep 17 00:00:00 2001 From: Lewdcario Date: Wed, 8 Aug 2018 17:14:52 -0500 Subject: [PATCH] backport: TextChannel#bulkDelete accepts Snowflake[] --- src/client/rest/RESTMethods.js | 5 ++--- src/structures/interfaces/TextBasedChannel.js | 17 +++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/client/rest/RESTMethods.js b/src/client/rest/RESTMethods.js index e44796e06..a3406591d 100644 --- a/src/client/rest/RESTMethods.js +++ b/src/client/rest/RESTMethods.js @@ -179,13 +179,12 @@ class RESTMethods { } bulkDeleteMessages(channel, messages) { - const ids = messages.map(m => m.id); return this.rest.makeRequest('post', Endpoints.Channel(channel).messages.bulkDelete, true, { - messages: ids, + messages: messages, }).then(() => this.client.actions.MessageDeleteBulk.handle({ channel_id: channel.id, - ids, + ids: messages, }).messages ); } diff --git a/src/structures/interfaces/TextBasedChannel.js b/src/structures/interfaces/TextBasedChannel.js index 42c818366..56a086a96 100644 --- a/src/structures/interfaces/TextBasedChannel.js +++ b/src/structures/interfaces/TextBasedChannel.js @@ -452,7 +452,8 @@ class TextBasedChannel { /** * Bulk delete given messages that are newer than two weeks. * This is only available when using a bot account. - * @param {Collection|Message[]|number} messages Messages or number of messages to delete + * @param {Collection|Message[]|Snowflake[]|number} messages + * Messages or number of messages to delete * @param {boolean} [filterOld=false] Filter messages to remove those which are older than two weeks automatically * @returns {Promise>} Deleted messages * @example @@ -462,16 +463,16 @@ class TextBasedChannel { * .catch(console.error); */ bulkDelete(messages, filterOld = false) { - if (messages instanceof Collection) messages = [...messages.values()]; - if (messages instanceof Array) { + if (messages instanceof Array || messages instanceof Collection) { + let messageIDs = messages instanceof Collection ? messages.keyArray() : messages.map(m => m.id || m); if (filterOld) { - messages = messages.filter(m => Date.now() - Snowflake.deconstruct(m.id).date.getTime() < 1209600000); + messageIDs = messageIDs.filter(id => Date.now() - Snowflake.deconstruct(id).date.getTime() < 1209600000); } - if (messages.length === 0) return Promise.resolve(new Collection()); - if (messages.length === 1) { - return messages[0].delete().then(() => new Collection([[messages[0].id, messages[0]]])); + if (messageIDs.length === 0) return Promise.resolve(new Collection()); + if (messageIDs.length === 1) { + return this.fetchMessage(messageIDs[0]).then(m => m.delete()).then(m => new Collection([[m.id, m]])); } - return this.client.rest.methods.bulkDeleteMessages(this, messages); + return this.client.rest.methods.bulkDeleteMessages(this, messageIDs); } if (!isNaN(messages)) return this.fetchMessages({ limit: messages }).then(msgs => this.bulkDelete(msgs, filterOld)); throw new TypeError('The messages must be an Array, Collection, or number.');