@mostfeatured/dbi 0.0.55 → 0.0.57

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist/DBI.d.ts +156 -156
  2. package/dist/DBI.js +332 -332
  3. package/dist/Events.d.ts +53 -53
  4. package/dist/Events.js +58 -58
  5. package/dist/data/eventMap.json +234 -234
  6. package/dist/index.d.ts +6 -6
  7. package/dist/index.js +16 -16
  8. package/dist/methods/hookEventListeners.d.ts +3 -3
  9. package/dist/methods/hookEventListeners.js +87 -87
  10. package/dist/methods/hookInteractionListeners.d.ts +3 -3
  11. package/dist/methods/hookInteractionListeners.d.ts.map +1 -1
  12. package/dist/methods/hookInteractionListeners.js +125 -118
  13. package/dist/methods/hookInteractionListeners.js.map +1 -1
  14. package/dist/methods/publishInteractions.d.ts +7 -7
  15. package/dist/methods/publishInteractions.js +238 -238
  16. package/dist/types/Button.d.ts +18 -18
  17. package/dist/types/Button.js +31 -31
  18. package/dist/types/ButtonBuilder.d.ts +29 -29
  19. package/dist/types/ButtonBuilder.js +42 -42
  20. package/dist/types/ChatInput/ChatInput.d.ts +15 -15
  21. package/dist/types/ChatInput/ChatInput.js +20 -20
  22. package/dist/types/ChatInput/ChatInputOptions.d.ts +162 -162
  23. package/dist/types/ChatInput/ChatInputOptions.js +161 -161
  24. package/dist/types/CustomEvent.d.ts +13 -13
  25. package/dist/types/CustomEvent.js +19 -19
  26. package/dist/types/Event.d.ts +263 -263
  27. package/dist/types/Event.js +22 -22
  28. package/dist/types/Interaction.d.ts +47 -47
  29. package/dist/types/Interaction.js +24 -24
  30. package/dist/types/InteractionLocale.d.ts +25 -25
  31. package/dist/types/InteractionLocale.js +14 -14
  32. package/dist/types/Locale.d.ts +21 -21
  33. package/dist/types/Locale.js +38 -38
  34. package/dist/types/MessageContextMenu.d.ts +14 -14
  35. package/dist/types/MessageContextMenu.js +18 -18
  36. package/dist/types/Modal.d.ts +22 -22
  37. package/dist/types/Modal.js +29 -29
  38. package/dist/types/ModalBuilder.d.ts +30 -30
  39. package/dist/types/ModalBuilder.js +42 -42
  40. package/dist/types/SelectMenu.d.ts +18 -18
  41. package/dist/types/SelectMenu.d.ts.map +1 -1
  42. package/dist/types/SelectMenu.js +31 -31
  43. package/dist/types/SelectMenu.js.map +1 -1
  44. package/dist/types/SelectMenuBuilder.d.ts +27 -27
  45. package/dist/types/SelectMenuBuilder.d.ts.map +1 -1
  46. package/dist/types/SelectMenuBuilder.js +42 -42
  47. package/dist/types/SelectMenuBuilder.js.map +1 -1
  48. package/dist/types/UserContextMenu.d.ts +14 -14
  49. package/dist/types/UserContextMenu.js +18 -18
  50. package/dist/utils/MemoryStore.d.ts +8 -8
  51. package/dist/utils/MemoryStore.js +29 -29
  52. package/dist/utils/UtilTypes.d.ts +7 -7
  53. package/dist/utils/UtilTypes.js +2 -2
  54. package/dist/utils/customId.d.ts +7 -7
  55. package/dist/utils/customId.js +45 -45
  56. package/dist/utils/permissions.d.ts +2 -2
  57. package/dist/utils/permissions.js +8 -8
  58. package/dist/utils/recursiveImport.d.ts +4 -4
  59. package/dist/utils/recursiveImport.js +26 -26
  60. package/package.json +1 -1
  61. package/readme.md +5 -5
  62. package/src/methods/hookInteractionListeners.ts +7 -0
  63. package/src/types/SelectMenu.ts +2 -2
  64. package/src/types/SelectMenuBuilder.ts +3 -3
  65. package/test.js +0 -34
