diff --git a/commands/moderation/ban.js b/commands/moderation/ban.js index bf572b66..9df22803 100644 --- a/commands/moderation/ban.js +++ b/commands/moderation/ban.js @@ -20,7 +20,13 @@ module.exports = class BanCommand extends commando.Command { }, { key: 'reason', prompt: 'What do you want to set the reason as?', - type: 'string' + type: 'string', + validate: reason => { + if (reason.length < 141) { + return true; + } + return "Please keep your reason under 140 characters."; + } }] }); } @@ -37,15 +43,20 @@ module.exports = class BanCommand extends commando.Command { let member = args.member; let reason = args.reason; if (!message.guild.member(member).bannable) return message.say(":x: Error! This member cannot be banned! Perhaps they have a higher role than me?"); - let banUser = await message.guild.member(member).ban(); - let okHandMsg = await message.say(":ok_hand:"); - const embed = new Discord.RichEmbed() - .setAuthor(`${message.author.username}#${message.author.discriminator}`, message.author.avatarURL) - .setColor(0xFF0000) - .setFooter('XiaoBot Moderation', this.client.user.avatarURL) - .setTimestamp() - .setDescription(`**Member:** ${banUser.user.username}#${banUser.user.discriminator} (${member.id})\n**Action:** Ban\n**Reason:** ${reason}`); - let modLogMsg = await message.guild.channels.find('name', 'mod_logs').sendEmbed(embed); - return [banUser, okHandMsg, modLogMsg]; + try { + let banUser = await message.guild.member(member).ban(); + let okHandMsg = await message.say(":ok_hand:"); + const embed = new Discord.RichEmbed() + .setAuthor(`${message.author.username}#${message.author.discriminator}`, message.author.avatarURL) + .setColor(0xFF0000) + .setFooter('XiaoBot Moderation', this.client.user.avatarURL) + .setTimestamp() + .setDescription(`**Member:** ${banUser.user.username}#${banUser.user.discriminator} (${member.id})\n**Action:** Ban\n**Reason:** ${reason}`); + let modLogMsg = await message.guild.channels.find('name', 'mod_logs').sendEmbed(embed); + return [banUser, okHandMsg, modLogMsg]; + } + catch (err) { + return message.say(':x: Error! Something went wrong!'); + } } }; diff --git a/commands/moderation/kick.js b/commands/moderation/kick.js index cb5dde42..27ee836d 100644 --- a/commands/moderation/kick.js +++ b/commands/moderation/kick.js @@ -17,7 +17,13 @@ module.exports = class KickCommand extends commando.Command { }, { key: 'reason', prompt: 'What do you want to set the reason as?', - type: 'string' + type: 'string', + validate: reason => { + if (reason.length < 141) { + return true; + } + return "Please keep your reason under 140 characters."; + } }] }); } @@ -34,15 +40,20 @@ module.exports = class KickCommand extends commando.Command { let member = args.member; let reason = args.reason; if (!message.guild.member(member).bannable) return message.say(":x: Error! This member cannot be kicked! Perhaps they have a higher role than me?"); - let kickUser = await message.guild.member(member).kick(); - let okHandMsg = await message.say(":ok_hand:"); - const embed = new Discord.RichEmbed() - .setAuthor(`${message.author.username}#${message.author.discriminator}`, message.author.avatarURL) - .setColor(0xFFA500) - .setFooter('XiaoBot Moderation', this.client.user.avatarURL) - .setTimestamp() - .setDescription(`**Member:** ${kickUser.user.username}#${kickUser.user.discriminator} (${member.id})\n**Action:** Kick\n**Reason:** ${reason}`); - let modLogMsg = await message.guild.channels.find('name', 'mod_logs').sendEmbed(embed); - return [kickUser, okHandMsg, modLogMsg]; + try { + let kickUser = await message.guild.member(member).kick(); + let okHandMsg = await message.say(":ok_hand:"); + const embed = new Discord.RichEmbed() + .setAuthor(`${message.author.username}#${message.author.discriminator}`, message.author.avatarURL) + .setColor(0xFFA500) + .setFooter('XiaoBot Moderation', this.client.user.avatarURL) + .setTimestamp() + .setDescription(`**Member:** ${kickUser.user.username}#${kickUser.user.discriminator} (${member.id})\n**Action:** Kick\n**Reason:** ${reason}`); + let modLogMsg = await message.guild.channels.find('name', 'mod_logs').sendEmbed(embed); + return [kickUser, okHandMsg, modLogMsg]; + } + catch (err) { + return message.say(':x: Error! Something went wrong!'); + } } }; diff --git a/commands/moderation/unban.js b/commands/moderation/unban.js new file mode 100644 index 00000000..ad419ba8 --- /dev/null +++ b/commands/moderation/unban.js @@ -0,0 +1,69 @@ +const commando = require('discord.js-commando'); +const Discord = require('discord.js'); + +module.exports = class UnbanCommand extends commando.Command { + constructor(Client) { + super(Client, { + name: 'unban', + aliases: [ + 'unbanne' + ], + group: 'moderation', + memberName: 'unban', + description: 'Unbans a user. (;unban @User not being a jerk.)', + examples: [";unban @User not being a jerk."], + guildOnly: true, + args: [{ + key: 'memberID', + prompt: 'What member do you want to unban? Please enter the ID of the user.', + type: 'integer', + validate: userID => { + if (userID.length === 18) { + return true; + } + return "Invalid ID. Please enter the user you wish to unban's ID."; + } + }, { + key: 'reason', + prompt: 'What do you want to set the reason as?', + type: 'string', + validate: reason => { + if (reason.length < 141) { + return true; + } + return "Please keep your reason under 140 characters."; + } + }] + }); + } + hasPermission(msg) { + return msg.member.hasPermission('BAN_MEMBERS'); + } + + async run(message, args) { + if (message.channel.type !== 'dm') { + if (!message.channel.permissionsFor(this.client.user).hasPermission(['SEND_MESSAGES', 'READ_MESSAGES', 'EMBED_LINKS', 'BAN_MEMBERS'])) return; + } + console.log(`[Command] ${message.content}`); + if (!message.guild.channels.exists("name", "mod_logs")) return message.say(":x: Error! Could not find the mod_logs channel! Please create it!"); + let memberID = args.memberID; + let reason = args.reason; + let bans = await message.guild.fetchBans(); + if (!bans.has(memberID)) return message.say(':x: Error! Could not find this user in the bans.'); + try { + let unbanUser = await bans.get(memberID).unban(); + let okHandMsg = await message.say(":ok_hand:"); + const embed = new Discord.RichEmbed() + .setAuthor(`${message.author.username}#${message.author.discriminator}`, message.author.avatarURL) + .setColor(0xFF0000) + .setFooter('XiaoBot Moderation', this.client.user.avatarURL) + .setTimestamp() + .setDescription(`**Member:** ${unbanUser.username}#${unbanUser.discriminator} (${unbanUser.id})\n**Action:** Ban\n**Reason:** ${reason}`); + let modLogMsg = await message.guild.channels.find('name', 'mod_logs').sendEmbed(embed); + return [unbanUser, okHandMsg, modLogMsg]; + } + catch (err) { + return message.say(':x: Error! Something went wrong!'); + } + } +}; diff --git a/commands/moderation/warn.js b/commands/moderation/warn.js index 81336f1c..daa1372d 100644 --- a/commands/moderation/warn.js +++ b/commands/moderation/warn.js @@ -17,7 +17,13 @@ module.exports = class WarnCommand extends commando.Command { }, { key: 'reason', prompt: 'What do you want to set the reason as?', - type: 'string' + type: 'string', + validate: reason => { + if (reason.length < 141) { + return true; + } + return "Please keep your reason under 140 characters."; + } }] }); } @@ -33,14 +39,19 @@ module.exports = class WarnCommand extends commando.Command { let userToWarn = args.member; let reason = args.reason; if (!message.guild.channels.exists("name", "mod_logs")) return message.say(":x: Error! Could not find the mod_logs channel! Please create it!"); - let okHandMsg = await message.say(":ok_hand:"); - const embed = new Discord.RichEmbed() - .setAuthor(`${message.author.username}#${message.author.discriminator}`, message.author.avatarURL) - .setColor(0xFFFF00) - .setFooter('XiaoBot Moderation', this.client.user.avatarURL) - .setTimestamp() - .setDescription(`**Member:** ${userToWarn.user.username}#${userToWarn.user.discriminator} (${userToWarn.id})\n**Action:** Warn\n**Reason:** ${reason}`); - let modLogMsg = await message.guild.channels.find('name', 'mod_logs').sendEmbed(embed); - return [okHandMsg, modLogMsg]; + try { + let okHandMsg = await message.say(":ok_hand:"); + const embed = new Discord.RichEmbed() + .setAuthor(`${message.author.username}#${message.author.discriminator}`, message.author.avatarURL) + .setColor(0xFFFF00) + .setFooter('XiaoBot Moderation', this.client.user.avatarURL) + .setTimestamp() + .setDescription(`**Member:** ${userToWarn.user.username}#${userToWarn.user.discriminator} (${userToWarn.id})\n**Action:** Warn\n**Reason:** ${reason}`); + let modLogMsg = await message.guild.channels.find('name', 'mod_logs').sendEmbed(embed); + return [okHandMsg, modLogMsg]; + } + catch (err) { + return message.say(':x: Error! Something went wrong!'); + } } };