summaryrefslogtreecommitdiff
path: root/src/commands/utility/clear.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/commands/utility/clear.js')
-rw-r--r--src/commands/utility/clear.js72
1 files changed, 72 insertions, 0 deletions
diff --git a/src/commands/utility/clear.js b/src/commands/utility/clear.js
new file mode 100644
index 0000000..6871cca
--- /dev/null
+++ b/src/commands/utility/clear.js
@@ -0,0 +1,72 @@
+const { Command } = require('discord.js-commando');
+const emoji = require('emoji-random');
+
+module.exports = class ClearUtility extends Command {
+ constructor(client) {
+ super(client, {
+ name: 'clear',
+ aliases: ['delete', 'del', 'c', 'd'],
+ group: 'utility',
+ memberName: 'clear',
+ description: 'Clears a specified amount of messages.',
+ guildOnly: true,
+ args: [
+ {
+ key: 'deleteAmount',
+ prompt: 'How many messages would you like to delete?',
+ type: 'integer'
+ }
+ ],
+ examples: [
+ 'uwu!clear 23',
+ 'uwu!delete 75',
+ 'uwu!del 32',
+ 'uwu!c 45',
+ 'uwu!d 84'
+ ],
+ userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY', 'MANAGE_MESSAGES'],
+ clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY', 'MANAGE_MESSAGES']
+ });
+ }
+ async run(msg, { deleteAmount }) {
+ if (msg.member.hasPermission('MANAGE_MESSAGES')) {
+ if (!deleteAmount) {
+ msg.reply('You haven\'t specified an amount of messages which should be deleted. ' + emoji.random()).then(deleteNotificationMessage => {
+ deleteNotificationMessage.delete({ timeout: 1000 });
+ });
+ } else if (isNaN(deleteAmount)) {
+ msg.reply('The amount parameter isn\'t a number. ' + emoji.random()).then(deleteNotificationMessage => {
+ deleteNotificationMessage.delete({ timeout: 1000 });
+ });
+ } else if (deleteAmount > 100) {
+ msg.reply('You can\'t delete more than 100 messages at once. ' + emoji.random()).then(deleteNotificationMessage => {
+ deleteNotificationMessage.delete({ timeout: 1000 });
+ });
+ } else if (deleteAmount < 1) {
+ msg.reply('You have to delete at least 1 message. ' + emoji.random()).then(deleteNotificationMessage => {
+ deleteNotificationMessage.delete({ timeout: 1000 });
+ });
+ }
+ /*else if (msg.createdTimestamp > 1209600) {
+ msg.reply('due to discord rules, bots can only bulk delete messages that are under 14 days old :(')
+ } */
+ else {
+ var clearAmount = deleteAmount + 1;
+ // It took me so long to figure out why this was not really working. It would delete but an insane amount at a time.
+ // I realized that because it was getting parsed as a string, it would just add 1 to it so if I tried to delete 1
+ // message, it would delete 11 lol. Fixed by parsing as integer THEN adding one. 02:30 2020/04/03/2020
+
+ await msg.channel.messages.fetch({
+ limit: clearAmount
+ }).then(messages => { // I am on v11 discord.js
+ msg.channel.bulkDelete(messages);
+ });
+ msg.reply('It\'s been deleted ~uwu ' + emoji.random()).then(deleteNotificationMessage => {
+ deleteNotificationMessage.delete({ timeout: 1000 });
+ });
+ }
+ } else {
+ msg.reply('Insufficent perms. ' + emoji.random());
+ }
+ }
+}; \ No newline at end of file