diff --git a/commands/admin/moderation.js b/commands/admin/moderation.js new file mode 100644 index 0000000..3564a57 --- /dev/null +++ b/commands/admin/moderation.js @@ -0,0 +1,137 @@ +//@ts-check +const { log, SEVCODES } = require('../log.js'); +const { checkRole } = require('./verify.js'); + + +function kick(guild, user) { + guild.members.kick(user); +} + + +async function toggle_ban(guild, message, args, ban, reason) { + var user = args[0]; + let i = 0; + while (user.indexOf('#') == -1) { + user += args[i]; + i++ + } + + if (ban) { + guild.members.ban(user); + } else { + return new Promise((resolve, reject) => { + message.guild.bans.fetch().then((users) => { + const userObj = users.filter((u) => { + return (`${u.user.username}#${u.user.discriminator}` == user); + }).first(); + + if (userObj && userObj.user) { + guild.members.unban(userObj.user.id, reason).then(() => { + resolve(userObj.user); + }); + } else { + reject("This user is not in the server!"); + } + }) + }); + + // //Check if the user is banned or not + // message.guild.invites.fetch().then((invites) => { + // const u = guild.members.cache.get(id); + // u.send(`You have been unbanned from ${guild.name}, you can rejoin using the following link!\nhttps://discord.gg/${invites.first().code}`); + // }); + } +} + + +function toggle_mute(bot, guild, command, message, user, reason, mute) { + const mutedRole = guild.roles.cache.find((role) => role.name.toLowerCase() === 'muted'); + const guser = guild.members.cache.get(user.id); + // if there is no `Muted` role, send an error + if (!mutedRole) { return message.channel.send('There is no "muted" role on this server. Please create one then try again'); } + + if (mute) { + if (guser.roles.cache.get(mutedRole.id) == undefined) { + guser.roles.add(mutedRole); + log(bot, message, command, user, reason, SEVCODES.low); + } else { message.reply("This user is already muted!"); } + } else { + if (guser.roles.cache.get(mutedRole.id) != undefined) { + guser.roles.remove(mutedRole); + log(bot, message, command, user, reason, SEVCODES.none); + } else { message.reply("This user is not muted!"); } + } + + /* + NOTE: use the following function for a "time out" type thing? + setTimeout(() => { + target.roles.remove(mutedRole); // remove the role + },