@@ -1,88 +1,88 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.hookEventListeners = void 0;
4
- const discord_js_1 = require("discord.js");
5
- function hookEventListeners(dbi) {
6
- async function handle(eventName, ...args) {
7
- if (!dbi.data.eventMap[eventName])
8
- return;
9
- let isDirect = args?.[0]?._DIRECT_ ?? false;
10
- if (isDirect)
11
- delete args[0]._DIRECT_;
12
- let ctxArgs = isDirect
13
- ? args[0]
14
- : dbi.data.eventMap[eventName].reduce((all, current, index) => {
15
- all[current] = args[index];
16
- return all;
17
- }, {});
18
- let other = {};
19
- let guildLocaleName = args.reduce((all, current) => {
20
- if (current?.guild?.id)
21
- return current?.guild?.preferredLocale?.split?.("-")?.[0];
22
- if (current instanceof discord_js_1.Guild)
23
- return current?.preferredLocale?.split?.("-")?.[0];
24
- return all;
25
- }, null);
26
- let guildLocale = guildLocaleName ? (dbi.data.locales.has(guildLocaleName) ? dbi.data.locales.get(guildLocaleName) : dbi.data.locales.get(dbi.config.defaults.locale)) : null;
27
- let locale = guildLocale ? { guild: guildLocale } : null;
28
- if (!await dbi.events.trigger("beforeEvent", { eventName, ...ctxArgs, other, locale }))
29
- return;
30
- let ordered = [];
31
- let unOrdered = [];
32
- for (let i = 0; i < dbi.data.events.size; i++) {
33
- const value = dbi.data.events.at(i);
34
- if (value.name == eventName) {
35
- if (value.ordered) {
36
- ordered.push(value);
37
- }
38
- else {
39
- unOrdered.push(value);
40
- }
41
- }
42
- }
43
- let arg = { eventName, ...ctxArgs, other, locale };
44
- for (let i = 0; i < unOrdered.length; i++) {
45
- const value = unOrdered[i];
46
- if (dbi.config.strict) {
47
- value.onExecute(arg);
48
- }
49
- else {
50
- try {
51
- value.onExecute(arg)?.catch(error => {
52
- dbi.events.trigger("eventError", Object.assign(arg, { error }));
53
- });
54
- }
55
- catch (error) {
56
- dbi.events.trigger("eventError", Object.assign(arg, { error }));
57
- }
58
- }
59
- }
60
- for (let i = 0; i < ordered.length; i++) {
61
- const value = ordered[i];
62
- if (dbi.config.strict) {
63
- await value.onExecute(arg);
64
- }
65
- else {
66
- try {
67
- await value.onExecute(arg)?.catch(error => {
68
- dbi.events.trigger("eventError", Object.assign(arg, { error }));
69
- });
70
- }
71
- catch (error) {
72
- await dbi.events.trigger("eventError", Object.assign(arg, { error }));
73
- }
74
- }
75
- }
76
- dbi.events.trigger("afterEvent", arg);
77
- }
78
- let originalEmit = dbi.client.emit;
79
- dbi.client.emit = function (eventName, ...args) {
80
- handle(eventName, ...args);
81
- return originalEmit.call(this, eventName, ...args);
82
- };
83
- return () => {
84
- dbi.client.emit = originalEmit;
85
- };
86
- }
87
- exports.hookEventListeners = hookEventListeners;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hookEventListeners = void 0;
4
+ const discord_js_1 = require("discord.js");
5
+ function hookEventListeners(dbi) {
6
+ async function handle(eventName, ...args) {
7
+ if (!dbi.data.eventMap[eventName])
8
+ return;
9
+ let isDirect = args?.[0]?._DIRECT_ ?? false;
10
+ if (isDirect)
11
+ delete args[0]._DIRECT_;
12
+ let ctxArgs = isDirect
13
+ ? args[0]
14
+ : dbi.data.eventMap[eventName].reduce((all, current, index) => {
15
+ all[current] = args[index];
16
+ return all;
17
+ }, {});
18
+ let other = {};
19
+ let guildLocaleName = args.reduce((all, current) => {
20
+ if (current?.guild?.id)
21
+ return current?.guild?.preferredLocale?.split?.("-")?.[0];
22
+ if (current instanceof discord_js_1.Guild)
23
+ return current?.preferredLocale?.split?.("-")?.[0];
24
+ return all;
25
+ }, null);
26
+ let guildLocale = guildLocaleName ? (dbi.data.locales.has(guildLocaleName) ? dbi.data.locales.get(guildLocaleName) : dbi.data.locales.get(dbi.config.defaults.locale)) : null;
27
+ let locale = guildLocale ? { guild: guildLocale } : null;
28
+ if (!await dbi.events.trigger("beforeEvent", { eventName, ...ctxArgs, other, locale }))
29
+ return;
30
+ let ordered = [];
31
+ let unOrdered = [];
32
+ for (let i = 0; i < dbi.data.events.size; i++) {
33
+ const value = dbi.data.events.at(i);
34
+ if (value.name == eventName) {
35
+ if (value.ordered) {
36
+ ordered.push(value);
37
+ }
38
+ else {
39
+ unOrdered.push(value);
40
+ }
41
+ }
42
+ }
43
+ let arg = { eventName, ...ctxArgs, other, locale };
44
+ for (let i = 0; i < unOrdered.length; i++) {
45
+ const value = unOrdered[i];
46
+ if (dbi.config.strict) {
47
+ value.onExecute(arg);
48
+ }
49
+ else {
50
+ try {
51
+ value.onExecute(arg)?.catch(error => {
52
+ dbi.events.trigger("eventError", Object.assign(arg, { error }));
53
+ });
54
+ }
55
+ catch (error) {
56
+ dbi.events.trigger("eventError", Object.assign(arg, { error }));
57
+ }
58
+ }
59
+ }
60
+ for (let i = 0; i < ordered.length; i++) {
61
+ const value = ordered[i];
62
+ if (dbi.config.strict) {
63
+ await value.onExecute(arg);
64
+ }
65
+ else {
66
+ try {
67
+ await value.onExecute(arg)?.catch(error => {
68
+ dbi.events.trigger("eventError", Object.assign(arg, { error }));
69
+ });
70
+ }
71
+ catch (error) {
72
+ await dbi.events.trigger("eventError", Object.assign(arg, { error }));
73
+ }
74
+ }
75
+ }
76
+ dbi.events.trigger("afterEvent", arg);
77
+ }
78
+ let originalEmit = dbi.client.emit;
79
+ dbi.client.emit = function (eventName, ...args) {
80
+ handle(eventName, ...args);
81
+ return originalEmit.call(this, eventName, ...args);
82
+ };
83
+ return () => {
84
+ dbi.client.emit = originalEmit;
85
+ };
86
+ }
87
+ exports.hookEventListeners = hookEventListeners;
88
88
  //# sourceMappingURL=hookEventListeners.js.map
