@mostfeatured/dbi 0.1.2 → 0.1.4
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.
- package/dist/DBI.d.ts +4 -1
- package/dist/DBI.d.ts.map +1 -1
- package/dist/DBI.js +106 -49
- package/dist/DBI.js.map +1 -1
- package/dist/Events.d.ts +6 -6
- package/dist/Events.d.ts.map +1 -1
- package/dist/Events.js +1 -1
- package/dist/Events.js.map +1 -1
- package/dist/methods/handleMessageCommands.d.ts.map +1 -1
- package/dist/methods/handleMessageCommands.js +71 -37
- package/dist/methods/handleMessageCommands.js.map +1 -1
- package/dist/methods/hookInteractionListeners.d.ts.map +1 -1
- package/dist/methods/hookInteractionListeners.js +122 -36
- package/dist/methods/hookInteractionListeners.js.map +1 -1
- package/dist/types/ChatInput/ChatInputOptions.d.ts +81 -23
- package/dist/types/ChatInput/ChatInputOptions.d.ts.map +1 -1
- package/dist/types/ChatInput/ChatInputOptions.js +28 -15
- package/dist/types/ChatInput/ChatInputOptions.js.map +1 -1
- package/package.json +1 -1
- package/src/DBI.ts +523 -170
- package/src/Events.ts +68 -21
- package/src/methods/handleMessageCommands.ts +182 -63
- package/src/methods/hookInteractionListeners.ts +155 -60
- package/src/types/ChatInput/ChatInputOptions.ts +213 -36
|
@@ -2,41 +2,94 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.hookInteractionListeners = void 0;
|
|
4
4
|
const customId_1 = require("../utils/customId");
|
|
5
|
-
const componentTypes = [
|
|
5
|
+
const componentTypes = [
|
|
6
|
+
"Button",
|
|
7
|
+
"StringSelectMenu",
|
|
8
|
+
"UserSelectMenu",
|
|
9
|
+
"RoleSelectMenu",
|
|
10
|
+
"ChannelSelectMenu",
|
|
11
|
+
"MentionableSelectMenu",
|
|
12
|
+
"Modal",
|
|
13
|
+
];
|
|
6
14
|
function hookInteractionListeners(dbi) {
|
|
7
15
|
async function handle(inter) {
|
|
8
|
-
const dbiInter = inter.dbiChatInput ??
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
((
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
16
|
+
const dbiInter = inter.dbiChatInput ??
|
|
17
|
+
dbi.data.interactions.find((i) => {
|
|
18
|
+
let isUsesCustomId = inter.isButton() || inter.isAnySelectMenu() || inter.isModalSubmit();
|
|
19
|
+
let parsedId = isUsesCustomId
|
|
20
|
+
? (0, customId_1.parseCustomId)(dbi, inter.customId)
|
|
21
|
+
: null;
|
|
22
|
+
return ((i.type == "ChatInput" &&
|
|
23
|
+
(inter.isChatInputCommand() || inter.isAutocomplete()) &&
|
|
24
|
+
i.name ==
|
|
25
|
+
[
|
|
26
|
+
inter.commandName,
|
|
27
|
+
inter.options.getSubcommandGroup(false),
|
|
28
|
+
inter.options.getSubcommand(false),
|
|
29
|
+
]
|
|
30
|
+
.filter((i) => !!i)
|
|
31
|
+
.join(" ")) ||
|
|
32
|
+
((i.type == "MessageContextMenu" || i.type == "UserContextMenu") &&
|
|
33
|
+
(inter.isMessageContextMenuCommand() ||
|
|
34
|
+
inter.isUserContextMenuCommand()) &&
|
|
35
|
+
inter.commandName == i.name) ||
|
|
36
|
+
(componentTypes.includes(i.type) &&
|
|
37
|
+
isUsesCustomId &&
|
|
38
|
+
parsedId?.name == i.name));
|
|
39
|
+
});
|
|
23
40
|
if (!dbiInter)
|
|
24
41
|
return;
|
|
25
42
|
let userLocaleName = inter.locale.split("-")[0];
|
|
26
|
-
let userLocale = dbi.data.locales.has(userLocaleName)
|
|
27
|
-
|
|
28
|
-
|
|
43
|
+
let userLocale = dbi.data.locales.has(userLocaleName)
|
|
44
|
+
? dbi.data.locales.get(userLocaleName)
|
|
45
|
+
: dbi.data.locales.get(dbi.config.defaults.locale);
|
|
46
|
+
let guildLocaleName = inter.guild
|
|
47
|
+
? inter.guild.preferredLocale.split("-")[0]
|
|
48
|
+
: null;
|
|
49
|
+
let guildLocale = guildLocaleName
|
|
50
|
+
? dbi.data.locales.has(guildLocaleName)
|
|
51
|
+
? dbi.data.locales.get(guildLocaleName)
|
|
52
|
+
: dbi.data.locales.get(dbi.config.defaults.locale)
|
|
53
|
+
: null;
|
|
29
54
|
let locale = {
|
|
30
55
|
user: userLocale,
|
|
31
|
-
guild: guildLocale
|
|
56
|
+
guild: guildLocale,
|
|
32
57
|
};
|
|
33
|
-
let data =
|
|
58
|
+
let data = inter.isButton() || inter.isAnySelectMenu() || inter.isModalSubmit()
|
|
59
|
+
? (0, customId_1.parseCustomId)(dbi, inter.customId).data
|
|
60
|
+
: undefined;
|
|
34
61
|
let other = {};
|
|
35
|
-
if (!(await dbi.events.trigger("beforeInteraction", {
|
|
62
|
+
if (!(await dbi.events.trigger("beforeInteraction", {
|
|
63
|
+
dbi,
|
|
64
|
+
interaction: inter,
|
|
65
|
+
locale,
|
|
66
|
+
setRateLimit,
|
|
67
|
+
data,
|
|
68
|
+
other,
|
|
69
|
+
dbiInteraction: dbiInter,
|
|
70
|
+
})))
|
|
36
71
|
return;
|
|
37
72
|
if (inter.isAutocomplete()) {
|
|
38
73
|
let focussed = inter.options.getFocused(true);
|
|
39
|
-
let option = dbiInter.options.find(i => i.name == focussed.name);
|
|
74
|
+
let option = dbiInter.options.find((i) => i.name == focussed.name);
|
|
75
|
+
if (option?.validate) {
|
|
76
|
+
const res = await option.validate({
|
|
77
|
+
value: focussed.value,
|
|
78
|
+
interaction: inter,
|
|
79
|
+
dbiInteraction: dbiInter,
|
|
80
|
+
dbi,
|
|
81
|
+
data,
|
|
82
|
+
other,
|
|
83
|
+
locale,
|
|
84
|
+
step: "Autocomplete",
|
|
85
|
+
});
|
|
86
|
+
if (Array.isArray(res) && res.length > 0) {
|
|
87
|
+
await inter.respond(res);
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
if (res !== true)
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
40
93
|
if (option?.onComplete) {
|
|
41
94
|
let response = await option.onComplete({
|
|
42
95
|
value: focussed.value,
|
|
@@ -45,18 +98,18 @@ function hookInteractionListeners(dbi) {
|
|
|
45
98
|
dbi,
|
|
46
99
|
data,
|
|
47
100
|
other,
|
|
48
|
-
locale
|
|
101
|
+
locale,
|
|
49
102
|
});
|
|
50
103
|
await inter.respond(response);
|
|
51
104
|
}
|
|
52
105
|
return;
|
|
53
106
|
}
|
|
54
107
|
let rateLimitKeyMap = {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
108
|
+
User: `${dbiInter.name}_${inter.user.id}`,
|
|
109
|
+
Channel: `${dbiInter.name}_${inter.channelId || "Channel"}`,
|
|
110
|
+
Guild: `${dbiInter.name}_${inter.guildId || "Guild"}`,
|
|
111
|
+
Member: `${dbiInter.name}_${inter.user.id}_${inter.guildId || "Guild"}`,
|
|
112
|
+
Message: `${dbiInter.name}_${inter?.message?.id}`,
|
|
60
113
|
};
|
|
61
114
|
for (const type in rateLimitKeyMap) {
|
|
62
115
|
// @ts-ignore
|
|
@@ -75,19 +128,44 @@ function hookInteractionListeners(dbi) {
|
|
|
75
128
|
data,
|
|
76
129
|
rateLimit: {
|
|
77
130
|
type: key,
|
|
78
|
-
...val
|
|
79
|
-
}
|
|
131
|
+
...val,
|
|
132
|
+
},
|
|
80
133
|
})) === true)
|
|
81
134
|
return;
|
|
82
135
|
}
|
|
83
136
|
}
|
|
84
137
|
async function setRateLimit(type, duration) {
|
|
85
138
|
// @ts-ignore
|
|
86
|
-
await dbi.config.store.set(`RateLimit["${rateLimitKeyMap[type]}"]`, {
|
|
139
|
+
await dbi.config.store.set(`RateLimit["${rateLimitKeyMap[type]}"]`, {
|
|
140
|
+
at: Date.now(),
|
|
141
|
+
duration,
|
|
142
|
+
});
|
|
87
143
|
}
|
|
88
144
|
for (const rateLimit of dbiInter.rateLimits) {
|
|
89
145
|
await setRateLimit(rateLimit.type, rateLimit.duration);
|
|
90
146
|
}
|
|
147
|
+
if (inter.isChatInputCommand()) {
|
|
148
|
+
let dcOptions = inter.options
|
|
149
|
+
._hoistedOptions;
|
|
150
|
+
let dbiOptions = dbiInter.options;
|
|
151
|
+
for (const dcOption of dcOptions) {
|
|
152
|
+
const dbiOption = dbiOptions.find((i) => i.name == dcOption.name);
|
|
153
|
+
if (dbiOption?.validate) {
|
|
154
|
+
const res = await dbiOption.validate({
|
|
155
|
+
value: dcOption.value,
|
|
156
|
+
interaction: inter,
|
|
157
|
+
dbiInteraction: dbiInter,
|
|
158
|
+
dbi,
|
|
159
|
+
data,
|
|
160
|
+
other,
|
|
161
|
+
locale,
|
|
162
|
+
step: "Result",
|
|
163
|
+
});
|
|
164
|
+
if (res !== true)
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
91
169
|
let arg = {
|
|
92
170
|
// @ts-ignore
|
|
93
171
|
dbi,
|
|
@@ -102,7 +180,7 @@ function hookInteractionListeners(dbi) {
|
|
|
102
180
|
// @ts-ignore
|
|
103
181
|
data,
|
|
104
182
|
// @ts-ignore
|
|
105
|
-
other
|
|
183
|
+
other,
|
|
106
184
|
};
|
|
107
185
|
if (dbi.config.strict) {
|
|
108
186
|
// @ts-ignore
|
|
@@ -119,13 +197,21 @@ function hookInteractionListeners(dbi) {
|
|
|
119
197
|
}
|
|
120
198
|
}
|
|
121
199
|
// @ts-ignore
|
|
122
|
-
dbi.events.trigger("afterInteraction", {
|
|
200
|
+
dbi.events.trigger("afterInteraction", {
|
|
201
|
+
dbi,
|
|
202
|
+
interaction: inter,
|
|
203
|
+
dbiInteraction: dbiInter,
|
|
204
|
+
locale,
|
|
205
|
+
setRateLimit,
|
|
206
|
+
data,
|
|
207
|
+
other,
|
|
208
|
+
});
|
|
123
209
|
}
|
|
124
|
-
dbi.data.clients.forEach(d => {
|
|
210
|
+
dbi.data.clients.forEach((d) => {
|
|
125
211
|
d.client.on("interactionCreate", handle);
|
|
126
212
|
});
|
|
127
213
|
return () => {
|
|
128
|
-
dbi.data.clients.forEach(d => {
|
|
214
|
+
dbi.data.clients.forEach((d) => {
|
|
129
215
|
d.client.off("interactionCreate", handle);
|
|
130
216
|
});
|
|
131
217
|
};
|
|
@@ -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\nconst componentTypes = [\"Button\", \"StringSelectMenu\", \"UserSelectMenu\", \"RoleSelectMenu\", \"ChannelSelectMenu\", \"MentionableSelectMenu\", \"Modal\"]\r\n\r\nexport function hookInteractionListeners(dbi: DBI<NamespaceEnums>): () => any {\r\n async function handle(inter: Discord.Interaction<\"cached\">) {\r\n const dbiInter =\r\n (inter as any).dbiChatInput ?? dbi.data.interactions.find(i => {\r\n let isUsesCustomId = (inter.isButton() || inter.isAnySelectMenu() || 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 componentTypes.includes(i.type)\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.isAnySelectMenu() || 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, dbiInteraction: dbiInter }))) 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 if ((await 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 })) === true) 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 for (const rateLimit of dbiInter.rateLimits) {\r\n await setRateLimit(rateLimit.type, rateLimit.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.data.clients.forEach(d=>{\r\n d.client.on(\"interactionCreate\", handle);\r\n });\r\n\r\n return () => { \r\n dbi.data.clients.forEach(d=>{\r\n d.client.off(\"interactionCreate\", handle);\r\n });\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, { CommandInteractionOption } from \"discord.js\";\r\nimport { parseCustomId } from \"../utils/customId\";\r\nimport { NamespaceEnums } from \"../../generated/namespaceData\";\r\n\r\nconst componentTypes = [\r\n \"Button\",\r\n \"StringSelectMenu\",\r\n \"UserSelectMenu\",\r\n \"RoleSelectMenu\",\r\n \"ChannelSelectMenu\",\r\n \"MentionableSelectMenu\",\r\n \"Modal\",\r\n];\r\n\r\nexport function hookInteractionListeners(dbi: DBI<NamespaceEnums>): () => any {\r\n async function handle(inter: Discord.Interaction<\"cached\">) {\r\n const dbiInter =\r\n (inter as any).dbiChatInput ??\r\n dbi.data.interactions.find((i) => {\r\n let isUsesCustomId =\r\n inter.isButton() || inter.isAnySelectMenu() || inter.isModalSubmit();\r\n let parsedId = isUsesCustomId\r\n ? parseCustomId(dbi, (inter as any).customId)\r\n : null;\r\n return (\r\n (i.type == \"ChatInput\" &&\r\n (inter.isChatInputCommand() || inter.isAutocomplete()) &&\r\n i.name ==\r\n [\r\n inter.commandName,\r\n inter.options.getSubcommandGroup(false),\r\n inter.options.getSubcommand(false),\r\n ]\r\n .filter((i) => !!i)\r\n .join(\" \")) ||\r\n ((i.type == \"MessageContextMenu\" || i.type == \"UserContextMenu\") &&\r\n (inter.isMessageContextMenuCommand() ||\r\n inter.isUserContextMenuCommand()) &&\r\n inter.commandName == i.name) ||\r\n (componentTypes.includes(i.type) &&\r\n isUsesCustomId &&\r\n parsedId?.name == i.name)\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)\r\n ? dbi.data.locales.get(userLocaleName)\r\n : dbi.data.locales.get(dbi.config.defaults.locale);\r\n\r\n let guildLocaleName = inter.guild\r\n ? inter.guild.preferredLocale.split(\"-\")[0]\r\n : null;\r\n let guildLocale = guildLocaleName\r\n ? dbi.data.locales.has(guildLocaleName)\r\n ? dbi.data.locales.get(guildLocaleName)\r\n : dbi.data.locales.get(dbi.config.defaults.locale)\r\n : null;\r\n\r\n let locale = {\r\n user: userLocale,\r\n guild: guildLocale,\r\n };\r\n\r\n let data =\r\n inter.isButton() || inter.isAnySelectMenu() || inter.isModalSubmit()\r\n ? parseCustomId(dbi, inter.customId).data\r\n : undefined;\r\n\r\n let other = {};\r\n\r\n if (\r\n !(await dbi.events.trigger(\"beforeInteraction\", {\r\n dbi,\r\n interaction: inter,\r\n locale,\r\n setRateLimit,\r\n data,\r\n other,\r\n dbiInteraction: dbiInter,\r\n }))\r\n )\r\n 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(\r\n (i) => i.name == focussed.name\r\n );\r\n if (option?.validate) {\r\n const res = await option.validate({\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 step: \"Autocomplete\",\r\n });\r\n\r\n if (Array.isArray(res) && res.length > 0) {\r\n await inter.respond(res);\r\n return;\r\n }\r\n\r\n if (res !== true) return;\r\n }\r\n\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 if (\r\n (await 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 })) === true\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]}\"]`, {\r\n at: Date.now(),\r\n duration,\r\n });\r\n }\r\n\r\n for (const rateLimit of dbiInter.rateLimits) {\r\n await setRateLimit(rateLimit.type, rateLimit.duration);\r\n }\r\n\r\n if (inter.isChatInputCommand()) {\r\n let dcOptions = (inter.options as any)\r\n ._hoistedOptions as CommandInteractionOption[];\r\n let dbiOptions = dbiInter.options as any[];\r\n for (const dcOption of dcOptions) {\r\n const dbiOption = dbiOptions.find((i) => i.name == dcOption.name);\r\n if (dbiOption?.validate) {\r\n const res = await dbiOption.validate({\r\n value: dcOption.value,\r\n interaction: inter,\r\n dbiInteraction: dbiInter,\r\n dbi,\r\n data,\r\n other,\r\n locale,\r\n step: \"Result\",\r\n });\r\n if (res !== true) return;\r\n }\r\n }\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(\r\n \"interactionError\",\r\n Object.assign(arg, { error })\r\n );\r\n }\r\n }\r\n\r\n // @ts-ignore\r\n dbi.events.trigger(\"afterInteraction\", {\r\n dbi,\r\n interaction: inter,\r\n dbiInteraction: dbiInter,\r\n locale,\r\n setRateLimit,\r\n data,\r\n other,\r\n });\r\n }\r\n\r\n dbi.data.clients.forEach((d) => {\r\n d.client.on(\"interactionCreate\", handle);\r\n });\r\n\r\n return () => {\r\n dbi.data.clients.forEach((d) => {\r\n d.client.off(\"interactionCreate\", handle);\r\n });\r\n };\r\n}\r\n"]}
|
|
@@ -19,36 +19,50 @@ export type TDBIMinMaxValue = {
|
|
|
19
19
|
maxValue?: number;
|
|
20
20
|
minValue?: number;
|
|
21
21
|
};
|
|
22
|
-
export
|
|
23
|
-
|
|
22
|
+
export type TDBIValidator<TExtends, TValue, TStep extends string, TExpectedResponse = boolean> = {
|
|
23
|
+
validate?(cfg: TExtends & {
|
|
24
|
+
value: TValue;
|
|
25
|
+
step: TStep;
|
|
26
|
+
}): Promise<TExpectedResponse> | TExpectedResponse;
|
|
27
|
+
};
|
|
28
|
+
export interface IDBIValuedInteraction<TNamespace extends NamespaceEnums, TInteractionType extends Discord.Interaction, TValueType = string | number> extends IDBIBaseExecuteCtx<TNamespace> {
|
|
24
29
|
value: TValueType;
|
|
30
|
+
interaction: TInteractionType;
|
|
25
31
|
}
|
|
32
|
+
export type TDBICompleteCtx<TNamespace extends NamespaceEnums, TValueType = string | number> = IDBIValuedInteraction<TNamespace, Discord.AutocompleteInteraction, TValueType>;
|
|
33
|
+
export type TDBIValidateCtx<TNamespace extends NamespaceEnums, TValueType = string | number> = IDBIValuedInteraction<TNamespace, Discord.Interaction, TValueType>;
|
|
34
|
+
export type TDBICompleter<TNamespace extends NamespaceEnums, TValueType extends number | string> = {
|
|
35
|
+
onComplete(ctx: TDBICompleteCtx<TNamespace, string>): Promise<TDBIValueName<TValueType>[]> | TDBIValueName<TValueType>[];
|
|
36
|
+
};
|
|
26
37
|
export declare class DBIChatInputOptions<TNamespace extends NamespaceEnums> {
|
|
27
38
|
dbi: DBI<TNamespace>;
|
|
28
39
|
constructor(dbi: DBI<TNamespace>);
|
|
29
40
|
stringAutocomplete(cfg: TDBIBaseOption & TDBIMinMaxLength & {
|
|
30
|
-
onComplete(ctx: IDBICompleteCtx<TNamespace, string>): Promise<TDBIValueName<string>[]> | TDBIValueName<string>[];
|
|
31
41
|
messageCommands?: {
|
|
32
42
|
rest?: boolean;
|
|
33
43
|
};
|
|
34
|
-
}): {
|
|
44
|
+
} & TDBIValidator<TDBIValidateCtx<TNamespace, string>, string, "Autocomplete" | "Result", boolean | TDBIValueName<string>> & TDBICompleter<TNamespace, string>): {
|
|
35
45
|
type: Discord.ApplicationCommandOptionType;
|
|
36
46
|
name: string;
|
|
37
47
|
autocomplete: boolean;
|
|
38
|
-
onComplete: (ctx:
|
|
48
|
+
onComplete: (ctx: TDBICompleteCtx<TNamespace, string>) => TDBIValueName<string>[] | Promise<TDBIValueName<string>[]>;
|
|
39
49
|
description: string;
|
|
40
50
|
maxLength: number;
|
|
41
51
|
max_length: number;
|
|
42
52
|
minLength: number;
|
|
43
53
|
min_length: number;
|
|
44
54
|
required: boolean;
|
|
55
|
+
validate: (cfg: TDBIValidateCtx<TNamespace, string> & {
|
|
56
|
+
value: string;
|
|
57
|
+
step: "Autocomplete" | "Result";
|
|
58
|
+
}) => boolean | TDBIValueName<string> | Promise<boolean | TDBIValueName<string>>;
|
|
45
59
|
};
|
|
46
60
|
stringChoices(cfg: TDBIBaseOption & TDBIMinMaxLength & {
|
|
47
61
|
choices: TDBIValueName<string>[];
|
|
48
62
|
messageCommands?: {
|
|
49
63
|
rest?: boolean;
|
|
50
64
|
};
|
|
51
|
-
}): {
|
|
65
|
+
} & TDBIValidator<TDBIValidateCtx<TNamespace, string>, string, "Result", boolean>): {
|
|
52
66
|
type: Discord.ApplicationCommandOptionType;
|
|
53
67
|
name: string;
|
|
54
68
|
choices: TDBIValueName<string>[];
|
|
@@ -58,12 +72,16 @@ export declare class DBIChatInputOptions<TNamespace extends NamespaceEnums> {
|
|
|
58
72
|
minLength: number;
|
|
59
73
|
min_length: number;
|
|
60
74
|
required: boolean;
|
|
75
|
+
validate: (cfg: TDBIValidateCtx<TNamespace, string> & {
|
|
76
|
+
value: string;
|
|
77
|
+
step: "Result";
|
|
78
|
+
}) => boolean | Promise<boolean>;
|
|
61
79
|
};
|
|
62
80
|
string(cfg: TDBIBaseOption & TDBIMinMaxLength & {
|
|
63
81
|
messageCommands?: {
|
|
64
82
|
rest?: boolean;
|
|
65
83
|
};
|
|
66
|
-
}): {
|
|
84
|
+
} & TDBIValidator<TDBIValidateCtx<TNamespace, string>, string, "Result", boolean>): {
|
|
67
85
|
type: Discord.ApplicationCommandOptionType;
|
|
68
86
|
name: string;
|
|
69
87
|
description: string;
|
|
@@ -75,24 +93,30 @@ export declare class DBIChatInputOptions<TNamespace extends NamespaceEnums> {
|
|
|
75
93
|
messageCommands: {
|
|
76
94
|
rest?: boolean;
|
|
77
95
|
};
|
|
96
|
+
validate: (cfg: TDBIValidateCtx<TNamespace, string> & {
|
|
97
|
+
value: string;
|
|
98
|
+
step: "Result";
|
|
99
|
+
}) => boolean | Promise<boolean>;
|
|
78
100
|
};
|
|
79
|
-
numberAutocomplete(cfg: TDBIBaseOption & TDBIMinMaxValue & {
|
|
80
|
-
onComplete(ctx: IDBICompleteCtx<TNamespace, string>): Promise<TDBIValueName<number>[]> | TDBIValueName<number>[];
|
|
81
|
-
}): {
|
|
101
|
+
numberAutocomplete(cfg: TDBIBaseOption & TDBIMinMaxValue & TDBIValidator<TDBIValidateCtx<TNamespace, number>, number, "Autocomplete" | "Result", boolean | TDBIValueName<number>> & TDBICompleter<TNamespace, number>): {
|
|
82
102
|
type: Discord.ApplicationCommandOptionType;
|
|
83
103
|
name: string;
|
|
84
104
|
autocomplete: boolean;
|
|
85
|
-
onComplete: (ctx:
|
|
105
|
+
onComplete: (ctx: TDBICompleteCtx<TNamespace, string>) => TDBIValueName<number>[] | Promise<TDBIValueName<number>[]>;
|
|
86
106
|
description: string;
|
|
87
107
|
maxValue: number;
|
|
88
108
|
max_value: number;
|
|
89
109
|
minValue: number;
|
|
90
110
|
min_value: number;
|
|
91
111
|
required: boolean;
|
|
112
|
+
validate: (cfg: TDBIValidateCtx<TNamespace, number> & {
|
|
113
|
+
value: number;
|
|
114
|
+
step: "Autocomplete" | "Result";
|
|
115
|
+
}) => boolean | TDBIValueName<number> | Promise<boolean | TDBIValueName<number>>;
|
|
92
116
|
};
|
|
93
117
|
numberChoices(cfg: TDBIBaseOption & TDBIMinMaxValue & {
|
|
94
118
|
choices: TDBIValueName<number>[];
|
|
95
|
-
}): {
|
|
119
|
+
} & TDBIValidator<TDBIValidateCtx<TNamespace, number>, number, "Result", boolean>): {
|
|
96
120
|
type: Discord.ApplicationCommandOptionType;
|
|
97
121
|
name: string;
|
|
98
122
|
choices: TDBIValueName<number>[];
|
|
@@ -102,8 +126,12 @@ export declare class DBIChatInputOptions<TNamespace extends NamespaceEnums> {
|
|
|
102
126
|
minValue: number;
|
|
103
127
|
min_value: number;
|
|
104
128
|
required: boolean;
|
|
129
|
+
validate: (cfg: TDBIValidateCtx<TNamespace, number> & {
|
|
130
|
+
value: number;
|
|
131
|
+
step: "Result";
|
|
132
|
+
}) => boolean | Promise<boolean>;
|
|
105
133
|
};
|
|
106
|
-
number(cfg: TDBIBaseOption & TDBIMinMaxValue): {
|
|
134
|
+
number(cfg: TDBIBaseOption & TDBIMinMaxValue & TDBIValidator<TDBIValidateCtx<TNamespace, number>, number, "Result", boolean>): {
|
|
107
135
|
type: Discord.ApplicationCommandOptionType;
|
|
108
136
|
name: string;
|
|
109
137
|
description: string;
|
|
@@ -112,24 +140,30 @@ export declare class DBIChatInputOptions<TNamespace extends NamespaceEnums> {
|
|
|
112
140
|
minValue: number;
|
|
113
141
|
min_value: number;
|
|
114
142
|
required: boolean;
|
|
143
|
+
validate: (cfg: TDBIValidateCtx<TNamespace, number> & {
|
|
144
|
+
value: number;
|
|
145
|
+
step: "Result";
|
|
146
|
+
}) => boolean | Promise<boolean>;
|
|
115
147
|
};
|
|
116
|
-
integerAutocomplete(cfg: TDBIBaseOption & TDBIMinMaxValue & {
|
|
117
|
-
onComplete(ctx: IDBICompleteCtx<TNamespace, string>): Promise<TDBIValueName<number>[]> | TDBIValueName<number>[];
|
|
118
|
-
}): {
|
|
148
|
+
integerAutocomplete(cfg: TDBIBaseOption & TDBIMinMaxValue & TDBIValidator<TDBIValidateCtx<TNamespace, number>, number, "Autocomplete" | "Result", boolean | TDBIValueName<number>> & TDBICompleter<TNamespace, number>): {
|
|
119
149
|
type: Discord.ApplicationCommandOptionType;
|
|
120
150
|
name: string;
|
|
121
151
|
autocomplete: boolean;
|
|
122
|
-
onComplete: (ctx:
|
|
152
|
+
onComplete: (ctx: TDBICompleteCtx<TNamespace, string>) => TDBIValueName<number>[] | Promise<TDBIValueName<number>[]>;
|
|
123
153
|
description: string;
|
|
124
154
|
maxValue: number;
|
|
125
155
|
max_value: number;
|
|
126
156
|
minValue: number;
|
|
127
157
|
min_value: number;
|
|
128
158
|
required: boolean;
|
|
159
|
+
validate: (cfg: TDBIValidateCtx<TNamespace, number> & {
|
|
160
|
+
value: number;
|
|
161
|
+
step: "Autocomplete" | "Result";
|
|
162
|
+
}) => boolean | TDBIValueName<number> | Promise<boolean | TDBIValueName<number>>;
|
|
129
163
|
};
|
|
130
164
|
integerChoices(cfg: TDBIBaseOption & TDBIMinMaxValue & {
|
|
131
165
|
choices: TDBIValueName<number>[];
|
|
132
|
-
}): {
|
|
166
|
+
} & TDBIValidator<TDBIValidateCtx<TNamespace, number>, number, "Result", boolean>): {
|
|
133
167
|
type: Discord.ApplicationCommandOptionType;
|
|
134
168
|
name: string;
|
|
135
169
|
choices: TDBIValueName<number>[];
|
|
@@ -139,8 +173,12 @@ export declare class DBIChatInputOptions<TNamespace extends NamespaceEnums> {
|
|
|
139
173
|
minValue: number;
|
|
140
174
|
min_value: number;
|
|
141
175
|
required: boolean;
|
|
176
|
+
validate: (cfg: TDBIValidateCtx<TNamespace, number> & {
|
|
177
|
+
value: number;
|
|
178
|
+
step: "Result";
|
|
179
|
+
}) => boolean | Promise<boolean>;
|
|
142
180
|
};
|
|
143
|
-
integer(cfg: TDBIBaseOption & TDBIMinMaxValue): {
|
|
181
|
+
integer(cfg: TDBIBaseOption & TDBIMinMaxValue & TDBIValidator<TDBIValidateCtx<TNamespace, number>, number, "Result", boolean>): {
|
|
144
182
|
type: Discord.ApplicationCommandOptionType;
|
|
145
183
|
name: string;
|
|
146
184
|
description: string;
|
|
@@ -149,6 +187,10 @@ export declare class DBIChatInputOptions<TNamespace extends NamespaceEnums> {
|
|
|
149
187
|
minValue: number;
|
|
150
188
|
min_value: number;
|
|
151
189
|
required: boolean;
|
|
190
|
+
validate: (cfg: TDBIValidateCtx<TNamespace, number> & {
|
|
191
|
+
value: number;
|
|
192
|
+
step: "Result";
|
|
193
|
+
}) => boolean | Promise<boolean>;
|
|
152
194
|
};
|
|
153
195
|
boolean(cfg: TDBIBaseOption): {
|
|
154
196
|
type: Discord.ApplicationCommandOptionType;
|
|
@@ -164,31 +206,47 @@ export declare class DBIChatInputOptions<TNamespace extends NamespaceEnums> {
|
|
|
164
206
|
};
|
|
165
207
|
channel(cfg: TDBIBaseOption & {
|
|
166
208
|
channelTypes: Discord.ChannelType[];
|
|
167
|
-
}): {
|
|
209
|
+
} & TDBIValidator<TDBIValidateCtx<TNamespace, Discord.Channel>, Discord.Channel, "Result", boolean>): {
|
|
168
210
|
type: Discord.ApplicationCommandOptionType;
|
|
169
211
|
name: string;
|
|
170
212
|
description: string;
|
|
171
213
|
channelTypes: Discord.ChannelType[];
|
|
172
214
|
channel_types: Discord.ChannelType[];
|
|
173
215
|
required: boolean;
|
|
216
|
+
validate: (cfg: TDBIValidateCtx<TNamespace, Discord.Channel> & {
|
|
217
|
+
value: Discord.Channel;
|
|
218
|
+
step: "Result";
|
|
219
|
+
}) => boolean | Promise<boolean>;
|
|
174
220
|
};
|
|
175
|
-
role(cfg: TDBIBaseOption): {
|
|
221
|
+
role(cfg: TDBIBaseOption & TDBIValidator<TDBIValidateCtx<TNamespace, Discord.Role>, Discord.Role, "Result", boolean>): {
|
|
176
222
|
type: Discord.ApplicationCommandOptionType;
|
|
177
223
|
name: string;
|
|
178
224
|
description: string;
|
|
179
225
|
required: boolean;
|
|
226
|
+
validate: (cfg: TDBIValidateCtx<TNamespace, Discord.Role> & {
|
|
227
|
+
value: Discord.Role;
|
|
228
|
+
step: "Result";
|
|
229
|
+
}) => boolean | Promise<boolean>;
|
|
180
230
|
};
|
|
181
|
-
mentionable(cfg: TDBIBaseOption): {
|
|
231
|
+
mentionable(cfg: TDBIBaseOption & TDBIValidator<TDBIValidateCtx<TNamespace, Discord.Role | Discord.Channel | Discord.User>, Discord.Role | Discord.Channel | Discord.User, "Result", boolean>): {
|
|
182
232
|
type: Discord.ApplicationCommandOptionType;
|
|
183
233
|
name: string;
|
|
184
234
|
description: string;
|
|
185
235
|
required: boolean;
|
|
236
|
+
validate: (cfg: TDBIValidateCtx<TNamespace, Discord.User | Discord.Channel | Discord.Role> & {
|
|
237
|
+
value: Discord.User | Discord.Channel | Discord.Role;
|
|
238
|
+
step: "Result";
|
|
239
|
+
}) => boolean | Promise<boolean>;
|
|
186
240
|
};
|
|
187
|
-
user(cfg: TDBIBaseOption): {
|
|
241
|
+
user(cfg: TDBIBaseOption & TDBIValidator<TDBIValidateCtx<TNamespace, Discord.User>, Discord.User, "Result", boolean>): {
|
|
188
242
|
type: Discord.ApplicationCommandOptionType;
|
|
189
243
|
name: string;
|
|
190
244
|
description: string;
|
|
191
245
|
required: boolean;
|
|
246
|
+
validate: (cfg: TDBIValidateCtx<TNamespace, Discord.User> & {
|
|
247
|
+
value: Discord.User;
|
|
248
|
+
step: "Result";
|
|
249
|
+
}) => boolean | Promise<boolean>;
|
|
192
250
|
};
|
|
193
251
|
}
|
|
194
252
|
//# sourceMappingURL=ChatInputOptions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatInputOptions.d.ts","sourceRoot":"","sources":["../../../src/types/ChatInput/ChatInputOptions.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI;IAAE,KAAK,EAAE,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAC1D,MAAM,MAAM,cAAc,GAAG;
|
|
1
|
+
{"version":3,"file":"ChatInputOptions.d.ts","sourceRoot":"","sources":["../../../src/types/ChatInput/ChatInputOptions.ts"],"names":[],"mappings":"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"}
|