From 18e28bdde40950a79b52f4904b48421eb7ec671d Mon Sep 17 00:00:00 2001 From: WubzyGD Date: Thu, 10 Dec 2020 23:53:16 -0700 Subject: [PATCH] Warnings fixed and added n?clearwarn --- commands/clearwarnings.js | 62 +++++++++++++++++++++++++++++++++++++++ commands/warn.js | 25 +++++++++------- 2 files changed, 76 insertions(+), 11 deletions(-) create mode 100644 commands/clearwarnings.js diff --git a/commands/clearwarnings.js b/commands/clearwarnings.js new file mode 100644 index 0000000..d50dbb0 --- /dev/null +++ b/commands/clearwarnings.js @@ -0,0 +1,62 @@ +const Discord = require('discord.js'); + +const Mod = require('../models/mod'); + +module.exports = { + name: "clearwarnings", + aliases: ['clearwarn', 'cw', 'warnclear', 'wc', 'clearwarning'], + meta: { + category: "", + perms: "", + staff: false, + vip: "", + serverPerms: [], + writtenBy: "", + serverOnly: false + }, + tags: [], + help: new Discord.MessageEmbed() + .setTitle("Help -> Warn Clearing") + .setDescription("Clears the warnigns of a user") + .addField("Syntax", "`clearwarnings <@user|userID>`") + .addField("Notice", "You must be a server administrator in order to use this command."), + async execute(message, msg, args, cmd, prefix, mention, client) { + if (!args.length) {return message.channel.send(`Syntax: \`${prefix}clearwarnings <@user|userID>\``);} + if (!message.guild) {return message.channel.send("This is a server-only command.");} + if (!message.member.permissions.has("ADMINISTRATOR")) {return message.reply("You must be a server administrator to use this command.");} + + let user = message.mentions.members.first() && args[0].match(/^<@(?:!)(?:\d+)>$/) ? message.mentions.members.first() : message.guild.members.cache.has(args[0]) ? message.guild.members.cache.get(args[0]) : null; + if (!user) {return message.channel.send("Either you didn't mention a user, or I can't find that user!");} + + if (user.id === client.user.id) {return message.reply("don't worry about clearing any warnings from me... you can't give me warnings in the first place");} + if (client.users.cache.get(user.id).bot) {return message.reply("it's not like a bot would have any warnings in the first place...");} + + user = user ? user : message.member; + let mh = await Mod.findOne({gid: message.guild.id}); + if (!mh || !Object.keys(mh.warnings).length) {return message.reply("There are no warnings available in this server.");} + + if (!Object.keys(mh.warnings).includes(user.id) || !mh.warnings[user.id].length) {return message.reply(`${user.id === message.author.id ? 'You have' : 'That user has'} never been warned in this server.`);} + + let mhcases = mh.cases; + let moddedcases = []; + let cwc = 0; var wc = 0; + let warning; for (warning of mh.warnings[user.id]) { + if (mhcases[`${warning - 1}`].status !== "Cleared") { + let tcase = mhcases[`${warning - 1}`]; + tcase.status = "Cleared"; + tcase.history.push(`${new Date().toISOString()} - ${message.author.username} - Cleared the warning.`); + moddedcases.push(`${warning - 1}`); + wc++; + if (!tcase.moderators.includes(message.author.id)) {tcase.moderators.push(message.author.id);} + mhcases[`${warning - 1}`] = tcase; + } else {cwc++;} + } + if (cwc === mh.warnings[user.id].length) {return message.reply("That user has no uncleared warnings.");} + + if (moddedcases.length) {let c; for (c of moddedcases) {mh.markModified(`cases.${c}.history`);}} + + mh.cases = mhcases; + mh.save(); + return message.reply(`Cleared ${wc} warnings from ${user.displayName}.`); + } +}; \ No newline at end of file diff --git a/commands/warn.js b/commands/warn.js index f70e18c..3b76ece 100644 --- a/commands/warn.js +++ b/commands/warn.js @@ -1,4 +1,5 @@ const Discord = require('discord.js'); + const Mod = require('../models/mod'); const {TagFilter} = require('../util/tagfilter'); @@ -52,23 +53,27 @@ module.exports = { else if (['clear', 'e', 'empty'].includes(args[0].toLowerCase())) { user = user ? user : message.member; let mh = await Mod.findOne({gid: message.guild.id}); - if (!mh || !mh.warnings.size) {return message.reply("There are no warnings available in this server.");} + if (!mh || !Object.keys(mh.warnings).length) {return message.reply("There are no warnings available in this server.");} - if (!mh.warnings.has(user.id) || !mh.warnings.get(user.id).length) {return message.reply(`${user.id === message.author.id ? 'You have' : 'That user has'} never been warned in this server.`);} + if (!Object.keys(mh.warnings).includes(user.id) || !mh.warnings[user.id].length) {return message.reply(`${user.id === message.author.id ? 'You have' : 'That user has'} never been warned in this server.`);} let mhcases = mh.cases; + let moddedcases = []; let cwc = 0; var wc = 0; - let warning; for (warning of mh.warnings.get(user.id)) { - if (mhcases.get(`${warning}`).status !== "Cleared") { - let tcase = mhcases.get(`${warning}`); + let warning; for (warning of mh.warnings[user.id]) { + if (mhcases[`${warning - 1}`].status !== "Cleared") { + let tcase = mhcases[`${warning - 1}`]; tcase.status = "Cleared"; tcase.history.push(`${new Date().toISOString()} - ${message.author.username} - Cleared the warning.`); + moddedcases.push(`${warning - 1}`); wc++; if (!tcase.moderators.includes(message.author.id)) {tcase.moderators.push(message.author.id);} - mhcases.set(`${warning}`, tcase); + mhcases[`${warning - 1}`] = tcase; } else {cwc++;} } - if (cwc === mh.warnings.get(user.id).length) {return message.reply("That user has no uncleared warnings.");} + if (cwc === mh.warnings[user.id].length) {return message.reply("That user has no uncleared warnings.");} + + if (moddedcases.length) {let c; for (c of moddedcases) {mh.markModified(`cases.${c}.history`);}} mh.cases = mhcases; mh.save(); @@ -110,19 +115,17 @@ module.exports = { let mhwarnings = mh.warnings; let mhwarningsk = Object.keys(mhwarnings); - console.log(mhwarnings); - if (mhwarningsk.includes(user.id)) {let tw = mhwarnings[user.id]; tw.push(mhcases.length); mhwarnings[user.id] = tw;} else {mhwarnings[user.id] = [mhcases.length];} - console.log(mhwarnings); - mh.warnings = mhwarnings; mh.warnings[user.id] = mhwarnings[user.id]; mh.cases = mhcases; if (!options.silent) {message.channel.send(`Case ${mh.cases.length} - Member has been warned. Reason: \`${reason}\``);} if (!options.silent && !options.nodm) {client.users.cache.get(user.id).send(`\`${message.author.username}\` has warned you in \`${message.guild.name}\`. Reason: **${reason}**`);} + + mh.markModified(`warnings.${user.id}`); mh.save(); return null;