fix(Message#deletable): add check for deletable message types (#9168)

* fix(Message#deletable): add check for deletable message types

* docs: update docs

* fix: add check for `AutoModerationAction` message

* style: better style

---------

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
This commit is contained in:
Synbulat Biishev
2023-02-25 19:38:05 +05:00
committed by GitHub
parent c1000b86ed
commit e78b8ad3fb
3 changed files with 80 additions and 5 deletions

View File

@@ -22,7 +22,7 @@ const { Sticker } = require('./Sticker');
const { DiscordjsError, ErrorCodes } = require('../errors');
const ReactionManager = require('../managers/ReactionManager');
const { createComponent } = require('../util/Components');
const { NonSystemMessageTypes, MaxBulkDeletableMessageAge } = require('../util/Constants');
const { NonSystemMessageTypes, MaxBulkDeletableMessageAge, DeletableMessageTypes } = require('../util/Constants');
const MessageFlagsBitField = require('../util/MessageFlagsBitField');
const PermissionsBitField = require('../util/PermissionsBitField');
const { cleanContent, resolvePartialEmoji } = require('../util/Util');
@@ -616,6 +616,8 @@ class Message extends Base {
* @readonly
*/
get deletable() {
if (!DeletableMessageTypes.includes(this.type)) return false;
if (!this.guild) {
return this.author.id === this.client.user.id;
}
@@ -629,10 +631,10 @@ class Message extends Base {
// This flag allows deleting even if timed out
if (permissions.has(PermissionFlagsBits.Administrator, false)) return true;
return Boolean(
this.author.id === this.client.user.id ||
(permissions.has(PermissionFlagsBits.ManageMessages, false) &&
this.guild.members.me.communicationDisabledUntilTimestamp < Date.now()),
// The auto moderation action message author is the reference message author
return (
(this.type !== MessageType.AutoModerationAction && this.author.id === this.client.user.id) ||
(permissions.has(PermissionFlagsBits.ManageMessages, false) && !this.guild.members.me.isCommunicationDisabled())
);
}