diff --git a/.idea/Natsuki.iml b/.idea/Natsuki.iml new file mode 100644 index 0000000..24643cc --- /dev/null +++ b/.idea/Natsuki.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..c4ee72c --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/commands/staffrole.js b/commands/staffrole.js new file mode 100644 index 0000000..7fd0acc --- /dev/null +++ b/commands/staffrole.js @@ -0,0 +1,48 @@ +const Discord = require('discord.js'); +const GuildSettings = require('../models/guild'); + +module.exports = { + name: "staffrole", + aliases: ['sr', 'setstaffrole'], + help: "Set your server's staff role, which allows users with that role to modify my settings in this server. You must be an admin in the server to change this setting.", + async execute(message, msg, args, cmd, prefix, mention, client) { + if (!message.guild) {return message.reply("This is a guild-only command!");} + if (!args.length) {return message.channel.send(`Syntax: \`${prefix}staffrole <@role|roleID|clear|view>\``);} + if (!message.member.permissions.has("ADMINISTRATOR")) {return message.reply("You must be an admin in this server in order to change this setting!");} + + let tguild = await GuildSettings.findOne({gid: message.guild.id}) + ? await GuildSettings.findOne({gid: message.guild.id}) + : new GuildSettings({gid: message.guild.id}); + + if (['view', 'v'].includes(args[0].trim().toLocaleLowerCase())) {return message.reply( + tguild.staffrole.length + ? message.guild.roles.cache.has(tguild.staffrole) + ? `\`People with the ${message.guild.roles.cache.get(tguild.staffrole).name}\` role can edit my setting here.` + : `I have a role stored for this server, but it doesn't seem to exist anymore, so only admins can edit my settings right now.` + : 'Only admins may edit settings in this server.' + );} + + let role = !['c', 'clear', 'n', 'none'].includes(args[0].trim().toLowerCase()) ? message.mentions.roles.size ? message.mentions.roles.first() : message.guild.roles.cache.has(args[0]) ? message.guild.roles.cache.get(args[0]) : null : 'c'; + + if (!role) {return message.reply("I couldn't find that role!");} + if (role === "c") { + tguild.staffrole = ''; + tguild.save(); + return message.reply("Got it, only admins can edit my settings in this server."); + } else { + tguild.staffrole = role.id; + tguild.save(); + let upm = message.reply("Sure thing!"); + await require('../util/wait')(1750); + return upm.edit(new Discord.MessageEmbed() + .setAuthor('Staff role updated!', message.author.avatarURL()) + .setDescription(`<@${tguild.staffrole}> can now edit my settings in this server.`) + .addField('Auditing Admin', message.member.displayName, true) + .addField('Role-Holders', `${message.guild.members.cache.filter(m => m.roles.cache.has(tguild.staffrole) && !client.users.cache.get(m.id).bot)}+ members have this role`) + .setColor('c375f0') + .setFooter('Natsuki', client.user.avatarURL()) + .setTimestamp() + ); + } + } +}; \ No newline at end of file