diff --git a/commands/moderation/prune.js b/commands/moderation/prune.js new file mode 100644 index 00000000..1f0151f3 --- /dev/null +++ b/commands/moderation/prune.js @@ -0,0 +1,53 @@ +const commando = require('discord.js-commando'); + +module.exports = class PruneCommand extends commando.Command { + constructor(Client) { + super(Client, { + name: 'prune', + aliases: [ + 'clean', + 'cleanchannel', + 'prunemessages', + 'cleanmessages', + 'clearmessages', + 'bulkdelete' + ], + group: 'moderation', + memberName: 'prune', + description: 'Deletes a defined number of messages from the current channel, up to 99. (;prune 45)', + examples: [";prune 45"], + guildOnly: true, + args: [{ + key: 'count', + prompt: 'How many messages do you want to delete? Limit of up to 99.', + type: 'integer', + validate: count => { + if (count > 99 || count < 1) { + return true; + } + return "Too many or two few messages to delete. Limit 1-99."; + } + }] + }); + } + hasPermission(msg) { + return msg.member.hasPermission('MANAGE_MESSAGES'); + } + + async run(message, args) { + if (message.channel.type !== 'dm') { + if (!message.channel.permissionsFor(this.client.user).hasPermission(['READ_MESSAGES', 'MANAGE_MESSAGES'])) return; + } + console.log(`[Command] ${message.content}`); + let count = args.count + 1; + try { + let messages = await message.channel.fetchMessages({ + limit: count + }); + message.channel.bulkDelete(messages, true); + } + catch (err) { + return message.say(':x: Error! Something went wrong!'); + } + } +};