Add option to filter old messages in TextBasedChannel#bulkDelete (#1090)

* add filtering for messages older than two weeks

* Update RESTMethods.js

* Update RESTMethods.js

* Update RESTMethods.js

* Update TextBasedChannel.js

* Update RESTMethods.js

* Update RESTMethods.js

* Update RESTMethods.js

* Update RESTMethods.js

* Update TextBasedChannel.js
This commit is contained in:
Gus Caplan
2017-01-14 15:21:23 -06:00
committed by Schuyler Cebulskie
parent 78bf402e8e
commit 7f4846c826
2 changed files with 11 additions and 4 deletions

View File

@@ -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(() =>

View File

@@ -353,16 +353,17 @@ class TextBasedChannel {
}
/**
* Bulk delete given messages.
* Bulk delete given messages that are newer than two weeks
* <warn>This is only available when using a bot account.</warn>
* @param {Collection<string, Message>|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<Collection<string, Message>>} 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.');
}