parent
eead4ca8bb
commit
4b1f962982
@ -0,0 +1,66 @@ |
||||
const Discord = require('discord.js'); |
||||
|
||||
const Mod = require('../models/mod'); |
||||
|
||||
const {Tag} = require('../util/tag'); |
||||
const {TagFilter} = require('../util/tagfilter'); |
||||
|
||||
module.exports = { |
||||
name: "kick", |
||||
aliases: ['kicc', 'k'], |
||||
meta: { |
||||
category: 'Moderation', |
||||
description: "Kicks a user from the server!", |
||||
syntax: '`kick <@user|userID> [reason]`', |
||||
extra: null, |
||||
guildOnly: true |
||||
}, |
||||
help: new Discord.MessageEmbed() |
||||
.setTitle("Help -> Kick") |
||||
.setDescription("Kicks a user from the server!") |
||||
.addField("Syntax", "`kick <@user|userID> [reason]`") |
||||
.addField("Notice", "This command requires you to have `kick` permissions in the server."), |
||||
async execute(message, msg, args, cmd, prefix, mention, client) { |
||||
if (!args.length) {return message.channel.send(`Syntax: \`${prefix}kick <@user|userID> [reason]\``);} |
||||
if (!message.member.permissions.has("KICK_MEMBERS")) {return message.channel.send("You don't have permissions to do that!");} |
||||
if (!message.guild.me.permissions.has("KICK_MEMBERS")) {return message.channel.send("I don't have permissions to kick members in your server.");} |
||||
let user = message.guild.members.cache.get(args[0]) || message.mentions.members.first(); |
||||
if (!user) {return message.channel.send("You must mention a user to kick, or provide their ID.");} |
||||
if (user.roles.highest.position >= message.member.roles.highest.position) {return message.channel.send("You don't have permissions to kick that member as they are above you in the roles list.");} |
||||
if (user.roles.highest.position >= message.guild.me.roles.highest.position) {return message.channel.send("I can't kick that member as their highest role is above mine! (Or the same as mine, too)");} |
||||
if (!user.kickable) {return message.channel.send("For some reason, I can't kick that user!");} |
||||
let options = new TagFilter([ |
||||
new Tag(['r', 'reason'], 'reason', 'append'), |
||||
new Tag(['n', 'notes'], 'notes', 'append') |
||||
]).test(args.join(" ")); |
||||
let reason; |
||||
if (options.notes && options.notes.length) { |
||||
if (options.reason && options.reason.length) {reason = options.reason;} |
||||
if (options.notes.length > 250) {return message.channel.send("Hey, listen, let's not write an essay on why you're kicking that member!");} |
||||
} |
||||
else {if (args[1]) {args.shift(); reason = args.join(" ");}} |
||||
if (reason && reason.length > 250) {return message.channel.send("Hey, listen, let's not write an essay on why you're kicking that member!");} |
||||
return user.kick(reason) |
||||
.then(async () => { |
||||
let mh = await Mod.findOne({gid: message.guild.id}) || new Mod({gid: message.guild.id}); |
||||
let mhcases = mh.cases; |
||||
|
||||
mhcases.push({ |
||||
members: [user.id], |
||||
punishment: "Kicked", |
||||
reason: reason ? reason : "", |
||||
status: "Closed", |
||||
moderators: [message.author.id], |
||||
notes: options.notes, |
||||
history: [`${new Date().toISOString()} - ${message.author.username} - Created case`, `${new Date().toISOString()} - ${message.author.username} - Kicked ${client.users.cache.get(user.id).username}`], |
||||
issued: new Date().toUTCString() |
||||
}); |
||||
|
||||
mh.cases = mhcases; |
||||
mh.save(); |
||||
|
||||
return message.channel.send("I got em outta here!"); |
||||
}) |
||||
.catch(() => {return message.channel.send("Something went wrong while trying to kick that user! If the problem persists, contact my devs.");}); |
||||
} |
||||
}; |
Loading…
Reference in new issue