2021-06-06 23:51:32 +02:00
|
|
|
import { Permissions } from "discord.js";
|
2020-08-07 01:21:31 +03:00
|
|
|
|
|
|
|
/**
|
2021-05-31 03:30:55 +02:00
|
|
|
* @param resolvedPermissions A Permission object from e.g. GuildChannel#permissionsFor() or Member#permission
|
2020-08-07 01:21:31 +03:00
|
|
|
* @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;
|
2020-08-07 01:21:31 +03:00
|
|
|
|
2021-06-30 04:56:56 +02:00
|
|
|
if (Boolean(allowedPermissions.bitfield & Permissions.FLAGS.ADMINISTRATOR)) {
|
2020-08-07 01:21:31 +03:00
|
|
|
return BigInt(0);
|
|
|
|
}
|
|
|
|
|
2021-06-30 04:56:56 +02:00
|
|
|
return BigInt(nRequiredPermissions) & ~allowedPermissions.bitfield;
|
2020-08-07 01:21:31 +03:00
|
|
|
}
|