Add command permission checks
Level 0: Every user - Public commands Level 1: Guild owners or members with respective admin role - Elevated guild commands Level 2: Global admins - Every command including levels below
This commit is contained in:
@@ -5,5 +5,11 @@ module.exports = {
|
||||
getBotProperty: async function(property) {
|
||||
let bot = await Bot.findOne();
|
||||
return property ? bot[property] : bot;
|
||||
},
|
||||
|
||||
setBotProperty: async function(property, value) {
|
||||
let bot = await Bot.findOne();
|
||||
bot[property] = value;
|
||||
await bot.save();
|
||||
}
|
||||
}
|
||||
|
||||
23
util/guilds.js
Normal file
23
util/guilds.js
Normal file
@@ -0,0 +1,23 @@
|
||||
const { Guild } = require("../models");
|
||||
|
||||
module.exports = {
|
||||
name: "GuildUtils",
|
||||
getProperty: async function(guildId, property) {
|
||||
let guild = await Guild.findOne({
|
||||
where: {
|
||||
guildId: guildId
|
||||
}
|
||||
});
|
||||
return property ? guild[property] : guild;
|
||||
},
|
||||
|
||||
setProperty: async function(guildId, property, value) {
|
||||
let guild = await Guild.findOne({
|
||||
where: {
|
||||
guildId: guildId
|
||||
}
|
||||
});
|
||||
guild[property] = value;
|
||||
await guild.save();
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
const { User } = require("../models");
|
||||
const { User, Guild } = require("../models");
|
||||
const GeneralUtils = require("./general");
|
||||
|
||||
module.exports = {
|
||||
name: "UserUtils",
|
||||
@@ -65,5 +66,37 @@ module.exports = {
|
||||
let newCooldown = new Date(new Date().getTime() + cooldown);
|
||||
user[`next${cooldownType[0].toUpperCase() + cooldownType.slice(1)}`] = newCooldown;
|
||||
await user.save();
|
||||
},
|
||||
|
||||
getPermissionLevel: async function(user) {
|
||||
/* THIS FUNCTION EXPECTS A DISCORD USER INSTANCE!
|
||||
* Returns the permission level of the user
|
||||
* 0 - no permissions
|
||||
* 1 - guild permissions
|
||||
* 2 - admin permissions
|
||||
*/
|
||||
let guild = await Guild.findOne({
|
||||
where: {
|
||||
guildId: user.guild.id
|
||||
}
|
||||
});
|
||||
|
||||
//Global Admin
|
||||
let adminIDs = await GeneralUtils.getBotProperty("adminIDs");
|
||||
if (adminIDs.includes(user.id)) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
//Guild Admin if role is present
|
||||
if(user._roles.includes(String(guild.adminRoleId))) {
|
||||
return 1;
|
||||
}
|
||||
//or if user is owner
|
||||
if(user.guild.ownerId === user.id) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Regular User
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user