parent
22ad8f13b0
commit
c07de1ae8e
@ -0,0 +1,72 @@ |
|||||||
|
const Discord = require('discord.js'); |
||||||
|
|
||||||
|
const {Tag} = require("../util/tag"); |
||||||
|
const {TagFilter} = require("../util/tagfilter"); |
||||||
|
|
||||||
|
module.exports = { |
||||||
|
name: "softban", |
||||||
|
aliases: ['falseban', 'sfb'], |
||||||
|
meta: { |
||||||
|
category: 'Moderation', |
||||||
|
description: "Bans a user from the server, deletes their messages, then unbans them", |
||||||
|
syntax: '`softban <@user|userID> [reason]`', |
||||||
|
extra: null, |
||||||
|
guildOnly: true |
||||||
|
}, |
||||||
|
help: new Discord.MessageEmbed() |
||||||
|
.setTitle("Help -> SoftBan") |
||||||
|
.setDescription("Bans a user from the server and deletes their messages, then unbans them. This is a great way to kick a member from the server while getting the message delete effect of a ban.") |
||||||
|
.addField("Syntax", "`softban <@user|userID> [reason]`"), |
||||||
|
async execute(message, msg, args, cmd, prefix, mention, client) { |
||||||
|
if (!args.length) {return message.channel.send(`Syntax: \`${prefix}softban <@user|userID> [reason]\``);} |
||||||
|
|
||||||
|
if (!message.member.permissions.has("BAN_MEMBERS")) {return message.channel.send("You don't have permissions to do that!");} |
||||||
|
if (!message.guild.me.permissions.has("BAN_MEMBERS")) {return message.channel.send("I don't have permissions to ban 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 softban, or provide their ID.");} |
||||||
|
if (user.roles.highest.position >= message.member.roles.highest.position) {return message.channel.send("You don't have permissions to softban 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 ban that member as their highest role is above mine! (Or the same as mine, too)");} |
||||||
|
if (!user.bannable) {return message.channel.send("Hmm, it seems like I can't ban that member. This is probably a permissions issue. Or maybe they were already banned? In that case, just use `unban`");} |
||||||
|
|
||||||
|
let options = new TagFilter([ |
||||||
|
new Tag(['r', 'reason'], 'reason', 'append'), |
||||||
|
new Tag(['n', 'notes'], 'notes', 'append'), |
||||||
|
new Tag(['d', 'days', 'm', 'messages'], 'days', 'append') |
||||||
|
]).test(args.join(" ")); |
||||||
|
let reason; let days; |
||||||
|
if (options.reason && options.reason.length) {reason = options.reason;} |
||||||
|
if (options.days && options.days.length) { |
||||||
|
if (isNaN(Number(options.days)) || Number(options.days) < 1 || Number(options.days) > 7 || options.days.includes('.')) {return message.channel.send("The `days` option must be a whole number between 1 and 7.");} |
||||||
|
days = Number(options.days); |
||||||
|
} else {days = 7;} |
||||||
|
if (options.notes && options.notes.length > 250) {return message.channel.send("I mean I get it, they pissed you off, but do you really need to give me that much info on why you're softbanning them? I can't keep track of all that!");} |
||||||
|
else {if (args[1] && !options.days /*&& (!options.notes || !options.notes.length)*/ && (!options.reason || !options.reason.length)) {args.shift(); reason = args.join(" ");}} |
||||||
|
if (reason && reason.length > 250) {return message.channel.send("I mean I get it, they pissed you off, but do you really need to give me that much info on why you're softbanning them? I can't keep track of all that!");} |
||||||
|
|
||||||
|
return user.ban({reason: reason, days: days}) |
||||||
|
.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: "Banned", |
||||||
|
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} - Banned ${client.users.cache.get(user.id).username}`], |
||||||
|
issued: new Date().toUTCString() |
||||||
|
}); |
||||||
|
|
||||||
|
mh.cases = mhcases; |
||||||
|
mh.save();*/ |
||||||
|
|
||||||
|
return message.guild.members.unban(user.id, reason) |
||||||
|
.then(async () => {return message.channel.send("That user has been softbanned, and can now be re-invited to the server.");}) |
||||||
|
.catch(() => {return message.channel.send("Something went wrong while trying to unban that user! This means that the member has been banned, but not unbanned afterward, so you'll need to unban them using the `unban` command or by doing it manually. If the problem persists, contact my devs.");}); |
||||||
|
}) |
||||||
|
.catch(() => {return message.channel.send("Something went wrong while trying to ban that user! If the problem persists, contact my devs.");}); |
||||||
|
} |
||||||
|
}; |
@ -0,0 +1,33 @@ |
|||||||
|
const Discord = require('discord.js'); |
||||||
|
|
||||||
|
module.exports = { |
||||||
|
name: "unban", |
||||||
|
aliases: ['ub'], |
||||||
|
meta: { |
||||||
|
category: 'Moderation', |
||||||
|
description: "Unban a user from the server", |
||||||
|
syntax: '`unban <userID|@user>`', |
||||||
|
extra: null, |
||||||
|
guildOnly: true |
||||||
|
}, |
||||||
|
help: new Discord.MessageEmbed() |
||||||
|
.setTitle("Help -> Unban") |
||||||
|
.setDescription("Unbans a user from the server, allowing them to join again if they have an invite.") |
||||||
|
.addField("Syntax", "`unban <userID|@user>`"), |
||||||
|
async execute(message, msg, args, cmd, prefix, mention, client) { |
||||||
|
if (!args.length) {return message.channel.send(`Syntax: \`${prefix}unban <userID|@user>\``);} |
||||||
|
|
||||||
|
if (!message.member.permissions.has("BAN_MEMBERS")) {return message.channel.send("You don't have permissions to do that!");} |
||||||
|
if (!message.guild.me.permissions.has("BAN_MEMBERS")) {return message.channel.send("I don't have permissions to unban members in your server.");} |
||||||
|
let user = client.users.cache.get(args[0]) || message.mentions.users.first(); |
||||||
|
|
||||||
|
if (!user) { |
||||||
|
user = await client.users.fetch(args[0]); |
||||||
|
if (!user) {return message.channel.send("You must mention a user to unban, or provide their ID.");} |
||||||
|
} |
||||||
|
|
||||||
|
return message.guild.members.unban(user.id) |
||||||
|
.then(async () => {return message.channel.send("I've unbanned that user!");}) |
||||||
|
.catch(() => {return message.channel.send("Something went wrong while trying to unban that user! If the problem persists, contact my devs.");}); |
||||||
|
} |
||||||
|
}; |
Loading…
Reference in new issue