diff --git a/src/client/rest/RESTMethods.js b/src/client/rest/RESTMethods.js index de8198b3c..4fdc61b79 100644 --- a/src/client/rest/RESTMethods.js +++ b/src/client/rest/RESTMethods.js @@ -5,6 +5,7 @@ const splitMessage = require('../../util/SplitMessage'); const parseEmoji = require('../../util/ParseEmoji'); const escapeMarkdown = require('../../util/EscapeMarkdown'); const transformSearchOptions = require('../../util/TransformSearchOptions'); +const Snowflake = require('../../util/Snowflake'); const User = require('../../structures/User'); const GuildMember = require('../../structures/GuildMember'); @@ -136,7 +137,12 @@ class RESTMethods { ); } - bulkDeleteMessages(channel, messages) { + bulkDeleteMessages(channel, messages, filterOld) { + if (filterOld) { + messages = messages.filter(id => + Date.now() - Snowflake.deconstruct(id).date.getTime() < 1209600000 + ); + } return this.rest.makeRequest('post', `${Constants.Endpoints.channelMessages(channel.id)}/bulk_delete`, true, { messages, }).then(() => diff --git a/src/structures/interface/TextBasedChannel.js b/src/structures/interface/TextBasedChannel.js index 70d6747ef..6eabec25d 100644 --- a/src/structures/interface/TextBasedChannel.js +++ b/src/structures/interface/TextBasedChannel.js @@ -353,16 +353,17 @@ class TextBasedChannel { } /** - * Bulk delete given messages. + * 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 to delete, 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 */ - bulkDelete(messages) { + bulkDelete(messages, filterOld = false) { if (!isNaN(messages)) return this.fetchMessages({ limit: messages }).then(msgs => this.bulkDelete(msgs)); if (messages instanceof Array || messages instanceof Collection) { const messageIDs = messages instanceof Collection ? messages.keyArray() : messages.map(m => m.id); - return this.client.rest.methods.bulkDeleteMessages(this, messageIDs); + return this.client.rest.methods.bulkDeleteMessages(this, messageIDs, filterOld); } throw new TypeError('The messages must be an Array, Collection, or number.'); }