diff --git a/src/structures/Message.js b/src/structures/Message.js index 1b4302df0e4d..36c26f2dfc5f 100644 --- a/src/structures/Message.js +++ b/src/structures/Message.js @@ -425,6 +425,23 @@ class Message extends Base { ); } + /** + * Whether the message is crosspostable by the client user + * @type {boolean} + * @readonly + */ + get crosspostable() { + return ( + this.channel.type === 'news' && + !this.flags.has(MessageFlags.FLAGS.CROSSPOSTED) && + this.type === 'DEFAULT' && + this.channel.viewable && + this.channel.permissionsFor(this.client.user).has(Permissions.FLAGS.SEND_MESSAGES) && + (this.author.id === this.client.user.id || + this.channel.permissionsFor(this.client.user).has(Permissions.FLAGS.MANAGE_MESSAGES)) + ); + } + /** * Options that can be passed into editMessage. * @typedef {Object} MessageEditOptions diff --git a/typings/index.d.ts b/typings/index.d.ts index 041039f9c884..7322dc62f184 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -3018,6 +3018,7 @@ declare module 'discord.js' { | 'attachments' | 'channel' | 'deletable' + | 'crosspostable' | 'editable' | 'mentions' | 'pinnable' @@ -3029,6 +3030,7 @@ declare module 'discord.js' { attachments: Message['attachments']; channel: Message['channel']; readonly deletable: boolean; + readonly crosspostable: boolean; readonly editable: boolean; readonly edits: Message['edits']; embeds: Message['embeds'];