discord.js 15.0.0-dev.1752538515-5a611be8d → 15.0.0-dev.1752624900-d03cacbde

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "discord.js",
4
- "version": "15.0.0-dev.1752538515-5a611be8d",
4
+ "version": "15.0.0-dev.1752624900-d03cacbde",
5
5
  "description": "A powerful library for interacting with the Discord API",
6
6
  "main": "./src/index.js",
7
7
  "types": "./typings/index.d.ts",
@@ -62,8 +62,8 @@
62
62
  "tslib": "^2.8.1",
63
63
  "undici": "7.11.0",
64
64
  "@discordjs/builders": "^1.11.1",
65
- "@discordjs/collection": "^2.1.1",
66
65
  "@discordjs/formatters": "^0.6.1",
66
+ "@discordjs/collection": "^2.1.1",
67
67
  "@discordjs/rest": "^2.5.0",
68
68
  "@discordjs/util": "^1.1.1",
69
69
  "@discordjs/ws": "^2.0.2"
@@ -123,24 +123,63 @@ class MessageManager extends CachedManager {
123
123
  return data.reduce((_data, message) => _data.set(message.id, this._add(message, options.cache)), new Collection());
124
124
  }
125
125
 
126
+ /**
127
+ * Options used to fetch pinned messages.
128
+ *
129
+ * @typedef {Object} FetchPinnedMessagesOptions
130
+ * @property {DateResolvable} [before] Consider only pinned messages before this time
131
+ * @property {number} [limit] The maximum number of pinned messages to return
132
+ * @property {boolean} [cache] Whether to cache the pinned messages
133
+ */
134
+
135
+ /**
136
+ * Data returned from fetching pinned messages.
137
+ *
138
+ * @typedef {Object} FetchPinnedMessagesResponse
139
+ * @property {MessagePin[]} items The pinned messages
140
+ * @property {boolean} hasMore Whether there are additional pinned messages that require a subsequent call
141
+ */
142
+
143
+ /**
144
+ * Pinned message data returned from fetching pinned messages.
145
+ *
146
+ * @typedef {Object} MessagePin
147
+ * @property {Date} pinnedAt The time the message was pinned at
148
+ * @property {number} pinnedTimestamp The timestamp the message was pinned at
149
+ * @property {Message} message The pinned message
150
+ */
151
+
126
152
  /**
127
153
  * Fetches the pinned messages of this channel and returns a collection of them.
128
154
  * <info>The returned Collection does not contain any reaction data of the messages.
129
155
  * Those need to be fetched separately.</info>
130
156
  *
131
- * @param {boolean} [cache=true] Whether to cache the message(s)
132
- * @returns {Promise<Collection<Snowflake, Message>>}
157
+ * @param {FetchPinnedMessagesOptions} [options={}] Options for fetching pinned messages
158
+ * @returns {Promise<FetchPinnedMessagesResponse>}
133
159
  * @example
134
160
  * // Get pinned messages
135
- * channel.messages.fetchPinned()
136
- * .then(messages => console.log(`Received ${messages.size} messages`))
161
+ * channel.messages.fetchPins()
162
+ * .then(messages => console.log(`Received ${messages.items.length} messages`))
137
163
  * .catch(console.error);
138
164
  */
