3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-03-18 23:09:59 +00:00
zeppelin/backend/src/utils/getPermissionNames.ts

23 lines
763 B
TypeScript
Raw Normal View History

2021-05-31 03:30:55 +02:00
import { Permissions } from "discord.js";
const permissionNumberToName: Map<bigint, string> = new Map();
const ignoredPermissionConstants = ["all", "allGuild", "allText", "allVoice"];
2021-05-31 03:30:55 +02:00
for (const key in Permissions.FLAGS) {
if (ignoredPermissionConstants.includes(key)) continue;
2021-07-29 13:00:32 +01:00
permissionNumberToName.set(BigInt(Permissions.FLAGS[key]), key);
}
/**
* @param permissions Bitmask of permissions to get the names for
*/
export function getPermissionNames(permissions: number | bigint): string[] {
const permissionNames: string[] = [];
for (const [permissionNumber, permissionName] of permissionNumberToName.entries()) {
if (BigInt(permissions) & permissionNumber) {
permissionNames.push(permissionName);
}
}
return permissionNames;
}