Home > Blockchain >  bulkDelete just author messages?
bulkDelete just author messages?

Time:12-11

Is there any way to use "bulk Delete" just to delete messages from the author of the command?

I tried this but the time to delete is very slow.

const Discord = require("discord.js")

module.exports = {
    name: "cl", // Coloque o nome do comando do arquivo
    aliases: ["clean", "c"], // Coloque sinônimos aqui

    run: async(client, message, args) => {

        await message.channel.messages.fetch({
            limit: 100
          }).then((msgCollection) => {
            msgCollection.forEach((msg) => {
              if(msg.author.id == message.author.id) {
                msg.delete()
              }
            }
          )});
        }
}

CodePudding user response:

The simplest option is to fetch all available messages, filter, then bulk delete.

const allMessages = await message.channel.messages.fetch({limit: 100});
const authorMessages = allMessages.filter(m => m.author.id === message.author.id);
await message.channel.bulkDelete(authorMessages);

CodePudding user response:

This should work:

message.channel.messages
  .fetch({
  limit: 100
  })
  .then((messages) => {
    const authormsgs = messages.filter((msg) => message.author.id)
    message.channel.bulkDelete(authormsgs)
  })

CodePudding user response:

const user = message.mentions.users.first();
let amount = !!parseInt(message.content.split(' ')[1]) ? parseInt(message.content.split(' ')[1]) : parseInt(message.content.split(' ')[2])
amount = Math.floor(amount   1);
if (!amount) return message.reply('You need to specify an amount.');
if (!amount && !user) return message.reply('You need to specify a user and an amount.');

messages.channel.messages.fetch({limit: 100,}).then((messages) => {
    if (user) {
        const filterBy = user ? user.id : Client.user.id;
        messages = messages.filter(m => m.author.id === filterBy).array().slice(0, amount);
    } else {
        messages = amount;
    }
    message.channel.bulkDelete(messages).catch(error => console.log(error.stack));
});
  • Related