Custom Permission

This commit is contained in:
Flam3rboy 2021-02-22 17:34:14 +01:00
parent dae8843ccb
commit 2f7230e5d5

View File

@ -41,6 +41,8 @@ type PermissionString =
| "MANAGE_WEBHOOKS" | "MANAGE_WEBHOOKS"
| "MANAGE_EMOJIS"; | "MANAGE_EMOJIS";
const CUSTOM_PERMISSION_OFFSET = 1n << 48n; // 16 free custom permission bits, and 16 for discord to add new ones
export class Permissions extends BitField { export class Permissions extends BitField {
static FLAGS = { static FLAGS = {
CREATE_INSTANT_INVITE: 1n << 0n, CREATE_INSTANT_INVITE: 1n << 0n,
@ -74,6 +76,8 @@ export class Permissions extends BitField {
MANAGE_ROLES: 1n << 28n, MANAGE_ROLES: 1n << 28n,
MANAGE_WEBHOOKS: 1n << 29n, MANAGE_WEBHOOKS: 1n << 29n,
MANAGE_EMOJIS: 1n << 30n, MANAGE_EMOJIS: 1n << 30n,
// CUSTOM PERMISSIONS
// CUSTOM_PERMISSION: 1n << 0n + CUSTOM_PERMISSION_OFFSET
}; };
any(permission: PermissionResolvable, checkAdmin = true) { any(permission: PermissionResolvable, checkAdmin = true) {
@ -140,7 +144,7 @@ export async function getPermission(user_id: bigint, guild_id: bigint, channel_i
var roles = await RoleModel.find({ guild_id, id: { $in: member.roles } }).exec(); var roles = await RoleModel.find({ guild_id, id: { $in: member.roles } }).exec();
let channel: ChannelDocument | null = null; let channel: ChannelDocument | null = null;
if (channel_id) { if (channel_id) {
channel = await ChannelModel.findOne({ id: channel_id }, "permission_overwrites"); channel = await ChannelModel.findOne({ id: channel_id }, "permission_overwrites").exec();
} }
var permission = Permissions.finalPermission({ var permission = Permissions.finalPermission({