@mostfeatured/dbi 0.1.1 → 0.1.3
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/dist/types/other/FakeMessageInteraction.d.ts +1 -0
- package/dist/types/other/FakeMessageInteraction.d.ts.map +1 -1
- package/dist/types/other/FakeMessageInteraction.js +2 -0
- package/dist/types/other/FakeMessageInteraction.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
- package/src/types/other/FakeMessageInteraction.ts +3 -0
package/dist/Events.d.ts
CHANGED
|
@@ -24,21 +24,21 @@ export declare class Events<TNamespace extends NamespaceEnums> {
|
|
|
24
24
|
trigger(name: TDBIEventNames, data: any): Promise<boolean>;
|
|
25
25
|
on(eventName: "beforeInteraction" | "afterInteraction", handler: (data: IDBIBaseExecuteCtx<TNamespace>) => Promise<boolean> | boolean, options?: {
|
|
26
26
|
once: boolean;
|
|
27
|
-
}): (
|
|
27
|
+
}): () => any;
|
|
28
28
|
on(eventName: "interactionError", handler: (data: IDBIBaseExecuteCtx<TNamespace> & {
|
|
29
29
|
error: any;
|
|
30
30
|
}) => Promise<boolean> | boolean, options?: {
|
|
31
31
|
once: boolean;
|
|
32
|
-
}): (
|
|
32
|
+
}): () => any;
|
|
33
33
|
on(eventName: "beforeEvent" | "afterEvent", handler: (data: TDBIEventHandlerCtx<TNamespace>) => Promise<boolean> | boolean, options?: {
|
|
34
34
|
once: boolean;
|
|
35
|
-
}): (
|
|
35
|
+
}): () => any;
|
|
36
36
|
on(eventName: "eventError", handler: (data: TDBIEventHandlerCtx<TNamespace> & {
|
|
37
37
|
error: any;
|
|
38
38
|
dbiEvent: DBIEvent<TNamespace>;
|
|
39
39
|
}) => Promise<boolean> | boolean, options?: {
|
|
40
40
|
once: boolean;
|
|
41
|
-
}): (
|
|
41
|
+
}): () => any;
|
|
42
42
|
on(eventName: "interactionRateLimit", handler: (data: Omit<IDBIBaseExecuteCtx<TNamespace>, "other" | "setRateLimit"> & {
|
|
43
43
|
rateLimit: {
|
|
44
44
|
type: TDBIRateLimitTypes;
|
|
@@ -47,7 +47,7 @@ export declare class Events<TNamespace extends NamespaceEnums> {
|
|
|
47
47
|
};
|
|
48
48
|
}) => Promise<boolean> | boolean, options?: {
|
|
49
49
|
once: boolean;
|
|
50
|
-
}): (
|
|
50
|
+
}): () => any;
|
|
51
51
|
on(eventName: "messageCommandArgumentError", handler: (data: {
|
|
52
52
|
message: Discord.Message;
|
|
53
53
|
interaction: FakeMessageInteraction;
|
|
@@ -64,7 +64,7 @@ export declare class Events<TNamespace extends NamespaceEnums> {
|
|
|
64
64
|
};
|
|
65
65
|
}) => Promise<boolean> | boolean, options?: {
|
|
66
66
|
once: boolean;
|
|
67
|
-
}): (
|
|
67
|
+
}): () => any;
|
|
68
68
|
off(eventName: TDBIEventNames, handler: (data: any) => Promise<boolean> | boolean): ((data: any) => boolean | Promise<boolean>)[];
|
|
69
69
|
}
|
|
70
70
|
//# sourceMappingURL=Events.d.ts.map
|
package/dist/Events.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Events.d.ts","sourceRoot":"","sources":["../src/Events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,oCAAoC,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"Events.d.ts","sourceRoot":"","sources":["../src/Events.ts"],"names":[],"mappings":"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"}
|
package/dist/Events.js
CHANGED
package/dist/Events.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Events.js","sourceRoot":"","sources":["../src/Events.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"Events.js","sourceRoot":"","sources":["../src/Events.ts"],"names":[],"mappings":";;;AA6BA,MAAa,MAAM;IACjB,GAAG,CAAkB;IACrB,QAAQ,CAAmE;IAC3E,YAAY,GAAoB;QAC9B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QAEf,IAAI,CAAC,QAAQ,GAAG;YACd,iBAAiB,EAAE,EAAE;YACrB,gBAAgB,EAAE,EAAE;YACpB,oBAAoB,EAAE,EAAE;YACxB,WAAW,EAAE,EAAE;YACf,UAAU,EAAE,EAAE;YACd,gBAAgB,EAAE,EAAE;YACpB,UAAU,EAAE,EAAE;SACf,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAoB,EAAE,IAAS;QAC3C,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,QAAQ,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAC;SACrC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAgED,EAAE,CACA,SAAyB,EACzB,OAAkD,EAClD,UAA6B,EAAE,IAAI,EAAE,KAAK,EAAE;QAE5C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC;YAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;QAC5E,IAAI,OAAO,CAAC,IAAI,EAAE;YAChB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE;gBACf,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;gBACvB,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC,CAAC;YACF,IAAI,CAAC,EAAE,CAAC,SAAgB,EAAE,CAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACrD,OAAO,GAAG,EAAE;gBACV,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YACzB,CAAC,CAAC;SACH;aAAM;YACL,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvC,OAAO,GAAG,EAAE;gBACV,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC/B,CAAC,CAAC;SACH;IACH,CAAC;IAED,GAAG,CACD,SAAyB,EACzB,OAAkD;QAElD,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC;YAAE,OAAO,EAAE,CAAC;QAClB,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC;CACF;AAzHD,wBAyHC","sourcesContent":["import { NamespaceEnums, NamespaceData } from \"../generated/namespaceData\";\r\nimport { DBI } from \"./DBI\";\r\nimport { TDBIMessageCommandArgumentErrorTypes } from \"./methods/handleMessageCommands\";\r\nimport { TDBIValueName } from \"./types/ChatInput/ChatInputOptions\";\r\nimport { ClientEvents, DBIEvent } from \"./types/Event\";\r\nimport { IDBIBaseExecuteCtx, TDBIRateLimitTypes } from \"./types/Interaction\";\r\nimport { FakeMessageInteraction } from \"./types/other/FakeMessageInteraction\";\r\nimport { DBILocale } from \"./types/other/Locale\";\r\nimport Discord from \"discord.js\";\r\n\r\nexport type TDBIEventNames =\r\n | \"beforeInteraction\"\r\n | \"afterInteraction\"\r\n | \"interactionRateLimit\"\r\n | \"beforeEvent\"\r\n | \"afterEvent\"\r\n | \"interactionError\"\r\n | \"eventError\"\r\n | \"messageCommandArgumentError\";\r\n\r\nexport type TDBIEventHandlerCtx<TNamespace extends NamespaceEnums> = {\r\n [K in keyof (ClientEvents & NamespaceData[TNamespace][\"customEvents\"])]: {\r\n other: Record<string, any>;\r\n locale?: { guild: DBILocale<TNamespace> };\r\n eventName: K;\r\n dbiEvent: DBIEvent<TNamespace>;\r\n } & (ClientEvents & NamespaceData[TNamespace][\"customEvents\"])[K];\r\n}[keyof (ClientEvents & NamespaceData[TNamespace][\"customEvents\"])];\r\n\r\nexport class Events<TNamespace extends NamespaceEnums> {\r\n DBI: DBI<TNamespace>;\r\n handlers: Record<string, Array<(data: any) => boolean | Promise<boolean>>>;\r\n constructor(DBI: DBI<TNamespace>) {\r\n this.DBI = DBI;\r\n\r\n this.handlers = {\r\n beforeInteraction: [],\r\n afterInteraction: [],\r\n interactionRateLimit: [],\r\n beforeEvent: [],\r\n afterEvent: [],\r\n interactionError: [],\r\n eventError: [],\r\n };\r\n }\r\n\r\n async trigger(name: TDBIEventNames, data: any): Promise<boolean> {\r\n let handlers = this.handlers[name];\r\n if (!handlers) return true;\r\n for (let i = 0; i < handlers.length; i++) {\r\n const handler = handlers[i];\r\n let returned = await handler(data);\r\n if (returned !== true) return false;\r\n }\r\n return true;\r\n }\r\n\r\n on(\r\n eventName: \"beforeInteraction\" | \"afterInteraction\",\r\n handler: (\r\n data: IDBIBaseExecuteCtx<TNamespace>\r\n ) => Promise<boolean> | boolean,\r\n options?: { once: boolean }\r\n ): () => any;\r\n\r\n on(\r\n eventName: \"interactionError\",\r\n handler: (\r\n data: IDBIBaseExecuteCtx<TNamespace> & { error: any }\r\n ) => Promise<boolean> | boolean,\r\n options?: { once: boolean }\r\n ): () => any;\r\n\r\n on(\r\n eventName: \"beforeEvent\" | \"afterEvent\",\r\n handler: (\r\n data: TDBIEventHandlerCtx<TNamespace>\r\n ) => Promise<boolean> | boolean,\r\n options?: { once: boolean }\r\n ): () => any;\r\n\r\n on(\r\n eventName: \"eventError\",\r\n handler: (\r\n data: TDBIEventHandlerCtx<TNamespace> & {\r\n error: any;\r\n dbiEvent: DBIEvent<TNamespace>;\r\n }\r\n ) => Promise<boolean> | boolean,\r\n options?: { once: boolean }\r\n ): () => any;\r\n\r\n on(\r\n eventName: \"interactionRateLimit\",\r\n handler: (\r\n data: Omit<IDBIBaseExecuteCtx<TNamespace>, \"other\" | \"setRateLimit\"> & {\r\n rateLimit: { type: TDBIRateLimitTypes; duration: number; at: number };\r\n }\r\n ) => Promise<boolean> | boolean,\r\n options?: { once: boolean }\r\n ): () => any;\r\n\r\n on(\r\n eventName: \"messageCommandArgumentError\",\r\n handler: (data: {\r\n message: Discord.Message;\r\n interaction: FakeMessageInteraction;\r\n error: {\r\n type: TDBIMessageCommandArgumentErrorTypes;\r\n option: any;\r\n index: number;\r\n extra?: any;\r\n };\r\n value: any;\r\n locale: { guild?: DBILocale<TNamespace>; user: DBILocale<TNamespace> };\r\n }) => Promise<boolean> | boolean,\r\n options?: { once: boolean }\r\n ): () => any;\r\n\r\n on(\r\n eventName: TDBIEventNames,\r\n handler: (data: any) => Promise<boolean> | boolean,\r\n options: { once: boolean } = { once: false }\r\n ): () => any {\r\n if (!this.handlers.hasOwnProperty(eventName)) this.handlers[eventName] = [];\r\n if (options.once) {\r\n let h = (data) => {\r\n this.off(eventName, h);\r\n return handler(data);\r\n };\r\n this.on(eventName as any, h as any, { once: false });\r\n return () => {\r\n this.off(eventName, h);\r\n };\r\n } else {\r\n this.handlers[eventName].push(handler);\r\n return () => {\r\n this.off(eventName, handler);\r\n };\r\n }\r\n }\r\n\r\n off(\r\n eventName: TDBIEventNames,\r\n handler: (data: any) => Promise<boolean> | boolean\r\n ) {\r\n let l = this.handlers[eventName];\r\n if (!l) return [];\r\n return l.splice(l.indexOf(handler), 1);\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleMessageCommands.d.ts","sourceRoot":"","sources":["../../src/methods/handleMessageCommands.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"handleMessageCommands.d.ts","sourceRoot":"","sources":["../../src/methods/handleMessageCommands.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,OAAO,EAGR,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAO7B,MAAM,MAAM,oCAAoC,GAC5C,uBAAuB,GACvB,WAAW,GACX,WAAW,GACX,eAAe,GACf,gBAAgB,GAChB,YAAY,GACZ,YAAY,GACZ,eAAe,GACf,WAAW,GACX,WAAW,GACX,gBAAgB,GAChB,aAAa,GACb,gBAAgB,GAChB,aAAa,GACb,oBAAoB,GACpB,uBAAuB,CAAC;AAE5B,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,GAAG,CAAC,cAAc,CAAC,EACxB,OAAO,EAAE,OAAO,iBA2ZjB"}
|
|
@@ -6,23 +6,24 @@ const FakeMessageInteraction_1 = require("../types/other/FakeMessageInteraction"
|
|
|
6
6
|
const INTEGER_REGEX = /^-?\d+$/;
|
|
7
7
|
const NUMBER_REGEX = /^-?\d+(?:\.\d+)?$/;
|
|
8
8
|
async function handleMessageCommands(dbi, message) {
|
|
9
|
-
const chatInputs = dbi.data.interactions.filter(i => i.type === "ChatInput");
|
|
9
|
+
const chatInputs = dbi.data.interactions.filter((i) => i.type === "ChatInput");
|
|
10
10
|
const prefixes = dbi.config.messageCommands.prefixes ?? [];
|
|
11
11
|
if (!prefixes.length)
|
|
12
12
|
return;
|
|
13
13
|
const content = message.content;
|
|
14
|
-
const usedPrefix = prefixes.find(p => content.startsWith(p));
|
|
14
|
+
const usedPrefix = prefixes.find((p) => content.startsWith(p));
|
|
15
15
|
if (!usedPrefix)
|
|
16
16
|
return;
|
|
17
17
|
const contentWithoutPrefix = content.slice(usedPrefix?.length ?? 0);
|
|
18
18
|
const contentLower = contentWithoutPrefix.toLowerCase();
|
|
19
|
-
let locale = message.guild.preferredLocale?.split("-")?.at(0) ||
|
|
19
|
+
let locale = message.guild.preferredLocale?.split("-")?.at(0) ||
|
|
20
|
+
dbi.config.defaults.locale;
|
|
20
21
|
let usedAlias;
|
|
21
|
-
let chatInput = chatInputs.find(i => {
|
|
22
|
+
let chatInput = chatInputs.find((i) => {
|
|
22
23
|
let found = contentLower.startsWith(i.name);
|
|
23
24
|
if (found)
|
|
24
25
|
return true;
|
|
25
|
-
let alias = i.other?.messageCommand?.aliases?.find(a => contentLower.startsWith(a));
|
|
26
|
+
let alias = i.other?.messageCommand?.aliases?.find((a) => contentLower.startsWith(a));
|
|
26
27
|
if (alias) {
|
|
27
28
|
usedAlias = alias;
|
|
28
29
|
return true;
|
|
@@ -31,12 +32,13 @@ async function handleMessageCommands(dbi, message) {
|
|
|
31
32
|
});
|
|
32
33
|
let commandName = usedAlias ?? chatInput?.name;
|
|
33
34
|
if (!chatInput) {
|
|
34
|
-
fLoop: for (const [localeInterName, localeData] of dbi.data
|
|
35
|
+
fLoop: for (const [localeInterName, localeData] of dbi.data
|
|
36
|
+
.interactionLocales) {
|
|
35
37
|
for (const [localeName, translation] of Object.entries(localeData.data || {})) {
|
|
36
38
|
if (contentLower.startsWith(translation.name)) {
|
|
37
39
|
commandName = translation.name;
|
|
38
40
|
locale = localeName;
|
|
39
|
-
chatInput = chatInputs.find(i => i.name === localeData.name);
|
|
41
|
+
chatInput = chatInputs.find((i) => i.name === localeData.name);
|
|
40
42
|
break fLoop;
|
|
41
43
|
}
|
|
42
44
|
}
|
|
@@ -64,17 +66,17 @@ async function handleMessageCommands(dbi, message) {
|
|
|
64
66
|
if (option.autocomplete && option.onComplete) {
|
|
65
67
|
let choices = await option.onComplete({
|
|
66
68
|
interaction,
|
|
67
|
-
value
|
|
69
|
+
value,
|
|
68
70
|
});
|
|
69
71
|
if (!choices.length)
|
|
70
72
|
choices = await option.onComplete({
|
|
71
73
|
interaction,
|
|
72
|
-
value: ""
|
|
74
|
+
value: "",
|
|
73
75
|
});
|
|
74
76
|
if (choices.length > 20)
|
|
75
77
|
throw new Error("Autocomplete returned more than 20 choices.");
|
|
76
78
|
lastExtra = choices;
|
|
77
|
-
if (!choices.find(c => c.name === value || c.value === value)) {
|
|
79
|
+
if (!choices.find((c) => c.name === value || c.value === value)) {
|
|
78
80
|
if (value) {
|
|
79
81
|
errorType = "InvalidCompleteChoice";
|
|
80
82
|
break;
|
|
@@ -88,9 +90,16 @@ async function handleMessageCommands(dbi, message) {
|
|
|
88
90
|
}
|
|
89
91
|
if (option.choices) {
|
|
90
92
|
const localeData = dbi.data.interactionLocales.get(chatInput.name)?.data;
|
|
91
|
-
const choicesLocaleData = localeData?.[locale]?.options?.[option.name]
|
|
92
|
-
|
|
93
|
-
|
|
93
|
+
const choicesLocaleData = localeData?.[locale]?.options?.[option.name]
|
|
94
|
+
?.choices;
|
|
95
|
+
if (!option.choices.find((c) => c.name === value ||
|
|
96
|
+
c.value === value ||
|
|
97
|
+
(choicesLocaleData?.[c.value] &&
|
|
98
|
+
choicesLocaleData?.[c.value] === value))) {
|
|
99
|
+
lastExtra = option.choices.map((c) => ({
|
|
100
|
+
name: choicesLocaleData?.[c.value] ?? c.name,
|
|
101
|
+
value: c.value,
|
|
102
|
+
}));
|
|
94
103
|
if (value) {
|
|
95
104
|
errorType = "InvalidChoice";
|
|
96
105
|
break;
|
|
@@ -102,11 +111,11 @@ async function handleMessageCommands(dbi, message) {
|
|
|
102
111
|
}
|
|
103
112
|
break;
|
|
104
113
|
}
|
|
105
|
-
if (option.minLength && value
|
|
114
|
+
if (option.minLength && value?.length < option.minLength) {
|
|
106
115
|
errorType = "MinLength";
|
|
107
116
|
break;
|
|
108
117
|
}
|
|
109
|
-
if (option.maxLength && value
|
|
118
|
+
if (option.maxLength && value?.length > option.maxLength) {
|
|
110
119
|
errorType = "MaxLength";
|
|
111
120
|
break;
|
|
112
121
|
}
|
|
@@ -119,17 +128,17 @@ async function handleMessageCommands(dbi, message) {
|
|
|
119
128
|
if (option.autocomplete && option.onComplete) {
|
|
120
129
|
let choices = await option.onComplete({
|
|
121
130
|
interaction,
|
|
122
|
-
value
|
|
131
|
+
value,
|
|
123
132
|
});
|
|
124
133
|
if (!choices.length)
|
|
125
134
|
choices = await option.onComplete({
|
|
126
135
|
interaction,
|
|
127
|
-
value: ""
|
|
136
|
+
value: "",
|
|
128
137
|
});
|
|
129
138
|
if (choices.length > 20)
|
|
130
139
|
throw new Error("Autocomplete returned more than 20 choices.");
|
|
131
140
|
lastExtra = choices;
|
|
132
|
-
if (!choices.find(c => c.value === parsedInt || c.name === value)) {
|
|
141
|
+
if (!choices.find((c) => c.value === parsedInt || c.name === value)) {
|
|
133
142
|
if (value) {
|
|
134
143
|
errorType = "InvalidCompleteChoice";
|
|
135
144
|
break;
|
|
@@ -144,9 +153,16 @@ async function handleMessageCommands(dbi, message) {
|
|
|
144
153
|
}
|
|
145
154
|
if (option.choices) {
|
|
146
155
|
const localeData = dbi.data.interactionLocales.get(chatInput.name)?.data;
|
|
147
|
-
const choicesLocaleData = localeData?.[locale]?.options?.[option.name]
|
|
148
|
-
|
|
149
|
-
|
|
156
|
+
const choicesLocaleData = localeData?.[locale]?.options?.[option.name]
|
|
157
|
+
?.choices;
|
|
158
|
+
if (!option.choices.find((c) => c.value === parsedInt ||
|
|
159
|
+
c.name === value ||
|
|
160
|
+
(choicesLocaleData?.[c.value] &&
|
|
161
|
+
choicesLocaleData?.[c.value] === value))) {
|
|
162
|
+
lastExtra = option.choices.map((c) => ({
|
|
163
|
+
name: choicesLocaleData?.[c.value] ?? c.name,
|
|
164
|
+
value: c.value,
|
|
165
|
+
}));
|
|
150
166
|
if (value) {
|
|
151
167
|
errorType = "InvalidChoice";
|
|
152
168
|
break;
|
|
@@ -179,17 +195,17 @@ async function handleMessageCommands(dbi, message) {
|
|
|
179
195
|
if (option.autocomplete && option.onComplete) {
|
|
180
196
|
let choices = await option.onComplete({
|
|
181
197
|
interaction,
|
|
182
|
-
value
|
|
198
|
+
value,
|
|
183
199
|
});
|
|
184
200
|
if (!choices.length)
|
|
185
201
|
choices = await option.onComplete({
|
|
186
202
|
interaction,
|
|
187
|
-
value: ""
|
|
203
|
+
value: "",
|
|
188
204
|
});
|
|
189
205
|
if (choices.length > 20)
|
|
190
206
|
throw new Error("Autocomplete returned more than 20 choices.");
|
|
191
207
|
lastExtra = choices;
|
|
192
|
-
if (!choices.find(c => c.value === parsedFloat || c.name === value)) {
|
|
208
|
+
if (!choices.find((c) => c.value === parsedFloat || c.name === value)) {
|
|
193
209
|
if (value) {
|
|
194
210
|
errorType = "InvalidCompleteChoice";
|
|
195
211
|
break;
|
|
@@ -204,9 +220,16 @@ async function handleMessageCommands(dbi, message) {
|
|
|
204
220
|
}
|
|
205
221
|
if (option.choices) {
|
|
206
222
|
const localeData = dbi.data.interactionLocales.get(chatInput.name)?.data;
|
|
207
|
-
const choicesLocaleData = localeData?.[locale]?.options?.[option.name]
|
|
208
|
-
|
|
209
|
-
|
|
223
|
+
const choicesLocaleData = localeData?.[locale]?.options?.[option.name]
|
|
224
|
+
?.choices;
|
|
225
|
+
if (!option.choices.find((c) => c.value === parsedFloat ||
|
|
226
|
+
c.name === value ||
|
|
227
|
+
(choicesLocaleData?.[c.value] &&
|
|
228
|
+
choicesLocaleData?.[c.value] === value))) {
|
|
229
|
+
lastExtra = option.choices.map((c) => ({
|
|
230
|
+
name: choicesLocaleData?.[c.value] ?? c.name,
|
|
231
|
+
value: c.value,
|
|
232
|
+
}));
|
|
210
233
|
if (value) {
|
|
211
234
|
errorType = "InvalidChoice";
|
|
212
235
|
break;
|
|
@@ -234,14 +257,16 @@ async function handleMessageCommands(dbi, message) {
|
|
|
234
257
|
}
|
|
235
258
|
case discord_js_1.ApplicationCommandOptionType.Boolean: {
|
|
236
259
|
let boolKeys = Object.keys(dbi.config.messageCommands.typeAliases.booleans);
|
|
237
|
-
if (option.required && !boolKeys.includes(value
|
|
260
|
+
if (option.required && !boolKeys.includes(value?.toLowerCase?.())) {
|
|
238
261
|
errorType = "InvalidBoolean";
|
|
239
262
|
break;
|
|
240
263
|
}
|
|
241
264
|
break;
|
|
242
265
|
}
|
|
243
266
|
case discord_js_1.ApplicationCommandOptionType.User: {
|
|
244
|
-
await message.client.users
|
|
267
|
+
await message.client.users
|
|
268
|
+
.fetch(interaction.options.getUserId(option.name))
|
|
269
|
+
.catch(() => { });
|
|
245
270
|
if (option.required && !interaction.options.getUser(option.name)) {
|
|
246
271
|
errorType = "InvalidUser";
|
|
247
272
|
break;
|
|
@@ -249,15 +274,20 @@ async function handleMessageCommands(dbi, message) {
|
|
|
249
274
|
break;
|
|
250
275
|
}
|
|
251
276
|
case discord_js_1.ApplicationCommandOptionType.Channel: {
|
|
252
|
-
await message.client.channels
|
|
253
|
-
|
|
277
|
+
await message.client.channels
|
|
278
|
+
.fetch(interaction.options.getChannelId(option.name))
|
|
279
|
+
.catch(() => { });
|
|
280
|
+
if (option.required &&
|
|
281
|
+
!interaction.options.getChannel(option.name, null, option.channelTypes)) {
|
|
254
282
|
errorType = "InvalidChannel";
|
|
255
283
|
break;
|
|
256
284
|
}
|
|
257
285
|
break;
|
|
258
286
|
}
|
|
259
287
|
case discord_js_1.ApplicationCommandOptionType.Role: {
|
|
260
|
-
await message.guild.roles
|
|
288
|
+
await message.guild.roles
|
|
289
|
+
.fetch(interaction.options.getRoleId(option.name))
|
|
290
|
+
.catch(() => { });
|
|
261
291
|
if (option.required && !interaction.options.getRole(option.name)) {
|
|
262
292
|
errorType = "InvalidRole";
|
|
263
293
|
break;
|
|
@@ -269,7 +299,8 @@ async function handleMessageCommands(dbi, message) {
|
|
|
269
299
|
await message.guild.roles.fetch(mentionableId).catch(() => { });
|
|
270
300
|
await message.client.channels.fetch(mentionableId).catch(() => { });
|
|
271
301
|
await message.client.users.fetch(mentionableId).catch(() => { });
|
|
272
|
-
if (option.required &&
|
|
302
|
+
if (option.required &&
|
|
303
|
+
!interaction.options.getMentionable(option.name)) {
|
|
273
304
|
errorType = "InvalidMentionable";
|
|
274
305
|
break;
|
|
275
306
|
}
|
|
@@ -297,16 +328,19 @@ async function handleMessageCommands(dbi, message) {
|
|
|
297
328
|
interaction,
|
|
298
329
|
message,
|
|
299
330
|
locale: {
|
|
300
|
-
user: dbi.data.locales.get(interaction.locale) ||
|
|
301
|
-
|
|
331
|
+
user: dbi.data.locales.get(interaction.locale) ||
|
|
332
|
+
dbi.data.locales.get(dbi.config.defaults.locale),
|
|
333
|
+
guild: message.guild?.preferredLocale
|
|
334
|
+
? dbi.data.locales.get(message.guild?.preferredLocale?.split("-")?.at(0)) || dbi.data.locales.get(dbi.config.defaults.locale)
|
|
335
|
+
: null,
|
|
302
336
|
},
|
|
303
337
|
error: {
|
|
304
338
|
type: errorType,
|
|
305
339
|
option: lastOption,
|
|
306
340
|
extra: lastExtra,
|
|
307
|
-
index: lastIndex
|
|
341
|
+
index: lastIndex,
|
|
308
342
|
},
|
|
309
|
-
value: lastValue
|
|
343
|
+
value: lastValue,
|
|
310
344
|
});
|
|
311
345
|
if (!res)
|
|
312
346
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleMessageCommands.js","sourceRoot":"","sources":["../../src/methods/handleMessageCommands.ts"],"names":[],"mappings":"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","sourcesContent":["import { ApplicationCommandType, ChatInputCommandInteraction, Message, MessagePayload, ApplicationCommandOptionType } from \"discord.js\";\r\nimport { NamespaceEnums } from \"../../generated/namespaceData\";\r\nimport { DBI } from \"../DBI\";\r\nimport { FakeMessageInteraction } from \"../types/other/FakeMessageInteraction\";\r\nimport { TDBILocaleString } from \"../types/other/Locale\";\r\n\r\nconst INTEGER_REGEX = /^-?\\d+$/;\r\nconst NUMBER_REGEX = /^-?\\d+(?:\\.\\d+)?$/;\r\n\r\nexport type TDBIMessageCommandArgumentErrorTypes = \"MissingRequiredOption\" | \"MinLength\" | \"MaxLength\" | \"InvalidChoice\" | \"InvalidInteger\" | \"MinInteger\" | \"MaxInteger\" | \"InvalidNumber\" | \"MinNumber\" | \"MaxNumber\" | \"InvalidBoolean\" | \"InvalidUser\" | \"InvalidChannel\" | \"InvalidRole\" | \"InvalidMentionable\" | \"InvalidCompleteChoice\";\r\n\r\nexport async function handleMessageCommands(dbi: DBI<NamespaceEnums>, message: Message) {\r\n const chatInputs = dbi.data.interactions.filter(i => i.type === \"ChatInput\");\r\n const prefixes = dbi.config.messageCommands.prefixes ?? [];\r\n if (!prefixes.length) return;\r\n const content = message.content;\r\n const usedPrefix = prefixes.find(p => content.startsWith(p));\r\n if (!usedPrefix) return;\r\n const contentWithoutPrefix = content.slice(usedPrefix?.length ?? 0);\r\n const contentLower = contentWithoutPrefix.toLowerCase();\r\n\r\n let locale: string = message.guild.preferredLocale?.split(\"-\")?.at(0) || dbi.config.defaults.locale as any;\r\n let usedAlias: string | undefined;\r\n let chatInput = chatInputs.find(i => {\r\n let found = contentLower.startsWith(i.name);\r\n if (found) return true;\r\n let alias = i.other?.messageCommand?.aliases?.find(a => contentLower.startsWith(a));\r\n if (alias) {\r\n usedAlias = alias;\r\n return true;\r\n }\r\n return false;\r\n });\r\n let commandName = usedAlias ?? chatInput?.name;\r\n\r\n if (!chatInput) {\r\n fLoop: for (const [localeInterName, localeData] of dbi.data.interactionLocales) {\r\n for (const [localeName, translation] of Object.entries(localeData.data || {})) {\r\n if (contentLower.startsWith(translation.name)) {\r\n commandName = translation.name;\r\n locale = localeName;\r\n chatInput = chatInputs.find(i => i.name === localeData.name);\r\n break fLoop;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (!chatInput) return;\r\n\r\n const interaction = new FakeMessageInteraction(dbi, message, chatInput as any, locale, commandName, usedPrefix);\r\n\r\n if (chatInput.options.length) {\r\n let errorType: TDBIMessageCommandArgumentErrorTypes;\r\n let lastOption: any;\r\n let lastValue: any;\r\n let lastExtra: any;\r\n let lastIndex: number;\r\n for (let i = 0; i < chatInput.options.length; i++) {\r\n lastIndex = i;\r\n const option: any = interaction.dbiChatInputOptions[i];\r\n const value = interaction.parsedArgs.get(option.name)?.value;\r\n\r\n lastOption = option;\r\n lastValue = value;\r\n\r\n switch (option.type) {\r\n case ApplicationCommandOptionType.String: {\r\n\r\n if (!option.required && !value) break;\r\n\r\n if (option.autocomplete && option.onComplete) {\r\n let choices = await option.onComplete({\r\n interaction,\r\n value\r\n });\r\n if (!choices.length) choices = await option.onComplete({\r\n interaction,\r\n value: \"\"\r\n });\r\n if (choices.length > 20) throw new Error(\"Autocomplete returned more than 20 choices.\");\r\n lastExtra = choices;\r\n if (!choices.find(c => c.name === value || c.value === value)) {\r\n if (value) {\r\n errorType = \"InvalidCompleteChoice\";\r\n break;\r\n } else if (option.required && !value) {\r\n errorType = \"MissingRequiredOption\";\r\n break;\r\n }\r\n }\r\n option._choices = choices;\r\n }\r\n\r\n if (option.choices) {\r\n const localeData = dbi.data.interactionLocales.get(chatInput.name)?.data;\r\n const choicesLocaleData = localeData?.[locale as TDBILocaleString]?.options?.[option.name]?.choices;\r\n if (!option.choices.find(c => c.name === value || c.value === value || (choicesLocaleData?.[c.value] && choicesLocaleData?.[c.value] === value))) {\r\n lastExtra = option.choices.map(c => ({ name: choicesLocaleData?.[c.value] ?? c.name, value: c.value }));\r\n if (value) {\r\n errorType = \"InvalidChoice\";\r\n break;\r\n } else if (option.required && !value) {\r\n errorType = \"MissingRequiredOption\";\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n\r\n if (option.minLength && value.length < option.minLength) {\r\n errorType = \"MinLength\";\r\n break;\r\n }\r\n if (option.maxLength && value.length > option.maxLength) {\r\n errorType = \"MaxLength\";\r\n break;\r\n }\r\n\r\n break;\r\n }\r\n case ApplicationCommandOptionType.Integer: {\r\n if (!option.required && !value) break;\r\n\r\n let parsedInt = parseInt(value);\r\n\r\n if (option.autocomplete && option.onComplete) {\r\n let choices = await option.onComplete({\r\n interaction,\r\n value\r\n });\r\n if (!choices.length) choices = await option.onComplete({\r\n interaction,\r\n value: \"\"\r\n });\r\n if (choices.length > 20) throw new Error(\"Autocomplete returned more than 20 choices.\");\r\n lastExtra = choices;\r\n if (!choices.find(c => c.value === parsedInt || c.name === value)) {\r\n if (value) {\r\n errorType = \"InvalidCompleteChoice\";\r\n break;\r\n } else if (option.required && !value) {\r\n errorType = \"MissingRequiredOption\";\r\n break;\r\n }\r\n }\r\n option._choices = choices;\r\n break;\r\n }\r\n\r\n if (option.choices) {\r\n const localeData = dbi.data.interactionLocales.get(chatInput.name)?.data;\r\n const choicesLocaleData = localeData?.[locale as TDBILocaleString]?.options?.[option.name]?.choices;\r\n if (!option.choices.find(c => c.value === parsedInt || c.name === value || (choicesLocaleData?.[c.value] && choicesLocaleData?.[c.value] === value))) {\r\n lastExtra = option.choices.map(c => ({ name: choicesLocaleData?.[c.value] ?? c.name, value: c.value }));\r\n if (value) {\r\n errorType = \"InvalidChoice\";\r\n break;\r\n } else if (option.required && !value) {\r\n errorType = \"MissingRequiredOption\";\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n\r\n if (!INTEGER_REGEX.test(value)) {\r\n errorType = \"InvalidInteger\";\r\n break;\r\n }\r\n\r\n if (option.minValue && parsedInt < option.minValue) {\r\n errorType = \"MinInteger\";\r\n break;\r\n }\r\n\r\n if (option.maxValue && parsedInt > option.maxValue) {\r\n errorType = \"MaxInteger\";\r\n break;\r\n }\r\n\r\n break;\r\n }\r\n case ApplicationCommandOptionType.Number: {\r\n if (!option.required && !value) break;\r\n\r\n let parsedFloat = parseFloat(value);\r\n\r\n if (option.autocomplete && option.onComplete) {\r\n let choices = await option.onComplete({\r\n interaction,\r\n value\r\n });\r\n if (!choices.length) choices = await option.onComplete({\r\n interaction,\r\n value: \"\"\r\n });\r\n if (choices.length > 20) throw new Error(\"Autocomplete returned more than 20 choices.\");\r\n lastExtra = choices;\r\n if (!choices.find(c => c.value === parsedFloat || c.name === value)) {\r\n if (value) {\r\n errorType = \"InvalidCompleteChoice\";\r\n break;\r\n } else if (option.required && !value) {\r\n errorType = \"MissingRequiredOption\";\r\n break;\r\n }\r\n }\r\n option._choices = choices;\r\n break;\r\n }\r\n\r\n if (option.choices) {\r\n const localeData = dbi.data.interactionLocales.get(chatInput.name)?.data;\r\n const choicesLocaleData = localeData?.[locale as TDBILocaleString]?.options?.[option.name]?.choices;\r\n if (!option.choices.find(c => c.value === parsedFloat || c.name === value || (choicesLocaleData?.[c.value] && choicesLocaleData?.[c.value] === value))) {\r\n lastExtra = option.choices.map(c => ({ name: choicesLocaleData?.[c.value] ?? c.name, value: c.value }));\r\n if (value) {\r\n errorType = \"InvalidChoice\";\r\n break;\r\n } else if (option.required && !value) {\r\n errorType = \"MissingRequiredOption\";\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n\r\n if (!NUMBER_REGEX.test(value)) {\r\n errorType = \"InvalidNumber\";\r\n break;\r\n }\r\n\r\n if (option.minValue && parsedFloat < option.minValue) {\r\n errorType = \"MinNumber\";\r\n break;\r\n }\r\n\r\n if (option.maxValue && parsedFloat > option.maxValue) {\r\n errorType = \"MaxNumber\";\r\n break;\r\n }\r\n break;\r\n }\r\n case ApplicationCommandOptionType.Boolean: {\r\n let boolKeys = Object.keys(dbi.config.messageCommands.typeAliases.booleans);\r\n if (option.required && !boolKeys.includes(value.toLowerCase())) {\r\n errorType = \"InvalidBoolean\";\r\n break;\r\n }\r\n break;\r\n }\r\n case ApplicationCommandOptionType.User: {\r\n await message.client.users.fetch(interaction.options.getUserId(option.name)).catch(() => { });\r\n if (option.required && !interaction.options.getUser(option.name)) {\r\n errorType = \"InvalidUser\";\r\n break;\r\n }\r\n break;\r\n }\r\n case ApplicationCommandOptionType.Channel: {\r\n await message.client.channels.fetch(interaction.options.getChannelId(option.name)).catch(() => { });\r\n if (option.required && !interaction.options.getChannel(option.name, null, option.channelTypes)) {\r\n errorType = \"InvalidChannel\";\r\n break;\r\n }\r\n break;\r\n }\r\n case ApplicationCommandOptionType.Role: {\r\n await message.guild.roles.fetch(interaction.options.getRoleId(option.name)).catch(() => { });\r\n if (option.required && !interaction.options.getRole(option.name)) {\r\n errorType = \"InvalidRole\";\r\n break;\r\n }\r\n break;\r\n }\r\n case ApplicationCommandOptionType.Mentionable: {\r\n let mentionableId = interaction.options.getMentionableId(option.name);\r\n await message.guild.roles.fetch(mentionableId).catch(() => { });\r\n await message.client.channels.fetch(mentionableId).catch(() => { });\r\n await message.client.users.fetch(mentionableId).catch(() => { });\r\n if (option.required && !interaction.options.getMentionable(option.name)) {\r\n errorType = \"InvalidMentionable\";\r\n break;\r\n }\r\n break;\r\n }\r\n case ApplicationCommandOptionType.Attachment: {\r\n if (option.required && !value) {\r\n errorType = \"MissingRequiredOption\";\r\n }\r\n break;\r\n }\r\n }\r\n\r\n if (errorType) {\r\n break;\r\n } else {\r\n lastExtra = null;\r\n lastIndex = null;\r\n lastOption = null;\r\n lastValue = null;\r\n }\r\n }\r\n\r\n if (errorType) {\r\n let res = await dbi.events.trigger(\"messageCommandArgumentError\", {\r\n interaction,\r\n message,\r\n locale: {\r\n user: dbi.data.locales.get(interaction.locale) || dbi.data.locales.get(dbi.config.defaults.locale),\r\n guild: message.guild?.preferredLocale ? (dbi.data.locales.get(message.guild?.preferredLocale?.split(\"-\")?.at(0)) || dbi.data.locales.get(dbi.config.defaults.locale)) : null\r\n },\r\n error: {\r\n type: errorType,\r\n option: lastOption,\r\n extra: lastExtra,\r\n index: lastIndex\r\n },\r\n value: lastValue\r\n });\r\n if (!res) return;\r\n }\r\n }\r\n\r\n interaction.init();\r\n dbi.data.clients.first().client.emit(\"interactionCreate\", interaction as any);\r\n}"]}
|
|
1
|
+
{"version":3,"file":"handleMessageCommands.js","sourceRoot":"","sources":["../../src/methods/handleMessageCommands.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n ApplicationCommandType,\r\n ChatInputCommandInteraction,\r\n Message,\r\n MessagePayload,\r\n ApplicationCommandOptionType,\r\n} from \"discord.js\";\r\nimport { NamespaceEnums } from \"../../generated/namespaceData\";\r\nimport { DBI } from \"../DBI\";\r\nimport { FakeMessageInteraction } from \"../types/other/FakeMessageInteraction\";\r\nimport { TDBILocaleString } from \"../types/other/Locale\";\r\n\r\nconst INTEGER_REGEX = /^-?\\d+$/;\r\nconst NUMBER_REGEX = /^-?\\d+(?:\\.\\d+)?$/;\r\n\r\nexport type TDBIMessageCommandArgumentErrorTypes =\r\n | \"MissingRequiredOption\"\r\n | \"MinLength\"\r\n | \"MaxLength\"\r\n | \"InvalidChoice\"\r\n | \"InvalidInteger\"\r\n | \"MinInteger\"\r\n | \"MaxInteger\"\r\n | \"InvalidNumber\"\r\n | \"MinNumber\"\r\n | \"MaxNumber\"\r\n | \"InvalidBoolean\"\r\n | \"InvalidUser\"\r\n | \"InvalidChannel\"\r\n | \"InvalidRole\"\r\n | \"InvalidMentionable\"\r\n | \"InvalidCompleteChoice\";\r\n\r\nexport async function handleMessageCommands(\r\n dbi: DBI<NamespaceEnums>,\r\n message: Message\r\n) {\r\n const chatInputs = dbi.data.interactions.filter(\r\n (i) => i.type === \"ChatInput\"\r\n );\r\n const prefixes = dbi.config.messageCommands.prefixes ?? [];\r\n if (!prefixes.length) return;\r\n const content = message.content;\r\n const usedPrefix = prefixes.find((p) => content.startsWith(p));\r\n if (!usedPrefix) return;\r\n const contentWithoutPrefix = content.slice(usedPrefix?.length ?? 0);\r\n const contentLower = contentWithoutPrefix.toLowerCase();\r\n\r\n let locale: string =\r\n message.guild.preferredLocale?.split(\"-\")?.at(0) ||\r\n (dbi.config.defaults.locale as any);\r\n let usedAlias: string | undefined;\r\n let chatInput = chatInputs.find((i) => {\r\n let found = contentLower.startsWith(i.name);\r\n if (found) return true;\r\n let alias = i.other?.messageCommand?.aliases?.find((a) =>\r\n contentLower.startsWith(a)\r\n );\r\n if (alias) {\r\n usedAlias = alias;\r\n return true;\r\n }\r\n return false;\r\n });\r\n let commandName = usedAlias ?? chatInput?.name;\r\n\r\n if (!chatInput) {\r\n fLoop: for (const [localeInterName, localeData] of dbi.data\r\n .interactionLocales) {\r\n for (const [localeName, translation] of Object.entries(\r\n localeData.data || {}\r\n )) {\r\n if (contentLower.startsWith(translation.name)) {\r\n commandName = translation.name;\r\n locale = localeName;\r\n chatInput = chatInputs.find((i) => i.name === localeData.name);\r\n break fLoop;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (!chatInput) return;\r\n\r\n const interaction = new FakeMessageInteraction(\r\n dbi,\r\n message,\r\n chatInput as any,\r\n locale,\r\n commandName,\r\n usedPrefix\r\n );\r\n\r\n if (chatInput.options.length) {\r\n let errorType: TDBIMessageCommandArgumentErrorTypes;\r\n let lastOption: any;\r\n let lastValue: any;\r\n let lastExtra: any;\r\n let lastIndex: number;\r\n for (let i = 0; i < chatInput.options.length; i++) {\r\n lastIndex = i;\r\n const option: any = interaction.dbiChatInputOptions[i];\r\n const value = interaction.parsedArgs.get(option.name)?.value;\r\n\r\n lastOption = option;\r\n lastValue = value;\r\n\r\n switch (option.type) {\r\n case ApplicationCommandOptionType.String: {\r\n if (!option.required && !value) break;\r\n\r\n if (option.autocomplete && option.onComplete) {\r\n let choices = await option.onComplete({\r\n interaction,\r\n value,\r\n });\r\n if (!choices.length)\r\n choices = await option.onComplete({\r\n interaction,\r\n value: \"\",\r\n });\r\n if (choices.length > 20)\r\n throw new Error(\"Autocomplete returned more than 20 choices.\");\r\n lastExtra = choices;\r\n if (!choices.find((c) => c.name === value || c.value === value)) {\r\n if (value) {\r\n errorType = \"InvalidCompleteChoice\";\r\n break;\r\n } else if (option.required && !value) {\r\n errorType = \"MissingRequiredOption\";\r\n break;\r\n }\r\n }\r\n option._choices = choices;\r\n }\r\n\r\n if (option.choices) {\r\n const localeData = dbi.data.interactionLocales.get(\r\n chatInput.name\r\n )?.data;\r\n const choicesLocaleData =\r\n localeData?.[locale as TDBILocaleString]?.options?.[option.name]\r\n ?.choices;\r\n if (\r\n !option.choices.find(\r\n (c) =>\r\n c.name === value ||\r\n c.value === value ||\r\n (choicesLocaleData?.[c.value] &&\r\n choicesLocaleData?.[c.value] === value)\r\n )\r\n ) {\r\n lastExtra = option.choices.map((c) => ({\r\n name: choicesLocaleData?.[c.value] ?? c.name,\r\n value: c.value,\r\n }));\r\n if (value) {\r\n errorType = \"InvalidChoice\";\r\n break;\r\n } else if (option.required && !value) {\r\n errorType = \"MissingRequiredOption\";\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n\r\n if (option.minLength && value?.length < option.minLength) {\r\n errorType = \"MinLength\";\r\n break;\r\n }\r\n if (option.maxLength && value?.length > option.maxLength) {\r\n errorType = \"MaxLength\";\r\n break;\r\n }\r\n\r\n break;\r\n }\r\n case ApplicationCommandOptionType.Integer: {\r\n if (!option.required && !value) break;\r\n\r\n let parsedInt = parseInt(value);\r\n\r\n if (option.autocomplete && option.onComplete) {\r\n let choices = await option.onComplete({\r\n interaction,\r\n value,\r\n });\r\n if (!choices.length)\r\n choices = await option.onComplete({\r\n interaction,\r\n value: \"\",\r\n });\r\n if (choices.length > 20)\r\n throw new Error(\"Autocomplete returned more than 20 choices.\");\r\n lastExtra = choices;\r\n if (\r\n !choices.find((c) => c.value === parsedInt || c.name === value)\r\n ) {\r\n if (value) {\r\n errorType = \"InvalidCompleteChoice\";\r\n break;\r\n } else if (option.required && !value) {\r\n errorType = \"MissingRequiredOption\";\r\n break;\r\n }\r\n }\r\n option._choices = choices;\r\n break;\r\n }\r\n\r\n if (option.choices) {\r\n const localeData = dbi.data.interactionLocales.get(\r\n chatInput.name\r\n )?.data;\r\n const choicesLocaleData =\r\n localeData?.[locale as TDBILocaleString]?.options?.[option.name]\r\n ?.choices;\r\n if (\r\n !option.choices.find(\r\n (c) =>\r\n c.value === parsedInt ||\r\n c.name === value ||\r\n (choicesLocaleData?.[c.value] &&\r\n choicesLocaleData?.[c.value] === value)\r\n )\r\n ) {\r\n lastExtra = option.choices.map((c) => ({\r\n name: choicesLocaleData?.[c.value] ?? c.name,\r\n value: c.value,\r\n }));\r\n if (value) {\r\n errorType = \"InvalidChoice\";\r\n break;\r\n } else if (option.required && !value) {\r\n errorType = \"MissingRequiredOption\";\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n\r\n if (!INTEGER_REGEX.test(value)) {\r\n errorType = \"InvalidInteger\";\r\n break;\r\n }\r\n\r\n if (option.minValue && parsedInt < option.minValue) {\r\n errorType = \"MinInteger\";\r\n break;\r\n }\r\n\r\n if (option.maxValue && parsedInt > option.maxValue) {\r\n errorType = \"MaxInteger\";\r\n break;\r\n }\r\n\r\n break;\r\n }\r\n case ApplicationCommandOptionType.Number: {\r\n if (!option.required && !value) break;\r\n\r\n let parsedFloat = parseFloat(value);\r\n\r\n if (option.autocomplete && option.onComplete) {\r\n let choices = await option.onComplete({\r\n interaction,\r\n value,\r\n });\r\n if (!choices.length)\r\n choices = await option.onComplete({\r\n interaction,\r\n value: \"\",\r\n });\r\n if (choices.length > 20)\r\n throw new Error(\"Autocomplete returned more than 20 choices.\");\r\n lastExtra = choices;\r\n if (\r\n !choices.find((c) => c.value === parsedFloat || c.name === value)\r\n ) {\r\n if (value) {\r\n errorType = \"InvalidCompleteChoice\";\r\n break;\r\n } else if (option.required && !value) {\r\n errorType = \"MissingRequiredOption\";\r\n break;\r\n }\r\n }\r\n option._choices = choices;\r\n break;\r\n }\r\n\r\n if (option.choices) {\r\n const localeData = dbi.data.interactionLocales.get(\r\n chatInput.name\r\n )?.data;\r\n const choicesLocaleData =\r\n localeData?.[locale as TDBILocaleString]?.options?.[option.name]\r\n ?.choices;\r\n if (\r\n !option.choices.find(\r\n (c) =>\r\n c.value === parsedFloat ||\r\n c.name === value ||\r\n (choicesLocaleData?.[c.value] &&\r\n choicesLocaleData?.[c.value] === value)\r\n )\r\n ) {\r\n lastExtra = option.choices.map((c) => ({\r\n name: choicesLocaleData?.[c.value] ?? c.name,\r\n value: c.value,\r\n }));\r\n if (value) {\r\n errorType = \"InvalidChoice\";\r\n break;\r\n } else if (option.required && !value) {\r\n errorType = \"MissingRequiredOption\";\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n\r\n if (!NUMBER_REGEX.test(value)) {\r\n errorType = \"InvalidNumber\";\r\n break;\r\n }\r\n\r\n if (option.minValue && parsedFloat < option.minValue) {\r\n errorType = \"MinNumber\";\r\n break;\r\n }\r\n\r\n if (option.maxValue && parsedFloat > option.maxValue) {\r\n errorType = \"MaxNumber\";\r\n break;\r\n }\r\n break;\r\n }\r\n case ApplicationCommandOptionType.Boolean: {\r\n let boolKeys = Object.keys(\r\n dbi.config.messageCommands.typeAliases.booleans\r\n );\r\n if (option.required && !boolKeys.includes(value?.toLowerCase?.())) {\r\n errorType = \"InvalidBoolean\";\r\n break;\r\n }\r\n break;\r\n }\r\n case ApplicationCommandOptionType.User: {\r\n await message.client.users\r\n .fetch(interaction.options.getUserId(option.name))\r\n .catch(() => {});\r\n if (option.required && !interaction.options.getUser(option.name)) {\r\n errorType = \"InvalidUser\";\r\n break;\r\n }\r\n break;\r\n }\r\n case ApplicationCommandOptionType.Channel: {\r\n await message.client.channels\r\n .fetch(interaction.options.getChannelId(option.name))\r\n .catch(() => {});\r\n if (\r\n option.required &&\r\n !interaction.options.getChannel(\r\n option.name,\r\n null,\r\n option.channelTypes\r\n )\r\n ) {\r\n errorType = \"InvalidChannel\";\r\n break;\r\n }\r\n break;\r\n }\r\n case ApplicationCommandOptionType.Role: {\r\n await message.guild.roles\r\n .fetch(interaction.options.getRoleId(option.name))\r\n .catch(() => {});\r\n if (option.required && !interaction.options.getRole(option.name)) {\r\n errorType = \"InvalidRole\";\r\n break;\r\n }\r\n break;\r\n }\r\n case ApplicationCommandOptionType.Mentionable: {\r\n let mentionableId = interaction.options.getMentionableId(option.name);\r\n await message.guild.roles.fetch(mentionableId).catch(() => {});\r\n await message.client.channels.fetch(mentionableId).catch(() => {});\r\n await message.client.users.fetch(mentionableId).catch(() => {});\r\n if (\r\n option.required &&\r\n !interaction.options.getMentionable(option.name)\r\n ) {\r\n errorType = \"InvalidMentionable\";\r\n break;\r\n }\r\n break;\r\n }\r\n case ApplicationCommandOptionType.Attachment: {\r\n if (option.required && !value) {\r\n errorType = \"MissingRequiredOption\";\r\n }\r\n break;\r\n }\r\n }\r\n\r\n if (errorType) {\r\n break;\r\n } else {\r\n lastExtra = null;\r\n lastIndex = null;\r\n lastOption = null;\r\n lastValue = null;\r\n }\r\n }\r\n\r\n if (errorType) {\r\n let res = await dbi.events.trigger(\"messageCommandArgumentError\", {\r\n interaction,\r\n message,\r\n locale: {\r\n user:\r\n dbi.data.locales.get(interaction.locale) ||\r\n dbi.data.locales.get(dbi.config.defaults.locale),\r\n guild: message.guild?.preferredLocale\r\n ? dbi.data.locales.get(\r\n message.guild?.preferredLocale?.split(\"-\")?.at(0)\r\n ) || dbi.data.locales.get(dbi.config.defaults.locale)\r\n : null,\r\n },\r\n error: {\r\n type: errorType,\r\n option: lastOption,\r\n extra: lastExtra,\r\n index: lastIndex,\r\n },\r\n value: lastValue,\r\n });\r\n if (!res) return;\r\n }\r\n }\r\n\r\n interaction.init();\r\n dbi.data.clients.first().client.emit(\"interactionCreate\", interaction as any);\r\n}\r\n"]}
|
|
@@ -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;
|
|
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;AAY/D,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,GAAG,CAAC,cAAc,CAAC,GAAG,MAAM,GAAG,CA0O5E"}
|