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));
});