blob: 98d82c35fc9f71124c0a1e768f2309f4d05a44ea [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",
20 "nucleusSettingsUpdated",
21 "ticketUpdate"
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
pineafan3a02ea32022-08-11 21:35:04 +010026const toHexInteger = (permissions: string[], array?: string[]) => {
pineafan32767212022-03-14 21:27:39 +000027 if (!array) {
28 array = logs;
29 }
30 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
pineafan3a02ea32022-08-11 21:35:04 +010038const toHexArray = (permissionsHex: string, array?: string[]) => {
pineafan32767212022-03-14 21:27:39 +000039 if (!array) {
40 array = logs;
41 }
pineafan63fc5e22022-08-04 22:04:10 +010042 const permissions = [];
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)) {
pineafan32767212022-03-14 21:27:39 +000049 permissions.push(array[index]);
50 }
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 };