diff options
Diffstat (limited to 'dist/util/Permissions.js')
-rw-r--r-- | dist/util/Permissions.js | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/dist/util/Permissions.js b/dist/util/Permissions.js index 0686e273..a62e8a8b 100644 --- a/dist/util/Permissions.js +++ b/dist/util/Permissions.js @@ -1,8 +1,11 @@ "use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getPermission = exports.Permissions = void 0; // https://github.com/discordjs/discord.js/blob/master/src/util/Permissions.js // Apache License Version 2.0 Copyright 2015 - 2021 Amish Shah -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Permissions = void 0; +const Member_1 = require("../models/Member"); +const Channel_1 = require("../models/Channel"); +const Role_1 = require("../models/Role"); const BitField_1 = require("./BitField"); class Permissions extends BitField_1.BitField { any(permission, checkAdmin = true) { @@ -81,4 +84,28 @@ Permissions.FLAGS = { MANAGE_WEBHOOKS: 1n << 29n, MANAGE_EMOJIS: 1n << 30n, }; +async function getPermission(user_id, guild_id, channel_id) { + var member = await Member_1.MemberModel.findOne({ guild_id, id: user_id }, "roles").exec(); + if (!member) + throw new Error("Member not found"); + var roles = await Role_1.RoleModel.find({ guild_id, id: { $in: member.roles } }).exec(); + let channel = null; + if (channel_id) { + channel = await Channel_1.ChannelModel.findOne({ id: channel_id }, "permission_overwrites"); + } + var permission = Permissions.finalPermission({ + user: { + id: user_id, + roles: member.roles, + }, + guild: { + roles: roles, + }, + channel: { + overwrites: channel?.permission_overwrites, + }, + }); + return permission; +} +exports.getPermission = getPermission; //# sourceMappingURL=Permissions.js.map \ No newline at end of file |