diff --git a/commands/moderation/ban.js b/commands/moderation/ban.js index 9e6cd365..018cb0db 100644 --- a/commands/moderation/ban.js +++ b/commands/moderation/ban.js @@ -31,7 +31,7 @@ module.exports = class BanCommand extends Command { } hasPermission(msg) { - return msg.member.permissions.has('BAN_MEMBERS') || msg.member.roles.exists('name', 'Server Staff'); + return msg.member.permissions.has('BAN_MEMBERS') || msg.member.roles.exists('name', msg.guild.settings.get('staffRole')); } async run(message, args) { diff --git a/commands/moderation/kick.js b/commands/moderation/kick.js index 3053128d..a9ed2d28 100644 --- a/commands/moderation/kick.js +++ b/commands/moderation/kick.js @@ -28,7 +28,7 @@ module.exports = class KickCommand extends Command { } hasPermission(msg) { - return msg.member.permissions.has('KICK_MEMBERS') || msg.member.roles.exists('name', 'Server Staff'); + return msg.member.permissions.has('KICK_MEMBERS') || msg.member.roles.exists('name', msg.guild.settings.get('staffRole')); } async run(message, args) { diff --git a/commands/moderation/prune.js b/commands/moderation/prune.js index 4efd4766..b0122b91 100644 --- a/commands/moderation/prune.js +++ b/commands/moderation/prune.js @@ -26,7 +26,7 @@ module.exports = class PruneCommand extends Command { } hasPermission(msg) { - return msg.member.permissions.has('MANAGE_MESSAGES') || msg.member.roles.exists('name', 'Server Staff'); + return msg.member.permissions.has('MANAGE_MESSAGES') || msg.member.roles.exists('name', msg.guild.settings.get('staffRole')); } async run(message, args) { diff --git a/commands/moderation/softban.js b/commands/moderation/softban.js index 8319aefb..147a4d8d 100644 --- a/commands/moderation/softban.js +++ b/commands/moderation/softban.js @@ -28,7 +28,7 @@ module.exports = class SoftbanCommand extends Command { } hasPermission(msg) { - return msg.member.permissions.has('KICK_MEMBERS') || msg.member.roles.exists('name', 'Server Staff'); + return msg.member.permissions.has('KICK_MEMBERS') || msg.member.roles.exists('name', msg.guild.settings.get('staffRole')); } async run(message, args) { diff --git a/commands/moderation/unban.js b/commands/moderation/unban.js index 74ccf36c..86c6b38e 100644 --- a/commands/moderation/unban.js +++ b/commands/moderation/unban.js @@ -35,7 +35,7 @@ module.exports = class UnbanCommand extends Command { } hasPermission(msg) { - return msg.member.permissions.has('BAN_MEMBERS') || msg.member.roles.exists('name', 'Server Staff'); + return msg.member.permissions.has('BAN_MEMBERS') || msg.member.roles.exists('name', msg.guild.settings.get('staffRole')); } async run(message, args) { diff --git a/commands/moderation/warn.js b/commands/moderation/warn.js index c359af0e..7e28e9b3 100644 --- a/commands/moderation/warn.js +++ b/commands/moderation/warn.js @@ -27,7 +27,7 @@ module.exports = class WarnCommand extends Command { } hasPermission(msg) { - return msg.member.permissions.has('KICK_MEMBERS') || msg.member.roles.exists('name', 'Server Staff'); + return msg.member.permissions.has('KICK_MEMBERS') || msg.member.roles.exists('name', msg.guild.settings.get('staffRole')); } async run(message, args) { diff --git a/commands/util/clearsetting.js b/commands/util/clearsetting.js new file mode 100644 index 00000000..d554c9b1 --- /dev/null +++ b/commands/util/clearsetting.js @@ -0,0 +1,33 @@ +const { Command } = require('discord.js-commando'); + +module.exports = class ClearSettingCommand extends Command { + constructor(client) { + super(client, { + name: 'clearsetting', + group: 'util', + memberName: 'clearsetting', + description: 'Removes a custom-set Mod Channel, Member Channel, or Staff Role.', + guildOnly: true, + args: [{ + key: 'setting', + prompt: 'What setting do you want to clear? `modLog`, `memberLog`, or `staffRole`?', + type: 'string', + validate: setting => { + if (['modLog', 'memberLog', 'staffRole'].includes(setting)) + return true; + return 'Please enter either `modLog`, `memberLog`, or `staffRole`.'; + } + }] + }); + } + + hasPermission(msg) { + return msg.member.permissions.has('ADMINISTRATOR'); + } + + run(message, args) { + const { setting } = args; + message.guild.settings.remove(setting); + return message.say(`${setting} has been removed from your guild settings.`); + } +}; diff --git a/commands/util/staffrole.js b/commands/util/staffrole.js new file mode 100644 index 00000000..6d5dd6c2 --- /dev/null +++ b/commands/util/staffrole.js @@ -0,0 +1,28 @@ +const { Command } = require('discord.js-commando'); + +module.exports = class StaffRoleCommand extends Command { + constructor(client) { + super(client, { + name: 'staffrole', + group: 'util', + memberName: 'staffrole', + description: 'Sets the role that can use Mod Commands without perms.', + guildOnly: true, + args: [{ + key: 'role', + prompt: 'What role should be staff?', + type: 'role' + }] + }); + } + + hasPermission(msg) { + return msg.member.permissions.has('ADMINISTRATOR'); + } + + run(message, args) { + const { role } = args; + message.guild.settings.set('staffRole', role.name); + return message.say(`Server Staff role set to ${role.name}.`); + } +};