diff --git a/src/managers/MessageManager.js b/src/managers/MessageManager.js index a1e9a8b86c68..6a5bab4322e8 100644 --- a/src/managers/MessageManager.js +++ b/src/managers/MessageManager.js @@ -156,25 +156,27 @@ class MessageManager extends CachedManager { /** * Pins a message to the channel's pinned messages, even if it's not cached. * @param {MessageResolvable} message The message to pin + * @param {string} [reason] Reason for pinning * @returns {Promise} */ - async pin(message) { + async pin(message, reason) { message = this.resolveId(message); if (!message) throw new TypeError('INVALID_TYPE', 'message', 'MessageResolvable'); - await this.client.api.channels(this.channel.id).pins(message).put(); + await this.client.api.channels(this.channel.id).pins(message).put({ reason }); } /** * Unpins a message from the channel's pinned messages, even if it's not cached. * @param {MessageResolvable} message The message to unpin + * @param {string} [reason] Reason for unpinning * @returns {Promise} */ - async unpin(message) { + async unpin(message, reason) { message = this.resolveId(message); if (!message) throw new TypeError('INVALID_TYPE', 'message', 'MessageResolvable'); - await this.client.api.channels(this.channel.id).pins(message).delete(); + await this.client.api.channels(this.channel.id).pins(message).delete({ reason }); } /** diff --git a/src/structures/Message.js b/src/structures/Message.js index d02f3fc30453..2b2648a29202 100644 --- a/src/structures/Message.js +++ b/src/structures/Message.js @@ -720,6 +720,7 @@ class Message extends Base { /** * Pins this message to the channel's pinned messages. + * @param {string} [reason] Reason for pinning * @returns {Promise} * @example * // Pin a message @@ -727,14 +728,15 @@ class Message extends Base { * .then(console.log) * .catch(console.error) */ - async pin() { + async pin(reason) { if (!this.channel) throw new Error('CHANNEL_NOT_CACHED'); - await this.channel.messages.pin(this.id); + await this.channel.messages.pin(this.id, reason); return this; } /** * Unpins this message from the channel's pinned messages. + * @param {string} [reason] Reason for unpinning * @returns {Promise} * @example * // Unpin a message @@ -742,9 +744,9 @@ class Message extends Base { * .then(console.log) * .catch(console.error) */ - async unpin() { + async unpin(reason) { if (!this.channel) throw new Error('CHANNEL_NOT_CACHED'); - await this.channel.messages.unpin(this.id); + await this.channel.messages.unpin(this.id, reason); return this; } diff --git a/typings/index.d.ts b/typings/index.d.ts index df6c1667c905..8219cb15f696 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -1546,7 +1546,7 @@ export class Message extends Base { public fetchWebhook(): Promise; public crosspost(): Promise; public fetch(force?: boolean): Promise; - public pin(): Promise; + public pin(reason?: string): Promise; public react(emoji: EmojiIdentifierResolvable): Promise; public removeAttachments(): Promise; public reply(options: string | MessagePayload | ReplyMessageOptions): Promise; @@ -1555,7 +1555,7 @@ export class Message extends Base { public suppressEmbeds(suppress?: boolean): Promise; public toJSON(): unknown; public toString(): string; - public unpin(): Promise; + public unpin(reason?: string): Promise; public inGuild(): this is Message & this; } @@ -3174,8 +3174,8 @@ export class MessageManager extends CachedManager>; public fetchPinned(cache?: boolean): Promise>; public react(message: MessageResolvable, emoji: EmojiIdentifierResolvable): Promise; - public pin(message: MessageResolvable): Promise; - public unpin(message: MessageResolvable): Promise; + public pin(message: MessageResolvable, reason?: string): Promise; + public unpin(message: MessageResolvable, reason?: string): Promise; } export class PermissionOverwriteManager extends CachedManager<