From 9edf3c28be59eff5d81a01bd620fd70dd82e334a Mon Sep 17 00:00:00 2001
From: loicbersier <loic.bersier1@gmail.com>
Date: Sat, 22 Feb 2020 23:13:12 +0100
Subject: [PATCH] reset function

---
 commands/admin/tag.js | 40 +++++++++++++++++++++++++++++++++-------
 1 file changed, 33 insertions(+), 7 deletions(-)

diff --git a/commands/admin/tag.js b/commands/admin/tag.js
index c843b09..145d138 100644
--- a/commands/admin/tag.js
+++ b/commands/admin/tag.js
@@ -11,15 +11,17 @@ class TagCommand extends Command {
 				{
 					id: 'trigger',
 					type: 'string',
-					prompt: {
-						start: 'What word or sentence should trigger it?',
-					}
 				},
 				{
 					id: 'remove',
 					match: 'flag',
 					flag: '--remove'
 				},
+				{
+					id: 'reset',
+					match: 'flag',
+					flag: '--reset'
+				},
 				{
 					id: 'response',
 					type: 'string',
@@ -28,7 +30,7 @@ class TagCommand extends Command {
 			],
 			channelRestriction: 'guild',
 			description: {
-				content: 'Create custom autoresponse (--remove to delete a tag)  [Click here to see the complete list of "tag"](https://cdn.discordapp.com/attachments/502198809355354133/561043193949585418/unknown.png) (Need "" if the trigger contains spaces)',
+				content: 'Create custom autoresponse (--remove to delete a tag, --reset to delete EVERY tag on the server)  [Click here to see the complete list of "tag"](https://cdn.discordapp.com/attachments/502198809355354133/561043193949585418/unknown.png) (Need "" if the trigger contains spaces)',
 				usage: '[trigger] [response]',
 				examples: ['"do you know da wea" Fuck off dead meme', 'hello Hello [author], how are you today?', 'hello --remove']
 			}
@@ -39,6 +41,29 @@ class TagCommand extends Command {
 		const tag = await Tag.findOne({where: {trigger: args.trigger, serverID: message.guild.id}});
 		const ownerID = this.client.ownerID;
 
+		if (args.reset) {
+			if (message.member.hasPermission('ADMINISTRATOR')) {
+				message.channel.send('Are you sure you want to delete EVERY tag? There is no way to recover them. y/n');
+
+				const filter = m =>  m.content && m.author.id == message.author.id;
+				return message.channel.awaitMessages(filter, {time: 5000, max: 1, errors: ['time'] })
+					.then(async messages => {
+						let messageContent = messages.map(messages => messages.content.toLowerCase());
+						if (messageContent == 'y' || messageContent == 'yes') {
+							Tag.destroy({where: {serverID: message.guild.id}});
+							return message.channel.send('Tags have been reset.');
+						} else {
+							return message.channel.send('Not reseting.');
+						}
+					})
+					.catch(err => {
+						console.error(err);
+						return message.channel.send('Took too long to answer. didin\'t update anything.');
+					});
+			} else {
+				return message.channel.send('Only person with the `ADMINISTRATOR` rank can reset tags.');
+			}
+		}
 
 		if (args.remove) {
 			if (tag) {
@@ -53,9 +78,10 @@ class TagCommand extends Command {
 			}
 		}
 
-		if (!args.response) {
-			return message.channel.send('Please provide the response for that tag');
-		}
+
+		if (!args.trigger) return message.channel.send('Please provide a trigger in order to create a tag.');
+
+		if (!args.response) return message.channel.send('Please provide the response for that tag');
 
 		if (!tag) {
 			const body = {trigger: args.trigger, response: args.response, ownerID: message.author.id, serverID: message.guild.id};