Skip to content

Commit e2bbfe7

Browse files
Jiralitealmeidx
andauthored
refactor!: Return only snowflakes for bulk delete (discordjs#10704)
BREAKING CHANGE: Bulk deleting will only return the message ids that were deleted. --------- Co-authored-by: Almeida <github@almeidx.dev>
1 parent 6a42c5f commit e2bbfe7

File tree

2 files changed

+14
-26
lines changed

2 files changed

+14
-26
lines changed

packages/discord.js/src/structures/interfaces/TextBasedChannel.js

Lines changed: 13 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -286,56 +286,44 @@ class TextBasedChannel {
286286
}
287287

288288
/**
289-
* Bulk deletes given messages that are newer than two weeks.
289+
* Bulk deletes given messages up to 2 weeks old.
290290
* @param {Collection<Snowflake, Message>|MessageResolvable[]|number} messages
291291
* Messages or number of messages to delete
292292
* @param {boolean} [filterOld=false] Filter messages to remove those which are older than two weeks automatically
293-
* @returns {Promise<Collection<Snowflake, Message|undefined>>} Returns the deleted messages
293+
* @returns {Promise<Snowflake[]>} Returns the deleted messages ids
294294
* @example
295295
* // Bulk delete messages
296296
* channel.bulkDelete(5)
297-
* .then(messages => console.log(`Bulk deleted ${messages.size} messages`))
297+
* .then(messages => console.log(`Bulk deleted ${messages.length} messages`))
298298
* .catch(console.error);
299299
*/
300300
async bulkDelete(messages, filterOld = false) {
301301
if (Array.isArray(messages) || messages instanceof Collection) {
302302
let messageIds =
303303
messages instanceof Collection ? [...messages.keys()] : messages.map(message => message.id ?? message);
304+
304305
if (filterOld) {
305306
messageIds = messageIds.filter(
306307
id => Date.now() - DiscordSnowflake.timestampFrom(id) < MaxBulkDeletableMessageAge,
307308
);
308309
}
309-
if (messageIds.length === 0) return new Collection();
310+
311+
if (messageIds.length === 0) return [];
312+
310313
if (messageIds.length === 1) {
311-
const message = this.client.actions.MessageDelete.getMessage(
312-
{
313-
message_id: messageIds[0],
314-
},
315-
this,
316-
);
317314
await this.client.rest.delete(Routes.channelMessage(this.id, messageIds[0]));
318-
return message ? new Collection([[message.id, message]]) : new Collection();
315+
return messageIds;
319316
}
317+
320318
await this.client.rest.post(Routes.channelBulkDelete(this.id), { body: { messages: messageIds } });
321-
return messageIds.reduce(
322-
(col, id) =>
323-
col.set(
324-
id,
325-
this.client.actions.MessageDeleteBulk.getMessage(
326-
{
327-
message_id: id,
328-
},
329-
this,
330-
),
331-
),
332-
new Collection(),
333-
);
319+
return messageIds;
334320
}
335-
if (!isNaN(messages)) {
321+
322+
if (!Number.isNaN(messages)) {
336323
const msgs = await this.messages.fetch({ limit: messages });
337324
return this.bulkDelete(msgs, filterOld);
338325
}
326+
339327
throw new DiscordjsTypeError(ErrorCodes.MessageBulkDeleteType);
340328
}
341329

packages/discord.js/typings/index.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4584,7 +4584,7 @@ export interface TextBasedChannelFields<InGuild extends boolean = boolean, InDM
45844584
bulkDelete(
45854585
messages: Collection<Snowflake, Message> | readonly MessageResolvable[] | number,
45864586
filterOld?: boolean,
4587-
): Promise<Collection<Snowflake, Message | PartialMessage | undefined>>;
4587+
): Promise<Snowflake[]>;
45884588
createMessageComponentCollector<ComponentType extends MessageComponentType>(
45894589
options?: MessageChannelCollectorOptionsParams<ComponentType, true>,
45904590
): InteractionCollector<MappedInteractionTypes[ComponentType]>;

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy