parent
e03580f12a
commit
de73e06a5b
@ -0,0 +1,38 @@ |
||||
const Discord = require('discord.js'); |
||||
|
||||
module.exports = { |
||||
name: "delete", |
||||
aliases: ['del', 'purge', 'clear'], |
||||
meta: { |
||||
category: 'Moderation', |
||||
description: "Delete messages from a channel, and optionally from a specific user or users.", |
||||
syntax: '`clear <messageCount> [@user] [@user] [etc]`', |
||||
extra: null, |
||||
guildOnly: true |
||||
}, |
||||
help: new Discord.MessageEmbed() |
||||
.setTitle("Help -> Mass Message Deletion") |
||||
.setDescription("Delete recently-sent messages from a channel. You can also delete them from a specific user or users, if you wish.") |
||||
.addField("Permissions", "You must have Manage Messages permissions in this server in order to purge messages.") |
||||
.addField("Mentions", "If you mention multiple people, I will delete messages from those users until the total sum of messages reaches the specified message count. In other words, if you mention three people and specify to delete 6 messages, I will the last 6 messages from all of them, not the last 6 messages for each user.") |
||||
.addField("Notice", "Purges with mentions might purge less than the specified count. This only really affects large deletion counts in channels where several other people than just the members mentioned talked. A fix is currently being made.") |
||||
.addField("Syntax", "`clear <messageCount> [@user] [@user] [etc]`"), |
||||
async execute(message, msg, args, cmd, prefix, mention, client) { |
||||
if (!message.member.permissions.has("MANAGE_MESSAGES")) {return message.channel.send("You don't have permissions to manage messages in this server!");} |
||||
if (!args.length) {return message.channel.send(`Syntax: \`${prefix}clear <messageCount> [@user] [@user] [etc]\``);} |
||||
if (!message.guild.me.permissions.has("MANAGE_MESSAGES")) {return message.channel.send("I don't have permissions to manage messages in this server.");} |
||||
if (!message.channel.permissionsFor(client.user.id).has("MANAGE_MESSAGES")) {return message.channel.send("I don't have permissions to manage messages in this channel.");} |
||||
if (isNaN(Number(args[0])) || Number(args[0]) > 100 || Number(args[0]) < 1) {return message.channel.send("You must specify a positive number less than 100 of messages to delete.");} |
||||
await message.delete(); |
||||
let count = Number(args[0]); |
||||
while (true) { |
||||
let messages = await message.channel.messages.fetch({limit: message.mentions.users.size ? 50 : count}, false, true).catch(() => message.channel.send("There was an error trying to grab the messages to delete. Sorry!")); |
||||
let toDelete = []; |
||||
if (message.mentions.users.size) {Array.from(message.mentions.users.values()).forEach(u => Array.from(messages.values()).forEach(m => {if (m.author.id === u.id && toDelete.length < count) {toDelete.push(m.id);}}));} |
||||
else {toDelete = Array.from(messages.keys());} |
||||
await message.channel.bulkDelete(toDelete, true); |
||||
if (toDelete.length >= count) {break;} |
||||
} |
||||
return true; |
||||
} |
||||
}; |
Loading…
Reference in new issue