2021-08-14 16:30:40 +03:00
|
|
|
import { Permissions, PermissionString } from "discord.js";
|
2020-08-07 00:39:52 +03:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @param resolvedPermissions A Permission object from e.g. GuildChannel#permissionsOf() or Member#permission
|
|
|
|
* @param requiredPermissions Bitmask of required permissions
|
|
|
|
*/
|
2021-05-31 21:12:24 +02:00
|
|
|
export function hasDiscordPermissions(
|
2021-06-01 02:05:55 +02:00
|
|
|
resolvedPermissions: Permissions | Readonly<Permissions> | null,
|
2021-05-31 21:12:24 +02:00
|
|
|
requiredPermissions: number | bigint,
|
|
|
|
) {
|
2021-08-14 16:30:40 +03:00
|
|
|
if (resolvedPermissions == null) {
|
|
|
|
return false;
|
|
|
|
}
|
2020-08-07 00:39:52 +03:00
|
|
|
|
2021-08-14 16:30:40 +03:00
|
|
|
if (resolvedPermissions.has(Permissions.FLAGS.ADMINISTRATOR)) {
|
2020-08-07 00:39:52 +03:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2021-08-14 16:30:40 +03:00
|
|
|
const nRequiredPermissions = BigInt(requiredPermissions);
|
|
|
|
return Boolean((resolvedPermissions?.bitfield! & nRequiredPermissions) === nRequiredPermissions);
|
2020-08-07 00:39:52 +03:00
|
|
|
}
|