From 6683c40a6fed0ab0dc1121cf7fe82766a8315607 Mon Sep 17 00:00:00 2001 From: Isabella Date: Thu, 21 Dec 2017 02:31:47 -0600 Subject: [PATCH] fix(bulkDelete): stop rejections when filterOld=true (#2178) * fix(bulkDelete): stop rejections when filterOld=true * gus suggestion --- src/structures/interfaces/TextBasedChannel.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/structures/interfaces/TextBasedChannel.js b/src/structures/interfaces/TextBasedChannel.js index 37c106a25..33424d298 100644 --- a/src/structures/interfaces/TextBasedChannel.js +++ b/src/structures/interfaces/TextBasedChannel.js @@ -4,6 +4,7 @@ const MessageCollector = require('../MessageCollector'); const Collection = require('../../util/Collection'); const Attachment = require('../../structures/Attachment'); const RichEmbed = require('../../structures/RichEmbed'); +const Snowflake = require('../../util/Snowflake'); const util = require('util'); /** @@ -390,11 +391,18 @@ class TextBasedChannel { * @returns {Promise>} Deleted messages */ bulkDelete(messages, filterOld = false) { - if (!isNaN(messages)) return this.fetchMessages({ limit: messages }).then(msgs => this.bulkDelete(msgs, filterOld)); if (messages instanceof Array || messages instanceof Collection) { - const messageIDs = messages instanceof Collection ? messages.keyArray() : messages.map(m => m.id); + let messageIDs = messages instanceof Collection ? messages.keyArray() : messages.map(m => m.id); + if (filterOld) { + messageIDs = messageIDs.filter(id => Date.now() - Snowflake.deconstruct(id).date.getTime() < 1209600000); + } + if (messageIDs.length === 0) return new Collection(); + if (messageIDs.length === 1) { + return this.fetchMessage(messageIDs[0]).then(msg => msg.delete().then(() => new Collection([[msg.id, msg]]))); + } return this.client.rest.methods.bulkDeleteMessages(this, messageIDs, filterOld); } + 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.'); }