feat: Backport reason on pin and unpin (#7556)

This commit is contained in:
Jiralite
2022-03-02 09:32:03 +00:00
committed by GitHub
parent 49397c0ca4
commit b231bece0e
3 changed files with 16 additions and 12 deletions

View File

@@ -156,25 +156,27 @@ class MessageManager extends CachedManager {
/** /**
* Pins a message to the channel's pinned messages, even if it's not cached. * Pins a message to the channel's pinned messages, even if it's not cached.
* @param {MessageResolvable} message The message to pin * @param {MessageResolvable} message The message to pin
* @param {string} [reason] Reason for pinning
* @returns {Promise<void>} * @returns {Promise<void>}
*/ */
async pin(message) { async pin(message, reason) {
message = this.resolveId(message); message = this.resolveId(message);
if (!message) throw new TypeError('INVALID_TYPE', 'message', 'MessageResolvable'); 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. * Unpins a message from the channel's pinned messages, even if it's not cached.
* @param {MessageResolvable} message The message to unpin * @param {MessageResolvable} message The message to unpin
* @param {string} [reason] Reason for unpinning
* @returns {Promise<void>} * @returns {Promise<void>}
*/ */
async unpin(message) { async unpin(message, reason) {
message = this.resolveId(message); message = this.resolveId(message);
if (!message) throw new TypeError('INVALID_TYPE', 'message', 'MessageResolvable'); 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 });
} }
/** /**

View File

@@ -720,6 +720,7 @@ class Message extends Base {
/** /**
* Pins this message to the channel's pinned messages. * Pins this message to the channel's pinned messages.
* @param {string} [reason] Reason for pinning
* @returns {Promise<Message>} * @returns {Promise<Message>}
* @example * @example
* // Pin a message * // Pin a message
@@ -727,14 +728,15 @@ class Message extends Base {
* .then(console.log) * .then(console.log)
* .catch(console.error) * .catch(console.error)
*/ */
async pin() { async pin(reason) {
if (!this.channel) throw new Error('CHANNEL_NOT_CACHED'); 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; return this;
} }
/** /**
* Unpins this message from the channel's pinned messages. * Unpins this message from the channel's pinned messages.
* @param {string} [reason] Reason for unpinning
* @returns {Promise<Message>} * @returns {Promise<Message>}
* @example * @example
* // Unpin a message * // Unpin a message
@@ -742,9 +744,9 @@ class Message extends Base {
* .then(console.log) * .then(console.log)
* .catch(console.error) * .catch(console.error)
*/ */
async unpin() { async unpin(reason) {
if (!this.channel) throw new Error('CHANNEL_NOT_CACHED'); 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; return this;
} }

8
typings/index.d.ts vendored
View File

@@ -1546,7 +1546,7 @@ export class Message<Cached extends boolean = boolean> extends Base {
public fetchWebhook(): Promise<Webhook>; public fetchWebhook(): Promise<Webhook>;
public crosspost(): Promise<Message>; public crosspost(): Promise<Message>;
public fetch(force?: boolean): Promise<Message>; public fetch(force?: boolean): Promise<Message>;
public pin(): Promise<Message>; public pin(reason?: string): Promise<Message>;
public react(emoji: EmojiIdentifierResolvable): Promise<MessageReaction>; public react(emoji: EmojiIdentifierResolvable): Promise<MessageReaction>;
public removeAttachments(): Promise<Message>; public removeAttachments(): Promise<Message>;
public reply(options: string | MessagePayload | ReplyMessageOptions): Promise<Message>; public reply(options: string | MessagePayload | ReplyMessageOptions): Promise<Message>;
@@ -1555,7 +1555,7 @@ export class Message<Cached extends boolean = boolean> extends Base {
public suppressEmbeds(suppress?: boolean): Promise<Message>; public suppressEmbeds(suppress?: boolean): Promise<Message>;
public toJSON(): unknown; public toJSON(): unknown;
public toString(): string; public toString(): string;
public unpin(): Promise<Message>; public unpin(reason?: string): Promise<Message>;
public inGuild(): this is Message<true> & this; public inGuild(): this is Message<true> & this;
} }
@@ -3174,8 +3174,8 @@ export class MessageManager extends CachedManager<Snowflake, Message, MessageRes
): Promise<Collection<Snowflake, Message>>; ): Promise<Collection<Snowflake, Message>>;
public fetchPinned(cache?: boolean): Promise<Collection<Snowflake, Message>>; public fetchPinned(cache?: boolean): Promise<Collection<Snowflake, Message>>;
public react(message: MessageResolvable, emoji: EmojiIdentifierResolvable): Promise<void>; public react(message: MessageResolvable, emoji: EmojiIdentifierResolvable): Promise<void>;
public pin(message: MessageResolvable): Promise<void>; public pin(message: MessageResolvable, reason?: string): Promise<void>;
public unpin(message: MessageResolvable): Promise<void>; public unpin(message: MessageResolvable, reason?: string): Promise<void>;
} }
export class PermissionOverwriteManager extends CachedManager< export class PermissionOverwriteManager extends CachedManager<