zappyzep/backend/src/utils/getMissingPermissions.ts

21 lines
699 B
TypeScript
Raw Normal View History

import { Permissions } from "discord.js";
/**
2021-05-31 03:30:55 +02:00
* @param resolvedPermissions A Permission object from e.g. GuildChannel#permissionsFor() or Member#permission
* @param requiredPermissions Bitmask of required permissions
* @return Bitmask of missing permissions
*/
2021-05-31 03:30:55 +02:00
export function getMissingPermissions(
resolvedPermissions: Permissions | Readonly<Permissions>,
requiredPermissions: number | bigint,
): bigint {
2021-06-30 04:56:56 +02:00
const allowedPermissions = resolvedPermissions;
const nRequiredPermissions = requiredPermissions;
2021-06-30 04:56:56 +02:00
if (Boolean(allowedPermissions.bitfield & Permissions.FLAGS.ADMINISTRATOR)) {
return BigInt(0);
}
2021-06-30 04:56:56 +02:00
return BigInt(nRequiredPermissions) & ~allowedPermissions.bitfield;
}