@@ -1,4 +1,4 @@
1
- import { DBI } from "../DBI";
2
- import { NamespaceEnums } from "../../generated/namespaceData";
3
- export declare function hookInteractionListeners(dbi: DBI<NamespaceEnums>): () => any;
1
+ import { DBI } from "../DBI";
2
+ import { NamespaceEnums } from "../../generated/namespaceData";
3
+ export declare function hookInteractionListeners(dbi: DBI<NamespaceEnums>): () => any;
4
4
  //# sourceMappingURL=hookInteractionListeners.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hookInteractionListeners.d.ts","sourceRoot":"","sources":["../../src/methods/hookInteractionListeners.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAG7B,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,GAAG,CAAC,cAAc,CAAC,GAAG,MAAM,GAAG,CAsI5E"}
1
+ {"version":3,"file":"hookInteractionListeners.d.ts","sourceRoot":"","sources":["../../src/methods/hookInteractionListeners.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAG7B,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,GAAG,CAAC,cAAc,CAAC,GAAG,MAAM,GAAG,CA6I5E"}
@@ -1,119 +1,126 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.hookInteractionListeners = void 0;
4
- const customId_1 = require("../utils/customId");
5
- function hookInteractionListeners(dbi) {
6
- async function handle(inter) {
7
- const dbiInter = dbi.data.interactions.find(i => {
8
- let isUsesCustomId = (inter.isButton() || inter.isSelectMenu() || inter.isModalSubmit());
9
- let parsedId = isUsesCustomId ? (0, customId_1.parseCustomId)(dbi, inter.customId) : null;
10
- return ((i.type == "ChatInput"
11
- && (inter.isChatInputCommand() || inter.isAutocomplete())
12
- && i.name == [inter.commandName, inter.options.getSubcommandGroup(false), inter.options.getSubcommand(false)].filter(i => !!i).join(" "))
13
- ||
14
- ((i.type == "MessageContextMenu" || i.type == "UserContextMenu")
15
- && (inter.isMessageContextMenuCommand() || inter.isUserContextMenuCommand())
16
- && inter.commandName == i.name)
17
- ||
18
- ((i.type == "Button" || i.type == "SelectMenu" || i.type == "Modal")
19
- && isUsesCustomId
20
- && parsedId?.name == i.name));
21
- });
22
- if (!dbiInter)
23
- return;
24
- let userLocaleName = inter.locale.split("-")[0];
25
- let userLocale = dbi.data.locales.has(userLocaleName) ? dbi.data.locales.get(userLocaleName) : dbi.data.locales.get(dbi.config.defaults.locale);
26
- let guildLocaleName = inter.guild ? inter.guild.preferredLocale.split("-")[0] : null;
27
- let guildLocale = guildLocaleName ? (dbi.data.locales.has(guildLocaleName) ? dbi.data.locales.get(guildLocaleName) : dbi.data.locales.get(dbi.config.defaults.locale)) : null;
28
- let locale = {
29
- user: userLocale,
30
- guild: guildLocale
31
- };
32
- let data = (inter.isButton() || inter.isSelectMenu() || inter.isModalSubmit()) ? (0, customId_1.parseCustomId)(dbi, inter.customId).data : undefined;
33
- let other = {};
34
- if (!(await dbi.events.trigger("beforeInteraction", { dbi, interaction: inter, locale, setRateLimit, data, other })))
35
- return;
36
- if (inter.isAutocomplete()) {
37
- let focussed = inter.options.getFocused(true);
38
- let option = dbiInter.options.find(i => i.name == focussed.name);
39
- if (option?.onComplete) {
40
- let response = await option.onComplete({
41
- value: focussed.value,
42
- interaction: inter,
43
- dbiInteraction: dbiInter,
44
- dbi,
45
- data,
46
- other,
47
- locale
48
- });
49
- await inter.respond(response);
50
- }
51
- return;
52
- }
53
- let rateLimitKeyMap = {
54
- "User": `${dbiInter.name}_${inter.user.id}`,
55
- "Channel": `${dbiInter.name}_${inter.channelId || "Channel"}`,
56
- "Guild": `${dbiInter.name}_${inter.guildId || "Guild"}`,
57
- "Member": `${dbiInter.name}_${inter.user.id}_${inter.guildId || "Guild"}`,
58
- "Message": `${dbiInter.name}_${inter?.message?.id}`
59
- };
60
- for (const type in rateLimitKeyMap) {
61
- // @ts-ignore
62
- let key = `RateLimit["${rateLimitKeyMap[type]}"]`;
63
- let val = await dbi.config.store.get(key);
64
- if (val && Date.now() > val.at + val.duration) {
65
- await dbi.config.store.delete(key);
66
- val = null;
67
- }
68
- if (val) {
69
- dbi.events.trigger("interactionRateLimit", {
70
- dbi,
71
- interaction: inter,
72
- dbiInteraction: dbiInter,
73
- locale,
74
- data,
75
- rateLimit: {
76
- type: key,
77
- ...val
78
- }
79
- });
80
- return;
81
- }
82
- }
83
- async function setRateLimit(type, duration) {
84
- // @ts-ignore
85
- await dbi.config.store.set(`RateLimit["${rateLimitKeyMap[type]}"]`, { at: Date.now(), duration });
86
- }
87
- let arg = {
88
- dbi,
89
- // @ts-ignore
90
- interaction: inter,
91
- // @ts-ignore
92
- dbiInteraction: dbiInter,
93
- // @ts-ignore
94
- locale,
95
- setRateLimit,
96
- // @ts-ignore
97
- data,
98
- other
99
- };
100
- if (dbi.config.strict) {
101
- await dbiInter.onExecute(arg);
102
- }
103
- else {
104
- try {
105
- await dbiInter.onExecute(arg);
106
- }
107
- catch (error) {
108
- await dbi.events.trigger("interactionError", Object.assign(arg, { error }));
109
- }
110
- }
111
- dbi.events.trigger("afterInteraction", { dbi, interaction: inter, dbiInteraction: dbiInter, locale, setRateLimit, data, other });
112
- }
113
- dbi.client.on("interactionCreate", handle);
114
- return () => {
115
- dbi.client.off("interactionCreate", handle);
116
- };
117
- }
118
- exports.hookInteractionListeners = hookInteractionListeners;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hookInteractionListeners = void 0;
4
+ const customId_1 = require("../utils/customId");
5
+ function hookInteractionListeners(dbi) {
6
+ async function handle(inter) {
7
+ const dbiInter = dbi.data.interactions.find(i => {
8
+ let isUsesCustomId = (inter.isButton() || inter.isSelectMenu() || inter.isModalSubmit());
9
+ let parsedId = isUsesCustomId ? (0, customId_1.parseCustomId)(dbi, inter.customId) : null;
10
+ return ((i.type == "ChatInput"
11
+ && (inter.isChatInputCommand() || inter.isAutocomplete())
12
+ && i.name == [inter.commandName, inter.options.getSubcommandGroup(false), inter.options.getSubcommand(false)].filter(i => !!i).join(" "))
13
+ ||
14
+ ((i.type == "MessageContextMenu" || i.type == "UserContextMenu")
15
+ && (inter.isMessageContextMenuCommand() || inter.isUserContextMenuCommand())
16
+ && inter.commandName == i.name)
17
+ ||
18
+ ((i.type == "Button" || i.type == "SelectMenu" || i.type == "Modal")
19
+ && isUsesCustomId
20
+ && parsedId?.name == i.name));
21
+ });
22
+ if (!dbiInter)
23
+ return;
24
+ let userLocaleName = inter.locale.split("-")[0];
25
+ let userLocale = dbi.data.locales.has(userLocaleName) ? dbi.data.locales.get(userLocaleName) : dbi.data.locales.get(dbi.config.defaults.locale);
26
+ let guildLocaleName = inter.guild ? inter.guild.preferredLocale.split("-")[0] : null;
27
+ let guildLocale = guildLocaleName ? (dbi.data.locales.has(guildLocaleName) ? dbi.data.locales.get(guildLocaleName) : dbi.data.locales.get(dbi.config.defaults.locale)) : null;
28
+ let locale = {
29
+ user: userLocale,
30
+ guild: guildLocale
31
+ };
32
+ let data = (inter.isButton() || inter.isSelectMenu() || inter.isModalSubmit()) ? (0, customId_1.parseCustomId)(dbi, inter.customId).data : undefined;
33
+ let other = {};
34
+ if (!(await dbi.events.trigger("beforeInteraction", { dbi, interaction: inter, locale, setRateLimit, data, other })))
35
+ return;
36
+ if (inter.isAutocomplete()) {
37
+ let focussed = inter.options.getFocused(true);
38
+ let option = dbiInter.options.find(i => i.name == focussed.name);
39
+ if (option?.onComplete) {
40
+ let response = await option.onComplete({
41
+ value: focussed.value,
42
+ interaction: inter,
43
+ dbiInteraction: dbiInter,
44
+ dbi,
45
+ data,
46
+ other,
47
+ locale
48
+ });
49
+ await inter.respond(response);
50
+ }
51
+ return;
52
+ }
53
+ let rateLimitKeyMap = {
54
+ "User": `${dbiInter.name}_${inter.user.id}`,
55
+ "Channel": `${dbiInter.name}_${inter.channelId || "Channel"}`,
56
+ "Guild": `${dbiInter.name}_${inter.guildId || "Guild"}`,
57
+ "Member": `${dbiInter.name}_${inter.user.id}_${inter.guildId || "Guild"}`,
58
+ "Message": `${dbiInter.name}_${inter?.message?.id}`
59
+ };
60
+ for (const type in rateLimitKeyMap) {
61
+ // @ts-ignore
62
+ let key = `RateLimit["${rateLimitKeyMap[type]}"]`;
63
+ let val = await dbi.config.store.get(key);
64
+ if (val && Date.now() > val.at + val.duration) {
65
+ await dbi.config.store.delete(key);
66
+ val = null;
67
+ }
68
+ if (val) {
69
+ dbi.events.trigger("interactionRateLimit", {
70
+ dbi,
71
+ interaction: inter,
72
+ dbiInteraction: dbiInter,
73
+ locale,
74
+ data,
75
+ rateLimit: {
76
+ type: key,
77
+ ...val
78
+ }
79
+ });
80
+ return;
81
+ }
82
+ }
83
+ async function setRateLimit(type, duration) {
84
+ // @ts-ignore
85
+ await dbi.config.store.set(`RateLimit["${rateLimitKeyMap[type]}"]`, { at: Date.now(), duration });
86
+ }
87
+ let arg = {
88
+ // @ts-ignore
89
+ dbi,
90
+ // @ts-ignore
91
+ interaction: inter,
92
+ // @ts-ignore
93
+ dbiInteraction: dbiInter,
94
+ // @ts-ignore
95
+ locale,
96
+ // @ts-ignore
97
+ setRateLimit,
98
+ // @ts-ignore
99
+ data,
100
+ // @ts-ignore
101
+ other
102
+ };
103
+ if (dbi.config.strict) {
104
+ // @ts-ignore
105
+ await dbiInter.onExecute(arg);
106
+ }
107
+ else {
108
+ try {
109
+ // @ts-ignore
110
+ await dbiInter.onExecute(arg);
111
+ }
112
+ catch (error) {
113
+ // @ts-ignore
114
+ await dbi.events.trigger("interactionError", Object.assign(arg, { error }));
115
+ }
116
+ }
117
+ // @ts-ignore
118
+ dbi.events.trigger("afterInteraction", { dbi, interaction: inter, dbiInteraction: dbiInter, locale, setRateLimit, data, other });
119
+ }
120
+ dbi.client.on("interactionCreate", handle);
121
+ return () => {
122
+ dbi.client.off("interactionCreate", handle);
123
+ };
124
+ }
125
+ exports.hookInteractionListeners = hookInteractionListeners;
119
126
  //# sourceMappingURL=hookInteractionListeners.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hookInteractionListeners.js","sourceRoot":"","sources":["../../src/methods/hookInteractionListeners.ts"],"names":[],"mappings":"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","sourcesContent":["import { DBI } from \"../DBI\";\r\nimport Discord from \"discord.js\";\r\nimport { parseCustomId } from \"../utils/customId\";\r\nimport { NamespaceEnums } from \"../../generated/namespaceData\";\r\n\r\nexport function hookInteractionListeners(dbi: DBI<NamespaceEnums>): () => any {\r\n async function handle(inter: Discord.Interaction<\"cached\">) {\r\n\r\n const dbiInter =\r\n dbi.data.interactions.find(i => {\r\n let isUsesCustomId = (inter.isButton() || inter.isSelectMenu() || inter.isModalSubmit());\r\n let parsedId = isUsesCustomId ? parseCustomId(dbi, (inter as any).customId) : null;\r\n return (\r\n (\r\n i.type == \"ChatInput\"\r\n && (inter.isChatInputCommand() || inter.isAutocomplete())\r\n && i.name == [inter.commandName, inter.options.getSubcommandGroup(false), inter.options.getSubcommand(false)].filter(i => !!i).join(\" \")\r\n )\r\n ||\r\n (\r\n (i.type == \"MessageContextMenu\" || i.type == \"UserContextMenu\")\r\n && (inter.isMessageContextMenuCommand() || inter.isUserContextMenuCommand())\r\n && inter.commandName == i.name\r\n )\r\n ||\r\n (\r\n (i.type == \"Button\" || i.type == \"SelectMenu\" || i.type == \"Modal\")\r\n && isUsesCustomId\r\n && parsedId?.name == i.name\r\n )\r\n )\r\n });\r\n \r\n if (!dbiInter) return;\r\n\r\n let userLocaleName = inter.locale.split(\"-\")[0];\r\n let userLocale = dbi.data.locales.has(userLocaleName) ? dbi.data.locales.get(userLocaleName) : dbi.data.locales.get(dbi.config.defaults.locale);\r\n\r\n let guildLocaleName = inter.guild ? inter.guild.preferredLocale.split(\"-\")[0] : null;\r\n let guildLocale = guildLocaleName ? (dbi.data.locales.has(guildLocaleName) ? dbi.data.locales.get(guildLocaleName) : dbi.data.locales.get(dbi.config.defaults.locale)) : null;\r\n\r\n let locale = {\r\n user: userLocale,\r\n guild: guildLocale\r\n };\r\n\r\n let data = (inter.isButton() || inter.isSelectMenu() || inter.isModalSubmit()) ? parseCustomId(dbi, inter.customId).data : undefined;\r\n\r\n let other = {};\r\n\r\n if (!(await dbi.events.trigger(\"beforeInteraction\", { dbi, interaction: inter, locale, setRateLimit, data, other }))) return;\r\n \r\n if (inter.isAutocomplete()) {\r\n let focussed = inter.options.getFocused(true);\r\n let option = (dbiInter.options as any[]).find(i => i.name == focussed.name);\r\n if (option?.onComplete) {\r\n let response = await option.onComplete({\r\n value: focussed.value,\r\n interaction: inter,\r\n dbiInteraction: dbiInter,\r\n dbi,\r\n data,\r\n other,\r\n locale\r\n });\r\n await inter.respond(response);\r\n }\r\n return;\r\n }\r\n\r\n let rateLimitKeyMap = {\r\n \"User\": `${dbiInter.name}_${inter.user.id}`,\r\n \"Channel\": `${dbiInter.name}_${inter.channelId || \"Channel\"}`,\r\n \"Guild\": `${dbiInter.name}_${inter.guildId || \"Guild\"}`,\r\n \"Member\": `${dbiInter.name}_${inter.user.id}_${inter.guildId || \"Guild\"}`,\r\n \"Message\": `${dbiInter.name}_${(inter as any)?.message?.id}`\r\n }\r\n\r\n for (const type in rateLimitKeyMap) {\r\n // @ts-ignore\r\n let key = `RateLimit[\"${rateLimitKeyMap[type]}\"]`;\r\n let val = await dbi.config.store.get(key);\r\n if (val && Date.now() > val.at + val.duration) {\r\n await dbi.config.store.delete(key);\r\n val = null;\r\n }\r\n if (val) {\r\n dbi.events.trigger(\"interactionRateLimit\", {\r\n dbi,\r\n interaction: inter,\r\n dbiInteraction: dbiInter,\r\n locale,\r\n data,\r\n rateLimit: {\r\n type: key,\r\n ...val\r\n }\r\n })\r\n return;\r\n }\r\n }\r\n\r\n async function setRateLimit(type: string, duration: number) {\r\n // @ts-ignore\r\n await dbi.config.store.set(`RateLimit[\"${rateLimitKeyMap[type]}\"]`, { at: Date.now(), duration });\r\n }\r\n\r\n let arg = {\r\n dbi,\r\n // @ts-ignore\r\n interaction: inter as any,\r\n // @ts-ignore\r\n dbiInteraction: dbiInter,\r\n // @ts-ignore\r\n locale,\r\n setRateLimit,\r\n // @ts-ignore\r\n data,\r\n other\r\n };\r\n\r\n if (dbi.config.strict) {\r\n await dbiInter.onExecute(arg);\r\n } else {\r\n try {\r\n await dbiInter.onExecute(arg);\r\n } catch (error) {\r\n await dbi.events.trigger(\"interactionError\", Object.assign(arg, { error }));\r\n }\r\n }\r\n \r\n dbi.events.trigger(\"afterInteraction\", { dbi, interaction: inter, dbiInteraction: dbiInter, locale, setRateLimit, data, other });\r\n }\r\n\r\n dbi.client.on(\"interactionCreate\", handle);\r\n\r\n return () => { \r\n dbi.client.off(\"interactionCreate\", handle);\r\n };\r\n}"]}
1
+ {"version":3,"file":"hookInteractionListeners.js","sourceRoot":"","sources":["../../src/methods/hookInteractionListeners.ts"],"names":[],"mappings":"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","sourcesContent":["import { DBI } from \"../DBI\";\r\nimport Discord from \"discord.js\";\r\nimport { parseCustomId } from \"../utils/customId\";\r\nimport { NamespaceEnums } from \"../../generated/namespaceData\";\r\n\r\nexport function hookInteractionListeners(dbi: DBI<NamespaceEnums>): () => any {\r\n async function handle(inter: Discord.Interaction<\"cached\">) {\r\n\r\n const dbiInter =\r\n dbi.data.interactions.find(i => {\r\n let isUsesCustomId = (inter.isButton() || inter.isSelectMenu() || inter.isModalSubmit());\r\n let parsedId = isUsesCustomId ? parseCustomId(dbi, (inter as any).customId) : null;\r\n return (\r\n (\r\n i.type == \"ChatInput\"\r\n && (inter.isChatInputCommand() || inter.isAutocomplete())\r\n && i.name == [inter.commandName, inter.options.getSubcommandGroup(false), inter.options.getSubcommand(false)].filter(i => !!i).join(\" \")\r\n )\r\n ||\r\n (\r\n (i.type == \"MessageContextMenu\" || i.type == \"UserContextMenu\")\r\n && (inter.isMessageContextMenuCommand() || inter.isUserContextMenuCommand())\r\n && inter.commandName == i.name\r\n )\r\n ||\r\n (\r\n (i.type == \"Button\" || i.type == \"SelectMenu\" || i.type == \"Modal\")\r\n && isUsesCustomId\r\n && parsedId?.name == i.name\r\n )\r\n )\r\n });\r\n \r\n if (!dbiInter) return;\r\n\r\n let userLocaleName = inter.locale.split(\"-\")[0];\r\n let userLocale = dbi.data.locales.has(userLocaleName) ? dbi.data.locales.get(userLocaleName) : dbi.data.locales.get(dbi.config.defaults.locale);\r\n\r\n let guildLocaleName = inter.guild ? inter.guild.preferredLocale.split(\"-\")[0] : null;\r\n let guildLocale = guildLocaleName ? (dbi.data.locales.has(guildLocaleName) ? dbi.data.locales.get(guildLocaleName) : dbi.data.locales.get(dbi.config.defaults.locale)) : null;\r\n\r\n let locale = {\r\n user: userLocale,\r\n guild: guildLocale\r\n };\r\n\r\n let data = (inter.isButton() || inter.isSelectMenu() || inter.isModalSubmit()) ? parseCustomId(dbi, inter.customId).data : undefined;\r\n\r\n let other = {};\r\n\r\n if (!(await dbi.events.trigger(\"beforeInteraction\", { dbi, interaction: inter, locale, setRateLimit, data, other }))) return;\r\n \r\n if (inter.isAutocomplete()) {\r\n let focussed = inter.options.getFocused(true);\r\n let option = (dbiInter.options as any[]).find(i => i.name == focussed.name);\r\n if (option?.onComplete) {\r\n let response = await option.onComplete({\r\n value: focussed.value,\r\n interaction: inter,\r\n dbiInteraction: dbiInter,\r\n dbi,\r\n data,\r\n other,\r\n locale\r\n });\r\n await inter.respond(response);\r\n }\r\n return;\r\n }\r\n\r\n let rateLimitKeyMap = {\r\n \"User\": `${dbiInter.name}_${inter.user.id}`,\r\n \"Channel\": `${dbiInter.name}_${inter.channelId || \"Channel\"}`,\r\n \"Guild\": `${dbiInter.name}_${inter.guildId || \"Guild\"}`,\r\n \"Member\": `${dbiInter.name}_${inter.user.id}_${inter.guildId || \"Guild\"}`,\r\n \"Message\": `${dbiInter.name}_${(inter as any)?.message?.id}`\r\n }\r\n\r\n for (const type in rateLimitKeyMap) {\r\n // @ts-ignore\r\n let key = `RateLimit[\"${rateLimitKeyMap[type]}\"]`;\r\n let val = await dbi.config.store.get(key);\r\n if (val && Date.now() > val.at + val.duration) {\r\n await dbi.config.store.delete(key);\r\n val = null;\r\n }\r\n if (val) {\r\n dbi.events.trigger(\"interactionRateLimit\", {\r\n dbi,\r\n interaction: inter,\r\n dbiInteraction: dbiInter,\r\n locale,\r\n data,\r\n rateLimit: {\r\n type: key,\r\n ...val\r\n }\r\n })\r\n return;\r\n }\r\n }\r\n\r\n async function setRateLimit(type: string, duration: number) {\r\n // @ts-ignore\r\n await dbi.config.store.set(`RateLimit[\"${rateLimitKeyMap[type]}\"]`, { at: Date.now(), duration });\r\n }\r\n\r\n let arg = {\r\n // @ts-ignore\r\n dbi,\r\n // @ts-ignore\r\n interaction: inter as any,\r\n // @ts-ignore\r\n dbiInteraction: dbiInter,\r\n // @ts-ignore\r\n locale,\r\n // @ts-ignore\r\n setRateLimit,\r\n // @ts-ignore\r\n data,\r\n // @ts-ignore\r\n other\r\n };\r\n\r\n if (dbi.config.strict) {\r\n // @ts-ignore\r\n await dbiInter.onExecute(arg);\r\n } else {\r\n try {\r\n // @ts-ignore\r\n await dbiInter.onExecute(arg);\r\n } catch (error) {\r\n // @ts-ignore\r\n await dbi.events.trigger(\"interactionError\", Object.assign(arg, { error }));\r\n }\r\n }\r\n \r\n // @ts-ignore\r\n dbi.events.trigger(\"afterInteraction\", { dbi, interaction: inter, dbiInteraction: dbiInter, locale, setRateLimit, data, other });\r\n }\r\n\r\n dbi.client.on(\"interactionCreate\", handle);\r\n\r\n return () => { \r\n dbi.client.off(\"interactionCreate\", handle);\r\n };\r\n}"]}
@@ -1,8 +1,8 @@
1
- import Discord from "discord.js";
2
- import { DBIChatInput } from "../types/ChatInput/ChatInput";
3
- import { DBIInteractionLocale } from "../types/InteractionLocale";
4
- import { NamespaceEnums } from "../../generated/namespaceData";
5
- export declare function publishInteractions(clientToken: string, interactions: Discord.Collection<string, DBIChatInput<NamespaceEnums>>, interactionsLocales: Discord.Collection<string, DBIInteractionLocale>, publishType: "Guild" | "Global", guildId?: string): Promise<void>;
6
- export declare function localeifyOptions(options: any[], localeData: any): any[];
7
- export declare function formatLocale(locale: DBIInteractionLocale): any;
1
+ import Discord from "discord.js";
2
+ import { DBIChatInput } from "../types/ChatInput/ChatInput";
3
+ import { DBIInteractionLocale } from "../types/InteractionLocale";
4
+ import { NamespaceEnums } from "../../generated/namespaceData";
5
+ export declare function publishInteractions(clientToken: string, interactions: Discord.Collection<string, DBIChatInput<NamespaceEnums>>, interactionsLocales: Discord.Collection<string, DBIInteractionLocale>, publishType: "Guild" | "Global", guildId?: string): Promise<void>;
6
+ export declare function localeifyOptions(options: any[], localeData: any): any[];
7
+ export declare function formatLocale(locale: DBIInteractionLocale): any;
8
8
  //# sourceMappingURL=publishInteractions.d.ts.map