summaryrefslogtreecommitdiff
path: root/node_modules/discord.js/src/client/actions/MessageDeleteBulk.js
blob: 5f61d19d955083e4e6bb4ecb9ec54a5982436c02 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
'use strict';

const { Collection } = require('@discordjs/collection');
const Action = require('./Action');
const Events = require('../../util/Events');

class MessageDeleteBulkAction extends Action {
  handle(data) {
    const client = this.client;
    const channel = client.channels.cache.get(data.channel_id);

    if (channel) {
      if (!channel.isTextBased()) return {};

      if (channel.isThread()) channel.messageCount -= data.ids.length;

      const ids = data.ids;
      const messages = new Collection();
      for (const id of ids) {
        const message = this.getMessage(
          {
            id,
            guild_id: data.guild_id,
          },
          channel,
          false,
        );
        if (message) {
          messages.set(message.id, message);
          channel.messages.cache.delete(id);
        }
      }

      /**
       * Emitted whenever messages are deleted in bulk.
       * @event Client#messageDeleteBulk
       * @param {Collection<Snowflake, Message>} messages The deleted messages, mapped by their id
       * @param {GuildTextBasedChannel} channel The channel that the messages were deleted in
       */
      if (messages.size > 0) client.emit(Events.MessageBulkDelete, messages, channel);
      return { messages };
    }
    return {};
  }
}

module.exports = MessageDeleteBulkAction;