feat: add Message#bulkDeletable (v13)

#8761 djs
This commit is contained in:
March 7th
2022-11-26 22:17:33 +07:00
parent 69c5eb94d2
commit f8a8ac7fc6
5 changed files with 49 additions and 4 deletions

View File

@@ -15,7 +15,7 @@ const ReactionCollector = require('./ReactionCollector');
const { Sticker } = require('./Sticker');
const { Error } = require('../errors');
const ReactionManager = require('../managers/ReactionManager');
const { InteractionTypes, MessageTypes, SystemMessageTypes } = require('../util/Constants');
const { InteractionTypes, MessageTypes, SystemMessageTypes, MaxBulkDeletableMessageAge } = require('../util/Constants');
const MessageFlags = require('../util/MessageFlags');
const Permissions = require('../util/Permissions');
const SnowflakeUtil = require('../util/SnowflakeUtil');
@@ -641,6 +641,26 @@ class Message extends Base {
);
}
/**
* Whether the message is bulk deletable by the client user
* @type {boolean}
* @readonly
* @example
* // Filter for bulk deletable messages
* channel.bulkDelete(messages.filter(message => message.bulkDeletable));
*/
get bulkDeletable() {
if (!this.client.user.bot) return false;
const permissions = this.channel?.permissionsFor(this.client.user);
return (
(this.inGuild() &&
Date.now() - this.createdTimestamp < MaxBulkDeletableMessageAge &&
this.deletable &&
permissions?.has(Permissions.FLAGS.MANAGE_MESSAGES, false)) ??
false
);
}
/**
* Whether the message is pinnable by the client user
* @type {boolean}