3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-05-14 22:05:01 +00:00
zeppelin/backend/src/utils/getMissingPermissions.ts
2023-05-08 22:58:51 +03:00

20 lines
722 B
TypeScript

import { PermissionsBitField } from "discord.js";
/**
* @param resolvedPermissions A Permission object from e.g. GuildChannel#permissionsFor() or Member#permission
* @param requiredPermissions Bitmask of required permissions
* @return Bitmask of missing permissions
*/
export function getMissingPermissions(
resolvedPermissions: PermissionsBitField | Readonly<PermissionsBitField>,
requiredPermissions: number | bigint,
): bigint {
const allowedPermissions = resolvedPermissions;
const nRequiredPermissions = requiredPermissions;
if (allowedPermissions.bitfield & PermissionsBitField.Flags.Administrator) {
return BigInt(0);
}
return BigInt(nRequiredPermissions) & ~allowedPermissions.bitfield;
}