139
- async fetchPinned(cache = true) {
140
- const data = await this.client.rest.get(Routes.channelPins(this.channel.id));
141
- const messages = new Collection();
142
- for (const message of data) messages.set(message.id, this._add(message, cache));
143
- return messages;
165
+ async fetchPins(options = {}) {
166
+ const data = await this.client.rest.get(Routes.channelMessagesPins(this.channel.id), {
167
+ query: makeURLSearchParams({
168
+ ...options,
169
+ before: options.before && new Date(options.before).toISOString(),
170
+ }),
171
+ });
172
+
173
+ return {
174
+ items: data.items.map(item => ({
175
+ pinnedTimestamp: Date.parse(item.pinned_at),
176
+ get pinnedAt() {
177
+ return new Date(this.pinnedTimestamp);
178
+ },
179
+ message: this._add(item.message, options.cache),
180
+ })),
181
+ hasMore: data.has_more,
182
+ };
144
183
  }
145
184
 
146
185
  /**
@@ -221,7 +260,7 @@ class MessageManager extends CachedManager {
221
260
  const messageId = this.resolveId(message);
222
261
  if (!messageId) throw new DiscordjsTypeError(ErrorCodes.InvalidType, 'message', 'MessageResolvable');
223
262
 
224
- await this.client.rest.put(Routes.channelPin(this.channel.id, messageId), { reason });
263
+ await this.client.rest.put(Routes.channelMessagesPin(this.channel.id, messageId), { reason });
225
264
  }
226
265
 
227
266
  /**
@@ -235,7 +274,7 @@ class MessageManager extends CachedManager {
235
274
  const messageId = this.resolveId(message);
236
275
  if (!messageId) throw new DiscordjsTypeError(ErrorCodes.InvalidType, 'message', 'MessageResolvable');
237
276
 
238
- await this.client.rest.delete(Routes.channelPin(this.channel.id, messageId), { reason });
277
+ await this.client.rest.delete(Routes.channelMessagesPin(this.channel.id, messageId), { reason });
239
278
  }
240
279
 
241
280
  /**
@@ -4516,7 +4516,7 @@ export abstract class MessageManager<InGuild extends boolean = boolean> extends
4516
4516
  ): Promise<Message<InGuild>>;
4517
4517
  public fetch(options: FetchMessageOptions | MessageResolvable): Promise<Message<InGuild>>;
4518
4518
  public fetch(options?: FetchMessagesOptions): Promise<Collection<Snowflake, Message<InGuild>>>;
4519
- public fetchPinned(cache?: boolean): Promise<Collection<Snowflake, Message<InGuild>>>;
4519
+ public fetchPins(options?: FetchPinnedMessagesOptions): Promise<FetchPinnedMessagesResponse<InGuild>>;
4520
4520
  public react(message: MessageResolvable, emoji: EmojiIdentifierResolvable): Promise<void>;
4521
4521
  public pin(message: MessageResolvable, reason?: string): Promise<void>;
4522
4522
  public unpin(message: MessageResolvable, reason?: string): Promise<void>;
@@ -5800,6 +5800,23 @@ export interface FetchMessagesOptions {
5800
5800
  limit?: number;
5801
5801
  }
5802
5802
 
5803
+ export interface FetchPinnedMessagesOptions {
5804
+ before?: DateResolvable;
5805
+ cache?: boolean;
5806
+ limit?: number;
5807
+ }
5808
+
5809
+ export interface FetchPinnedMessagesResponse<InGuild extends boolean = boolean> {
5810
+ hasMore: boolean;
5811
+ items: readonly MessagePin<InGuild>[];
5812
+ }
5813
+
5814
+ export interface MessagePin<InGuild extends boolean = boolean> {
5815
+ message: Message<InGuild>;
5816
+ get pinnedAt(): Date;
5817
+ pinnedTimestamp: number;
5818
+ }
5819
+
5803
5820
  export interface FetchReactionUsersOptions {
5804
5821
  after?: Snowflake;
5805
5822
  limit?: number;
@@ -4516,7 +4516,7 @@ export abstract class MessageManager<InGuild extends boolean = boolean> extends
4516
4516
  ): Promise<Message<InGuild>>;
4517
4517
  public fetch(options: FetchMessageOptions | MessageResolvable): Promise<Message<InGuild>>;
4518
4518
  public fetch(options?: FetchMessagesOptions): Promise<Collection<Snowflake, Message<InGuild>>>;
4519
- public fetchPinned(cache?: boolean): Promise<Collection<Snowflake, Message<InGuild>>>;
4519
+ public fetchPins(options?: FetchPinnedMessagesOptions): Promise<FetchPinnedMessagesResponse<InGuild>>;
4520
4520
  public react(message: MessageResolvable, emoji: EmojiIdentifierResolvable): Promise<void>;
4521
4521
  public pin(message: MessageResolvable, reason?: string): Promise<void>;
4522
4522
  public unpin(message: MessageResolvable, reason?: string): Promise<void>;
@@ -5800,6 +5800,23 @@ export interface FetchMessagesOptions {
5800
5800
  limit?: number;
5801
5801
  }
5802
5802
 
5803
+ export interface FetchPinnedMessagesOptions {
5804
+ before?: DateResolvable;
5805
+ cache?: boolean;
5806
+ limit?: number;
5807
+ }
5808
+
5809
+ export interface FetchPinnedMessagesResponse<InGuild extends boolean = boolean> {
5810
+ hasMore: boolean;
5811
+ items: readonly MessagePin<InGuild>[];
5812
+ }
5813
+
5814
+ export interface MessagePin<InGuild extends boolean = boolean> {
5815
+ message: Message<InGuild>;
5816
+ get pinnedAt(): Date;
5817
+ pinnedTimestamp: number;
5818
+ }
5819
+
5803
5820
  export interface FetchReactionUsersOptions {
5804
5821
  after?: Snowflake;
5805
5822
  limit?: number;