blob: 9bdef3b30a61da821ddcb7207a8557a6f5547d25 [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
24const tickets = [
25 "support",
26 "report",
27 "question",
28 "issue",
29 "suggestion",
30 "other"
pineafan63fc5e22022-08-04 22:04:10 +010031];
pineafan32767212022-03-14 21:27:39 +000032
33const toHexInteger = (permissions, array?) => {
34 if (!array) {
35 array = logs;
36 }
37 let int = 0n;
38
pineafan63fc5e22022-08-04 22:04:10 +010039 for(const perm of permissions) {
pineafan32767212022-03-14 21:27:39 +000040 int += BigInt(2 ** array.indexOf(perm));
41 }
pineafan63fc5e22022-08-04 22:04:10 +010042 return int.toString(16);
43};
pineafan32767212022-03-14 21:27:39 +000044
45const toHexArray = (permissionsHex, array?) => {
46 if (!array) {
47 array = logs;
48 }
pineafan63fc5e22022-08-04 22:04:10 +010049 const permissions = [];
50 const int = (BigInt("0x" + permissionsHex)).toString(2).split("").reverse();
51 for (const index in int) {
pineafane23c4ec2022-07-27 21:56:27 +010052 if (int[index] === "1" && array.length > index) {
pineafan32767212022-03-14 21:27:39 +000053 permissions.push(array[index]);
54 }
55 }
56 return permissions;
pineafan63fc5e22022-08-04 22:04:10 +010057};
pineafan32767212022-03-14 21:27:39 +000058
59export {
pineafane625d782022-05-09 18:04:32 +010060 toHexInteger,
61 toHexArray,
pineafan32767212022-03-14 21:27:39 +000062 tickets,
63 logs
pineafan63fc5e22022-08-04 22:04:10 +010064};