blob: 61e0cb2e0e1910b30774b98d98377b01c79b28d7 [file] [log] [blame]
pineafan32767212022-03-14 21:27:39 +00001const logs = [
2 "channelUpdate",
pineafan32767212022-03-14 21:27:39 +00003 "emojiUpdate",
pineafanda6e5342022-07-03 10:03:16 +01004 "stickerUpdate",
pineafan32767212022-03-14 21:27:39 +00005 "guildUpdate",
6 "guildMemberUpdate",
7 "guildMemberPunish",
pineafan32767212022-03-14 21:27:39 +00008 "guildRoleUpdate",
9 "guildInviteUpdate",
10 "messageUpdate",
11 "messageDelete",
12 "messageDeleteBulk",
13 "messageReactionUpdate",
pineafan32767212022-03-14 21:27:39 +000014 "messageMassPing",
pineafanda6e5342022-07-03 10:03:16 +010015 "messageAnnounce",
pineafan32767212022-03-14 21:27:39 +000016 "threadUpdate",
pineafanda6e5342022-07-03 10:03:16 +010017 "webhookUpdate",
pineafan412beec2022-06-29 21:46:26 +010018 "guildMemberVerify",
pineafan73a7c4a2022-07-24 10:38:04 +010019 "autoModeratorDeleted",
Skyler Greyda16adf2023-03-05 10:22:12 +000020 "ticketUpdate"
TheCodedProf01cba762023-02-18 15:55:05 -050021 // "nucleusSettingsUpdated"
pineafan63fc5e22022-08-04 22:04:10 +010022];
pineafan32767212022-03-14 21:27:39 +000023
Skyler Grey11236ba2022-08-08 21:13:33 +010024const tickets = ["support", "report", "question", "issue", "suggestion", "other"];
pineafan32767212022-03-14 21:27:39 +000025
PineaFan0d06edc2023-01-17 22:10:31 +000026const toHexInteger = (permissions: string[], array?: string[]): string => {
Skyler Greyda16adf2023-03-05 10:22:12 +000027 if (!array) {
28 array = logs;
29 }
pineafan32767212022-03-14 21:27:39 +000030 let int = 0n;
31
Skyler Grey75ea9172022-08-06 10:22:23 +010032 for (const perm of permissions) {
pineafan32767212022-03-14 21:27:39 +000033 int += BigInt(2 ** array.indexOf(perm));
34 }
pineafan63fc5e22022-08-04 22:04:10 +010035 return int.toString(16);
36};
pineafan32767212022-03-14 21:27:39 +000037
PineaFan0d06edc2023-01-17 22:10:31 +000038const toHexArray = (permissionsHex: string, array?: string[]): string[] => {
pineafan32767212022-03-14 21:27:39 +000039 if (!array) {
40 array = logs;
41 }
PineaFan0d06edc2023-01-17 22:10:31 +000042 const permissions: string[] = [];
Skyler Grey75ea9172022-08-06 10:22:23 +010043 const int = BigInt("0x" + permissionsHex)
44 .toString(2)
45 .split("")
46 .reverse();
pineafan63fc5e22022-08-04 22:04:10 +010047 for (const index in int) {
pineafan3a02ea32022-08-11 21:35:04 +010048 if (int[index] === "1" && array.length > parseInt(index)) {
PineaFan0d06edc2023-01-17 22:10:31 +000049 permissions.push(array[index]!);
pineafan32767212022-03-14 21:27:39 +000050 }
51 }
52 return permissions;
pineafan63fc5e22022-08-04 22:04:10 +010053};
pineafan32767212022-03-14 21:27:39 +000054
Skyler Grey75ea9172022-08-06 10:22:23 +010055export { toHexInteger, toHexArray, tickets, logs };