@mostfeatured/dbi 0.0.1
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/.gitattributes +2 -0
- package/LICENSE +674 -0
- package/dist/src/DBI.d.ts +78 -0
- package/dist/src/DBI.d.ts.map +1 -0
- package/dist/src/DBI.js +202 -0
- package/dist/src/DBI.js.map +1 -0
- package/dist/src/Events.d.ts +29 -0
- package/dist/src/Events.d.ts.map +1 -0
- package/dist/src/Events.js +51 -0
- package/dist/src/Events.js.map +1 -0
- package/dist/src/data/eventMap.json +234 -0
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +11 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/methods/hookEventListeners.d.ts +3 -0
- package/dist/src/methods/hookEventListeners.d.ts.map +1 -0
- package/dist/src/methods/hookEventListeners.js +34 -0
- package/dist/src/methods/hookEventListeners.js.map +1 -0
- package/dist/src/methods/hookInteractionListeners.d.ts +3 -0
- package/dist/src/methods/hookInteractionListeners.d.ts.map +1 -0
- package/dist/src/methods/hookInteractionListeners.js +97 -0
- package/dist/src/methods/hookInteractionListeners.js.map +1 -0
- package/dist/src/methods/publishInteractions.d.ts +4 -0
- package/dist/src/methods/publishInteractions.d.ts.map +1 -0
- package/dist/src/methods/publishInteractions.js +150 -0
- package/dist/src/methods/publishInteractions.js.map +1 -0
- package/dist/src/types/Button.d.ts +19 -0
- package/dist/src/types/Button.d.ts.map +1 -0
- package/dist/src/types/Button.js +27 -0
- package/dist/src/types/Button.js.map +1 -0
- package/dist/src/types/ChatInput/ChatInput.d.ts +15 -0
- package/dist/src/types/ChatInput/ChatInput.d.ts.map +1 -0
- package/dist/src/types/ChatInput/ChatInput.js +19 -0
- package/dist/src/types/ChatInput/ChatInput.js.map +1 -0
- package/dist/src/types/ChatInput/ChatInputOptions.d.ts +153 -0
- package/dist/src/types/ChatInput/ChatInputOptions.d.ts.map +1 -0
- package/dist/src/types/ChatInput/ChatInputOptions.js +149 -0
- package/dist/src/types/ChatInput/ChatInputOptions.js.map +1 -0
- package/dist/src/types/Event.d.ts +257 -0
- package/dist/src/types/Event.d.ts.map +1 -0
- package/dist/src/types/Event.js +21 -0
- package/dist/src/types/Event.js.map +1 -0
- package/dist/src/types/Interaction.d.ts +34 -0
- package/dist/src/types/Interaction.d.ts.map +1 -0
- package/dist/src/types/Interaction.js +25 -0
- package/dist/src/types/Interaction.js.map +1 -0
- package/dist/src/types/Locale.d.ts +19 -0
- package/dist/src/types/Locale.d.ts.map +1 -0
- package/dist/src/types/Locale.js +31 -0
- package/dist/src/types/Locale.js.map +1 -0
- package/dist/src/types/MessageContextMenu.d.ts +14 -0
- package/dist/src/types/MessageContextMenu.d.ts.map +1 -0
- package/dist/src/types/MessageContextMenu.js +17 -0
- package/dist/src/types/MessageContextMenu.js.map +1 -0
- package/dist/src/types/Modal.d.ts +19 -0
- package/dist/src/types/Modal.d.ts.map +1 -0
- package/dist/src/types/Modal.js +24 -0
- package/dist/src/types/Modal.js.map +1 -0
- package/dist/src/types/SelectMenu.d.ts +19 -0
- package/dist/src/types/SelectMenu.d.ts.map +1 -0
- package/dist/src/types/SelectMenu.js +27 -0
- package/dist/src/types/SelectMenu.js.map +1 -0
- package/dist/src/types/UserContextMenu.d.ts +14 -0
- package/dist/src/types/UserContextMenu.d.ts.map +1 -0
- package/dist/src/types/UserContextMenu.js +17 -0
- package/dist/src/types/UserContextMenu.js.map +1 -0
- package/dist/src/utils/MemoryStore.d.ts +9 -0
- package/dist/src/utils/MemoryStore.d.ts.map +1 -0
- package/dist/src/utils/MemoryStore.js +30 -0
- package/dist/src/utils/MemoryStore.js.map +1 -0
- package/dist/src/utils/customId.d.ts +7 -0
- package/dist/src/utils/customId.d.ts.map +1 -0
- package/dist/src/utils/customId.js +44 -0
- package/dist/src/utils/customId.js.map +1 -0
- package/dist/src/utils/permissions.d.ts +3 -0
- package/dist/src/utils/permissions.d.ts.map +1 -0
- package/dist/src/utils/permissions.js +9 -0
- package/dist/src/utils/permissions.js.map +1 -0
- package/dist/src/utils/recursiveImport.d.ts +2 -0
- package/dist/src/utils/recursiveImport.d.ts.map +1 -0
- package/dist/src/utils/recursiveImport.js +20 -0
- package/dist/src/utils/recursiveImport.js.map +1 -0
- package/dist/test/commands/hello world.d.ts +2 -0
- package/dist/test/commands/hello world.d.ts.map +1 -0
- package/dist/test/commands/hello world.js +46 -0
- package/dist/test/commands/hello world.js.map +1 -0
- package/dist/test/commands/stuff.d.ts +2 -0
- package/dist/test/commands/stuff.d.ts.map +1 -0
- package/dist/test/commands/stuff.js +22 -0
- package/dist/test/commands/stuff.js.map +1 -0
- package/dist/test/index.d.ts +2 -0
- package/dist/test/index.d.ts.map +1 -0
- package/dist/test/index.js +33 -0
- package/dist/test/index.js.map +1 -0
- package/dist/test/publish.d.ts +2 -0
- package/dist/test/publish.d.ts.map +1 -0
- package/dist/test/publish.js +5 -0
- package/dist/test/publish.js.map +1 -0
- package/dist/test/things/test.d.ts +2 -0
- package/dist/test/things/test.d.ts.map +1 -0
- package/dist/test/things/test.js +84 -0
- package/dist/test/things/test.js.map +1 -0
- package/package.json +40 -0
- package/src/DBI.ts +262 -0
- package/src/Events.ts +72 -0
- package/src/data/eventMap.json +234 -0
- package/src/index.ts +7 -0
- package/src/methods/hookEventListeners.ts +38 -0
- package/src/methods/hookInteractionListeners.ts +118 -0
- package/src/methods/publishInteractions.ts +158 -0
- package/src/types/Button.ts +32 -0
- package/src/types/ChatInput/ChatInput.ts +24 -0
- package/src/types/ChatInput/ChatInputOptions.ts +168 -0
- package/src/types/Event.ts +115 -0
- package/src/types/Interaction.ts +69 -0
- package/src/types/Locale.ts +39 -0
- package/src/types/MessageContextMenu.ts +23 -0
- package/src/types/Modal.ts +32 -0
- package/src/types/SelectMenu.ts +32 -0
- package/src/types/UserContextMenu.ts +21 -0
- package/src/utils/MemoryStore.ts +28 -0
- package/src/utils/customId.ts +35 -0
- package/src/utils/permissions.ts +5 -0
- package/src/utils/recursiveImport.ts +15 -0
- package/tsconfig.json +39 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createDBI = exports.recursiveImport = void 0;
|
|
4
|
+
const DBI_1 = require("./DBI");
|
|
5
|
+
var recursiveImport_1 = require("./utils/recursiveImport");
|
|
6
|
+
Object.defineProperty(exports, "recursiveImport", { enumerable: true, get: function () { return recursiveImport_1.recursiveImport; } });
|
|
7
|
+
function createDBI(namespace, cfg) {
|
|
8
|
+
return new DBI_1.DBI(namespace, cfg);
|
|
9
|
+
}
|
|
10
|
+
exports.createDBI = createDBI;
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,+BAAuC;AACvC,2DAA0D;AAAjD,kHAAA,eAAe,OAAA;AAExB,SAAgB,SAAS,CAAC,SAAiB,EAAE,GAAc;IACzD,OAAO,IAAI,SAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AACjC,CAAC;AAFD,8BAEC","sourcesContent":["import { DBI, DBIConfig } from \"./DBI\";\r\nexport { recursiveImport } from \"./utils/recursiveImport\";\r\n\r\nexport function createDBI(namespace: string, cfg: DBIConfig): DBI {\r\n return new DBI(namespace, cfg);\r\n}"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hookEventListeners.d.ts","sourceRoot":"","sources":["../../../src/methods/hookEventListeners.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAE7B,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,CAmCtD"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hookEventListeners = void 0;
|
|
4
|
+
function hookEventListeners(dbi) {
|
|
5
|
+
async function handle(eventName, ...args) {
|
|
6
|
+
if (!dbi.data.eventMap[eventName])
|
|
7
|
+
return;
|
|
8
|
+
let ctxArgs = dbi.data.eventMap[eventName]
|
|
9
|
+
.reduce((all, current, index) => {
|
|
10
|
+
all[current] = args[index];
|
|
11
|
+
return all;
|
|
12
|
+
}, {});
|
|
13
|
+
let other = {};
|
|
14
|
+
if (!await dbi.events.trigger("beforeEvent", { eventName, ...ctxArgs, other }))
|
|
15
|
+
return;
|
|
16
|
+
for (let i = 0; i < dbi.data.events.size; i++) {
|
|
17
|
+
const value = dbi.data.events.at(i);
|
|
18
|
+
if (value.name == eventName) {
|
|
19
|
+
await value.onExecute({ eventName, ...ctxArgs, other });
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
dbi.events.trigger("afterEvent", { eventName, ...ctxArgs, other });
|
|
23
|
+
}
|
|
24
|
+
let originalEmit = dbi.client.emit;
|
|
25
|
+
dbi.client.emit = function (eventName, ...args) {
|
|
26
|
+
handle(eventName, ...args);
|
|
27
|
+
return originalEmit.call(this, eventName, ...args);
|
|
28
|
+
};
|
|
29
|
+
return () => {
|
|
30
|
+
dbi.client.emit = originalEmit;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
exports.hookEventListeners = hookEventListeners;
|
|
34
|
+
//# sourceMappingURL=hookEventListeners.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hookEventListeners.js","sourceRoot":"","sources":["../../../src/methods/hookEventListeners.ts"],"names":[],"mappings":";;;AAEA,SAAgB,kBAAkB,CAAC,GAAQ;IACzC,KAAK,UAAU,MAAM,CAAC,SAAiB,EAAE,GAAG,IAAW;QACrD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,OAAO;QAE1C,IAAI,OAAO,GACT,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;aACzB,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;YAC9B,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3B,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,CAAC,CAAC;QAEX,IAAI,KAAK,GAAG,EAAE,CAAC;QAEf,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC;YAAE,OAAO;QAEvF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YAC7C,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,KAAK,CAAC,IAAI,IAAI,SAAS,EAAE;gBAC3B,MAAM,KAAK,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;aACzD;SACF;QAED,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;IACpE,CAAC;IAED,IAAI,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;IAEnC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,UAAS,SAAS,EAAE,GAAG,IAAI;QAC3C,MAAM,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;QAC3B,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;IACrD,CAAC,CAAA;IAED,OAAO,GAAG,EAAE;QACV,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,YAAY,CAAC;IACjC,CAAC,CAAA;AACH,CAAC;AAnCD,gDAmCC","sourcesContent":["import { DBI } from \"../DBI\";\r\n\r\nexport function hookEventListeners(dbi: DBI): () => any {\r\n async function handle(eventName: string, ...args: any[]) {\r\n if (!dbi.data.eventMap[eventName]) return;\r\n\r\n let ctxArgs =\r\n dbi.data.eventMap[eventName]\r\n .reduce((all, current, index) => {\r\n all[current] = args[index];\r\n return all;\r\n }, {});\r\n\r\n let other = {};\r\n\r\n if (!await dbi.events.trigger(\"beforeEvent\", { eventName, ...ctxArgs, other })) return;\r\n\r\n for (let i = 0; i < dbi.data.events.size; i++) {\r\n const value = dbi.data.events.at(i);\r\n if (value.name == eventName) {\r\n await value.onExecute({ eventName, ...ctxArgs, other });\r\n }\r\n }\r\n\r\n dbi.events.trigger(\"afterEvent\", { eventName, ...ctxArgs, other })\r\n }\r\n\r\n let originalEmit = dbi.client.emit;\r\n\r\n dbi.client.emit = function(eventName, ...args) {\r\n handle(eventName, ...args);\r\n return originalEmit.call(this, eventName, ...args);\r\n }\r\n\r\n return () => {\r\n dbi.client.emit = originalEmit;\r\n }\r\n}"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hookInteractionListeners.d.ts","sourceRoot":"","sources":["../../../src/methods/hookInteractionListeners.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAI7B,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,CAiH5D"}
|
|
@@ -0,0 +1,97 @@
|
|
|
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
|
+
if (inter.isAutocomplete()) {
|
|
25
|
+
let focussed = inter.options.getFocused(true);
|
|
26
|
+
let option = dbiInter.options.find(i => i.name == focussed.name);
|
|
27
|
+
if (option?.onComplete) {
|
|
28
|
+
let response = await option.onComplete({
|
|
29
|
+
value: focussed.value,
|
|
30
|
+
interaction: inter,
|
|
31
|
+
dbi
|
|
32
|
+
});
|
|
33
|
+
await inter.respond(response);
|
|
34
|
+
}
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
let userLocaleName = inter.locale.split("-")[0];
|
|
38
|
+
let userLocale = dbi.data.locales.has(userLocaleName) ? dbi.data.locales.get(userLocaleName) : dbi.data.locales.get(dbi.config.defaults.locale);
|
|
39
|
+
let guildLocaleName = inter.guild ? inter.guild.preferredLocale.split("-")[0] : null;
|
|
40
|
+
let guildLocale = guildLocaleName ? (dbi.data.locales.has(guildLocaleName) ? dbi.data.locales.get(guildLocaleName) : dbi.data.locales.get(dbi.config.defaults.locale)) : null;
|
|
41
|
+
let locale = {
|
|
42
|
+
user: userLocale,
|
|
43
|
+
guild: guildLocale
|
|
44
|
+
};
|
|
45
|
+
let data = (inter.isButton() || inter.isSelectMenu() || inter.isModalSubmit()) ? (0, customId_1.parseCustomId)(dbi, inter.customId).data : undefined;
|
|
46
|
+
let rateLimitKeyMap = {
|
|
47
|
+
"User": `${inter.user.id}`,
|
|
48
|
+
"Channel": `${inter.channelId || "Channel"}`,
|
|
49
|
+
"Guild": `${inter.guildId || "Guild"}`,
|
|
50
|
+
"Member": `${inter.user.id}_${inter.guildId || "Guild"}`,
|
|
51
|
+
"Message": `${inter?.message?.id}`
|
|
52
|
+
};
|
|
53
|
+
for (const type in rateLimitKeyMap) {
|
|
54
|
+
let key = `RateLimit:${rateLimitKeyMap[type]}`;
|
|
55
|
+
let val = await dbi.config.store.get(key);
|
|
56
|
+
if (val && Date.now() > val.at + val.duration) {
|
|
57
|
+
await dbi.config.store.del(key);
|
|
58
|
+
val = null;
|
|
59
|
+
}
|
|
60
|
+
if (val) {
|
|
61
|
+
dbi.events.trigger("interactionRateLimit", {
|
|
62
|
+
dbi,
|
|
63
|
+
interaction: inter,
|
|
64
|
+
locale,
|
|
65
|
+
data,
|
|
66
|
+
rateLimit: {
|
|
67
|
+
type: key,
|
|
68
|
+
...val
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
async function setRateLimit(type, duration) {
|
|
75
|
+
await dbi.config.store.set(`RateLimit:${rateLimitKeyMap[type]}`, { at: Date.now(), duration });
|
|
76
|
+
}
|
|
77
|
+
let other = {};
|
|
78
|
+
if (!(await dbi.events.trigger("beforeInteraction", { dbi, interaction: inter, locale, setRateLimit, data, other })))
|
|
79
|
+
return;
|
|
80
|
+
await dbiInter.onExecute({
|
|
81
|
+
dbi,
|
|
82
|
+
// @ts-ignore
|
|
83
|
+
interaction: inter,
|
|
84
|
+
locale,
|
|
85
|
+
setRateLimit,
|
|
86
|
+
data,
|
|
87
|
+
other
|
|
88
|
+
});
|
|
89
|
+
dbi.events.trigger("afterInteraction", { dbi, interaction: inter, locale, setRateLimit, data, other });
|
|
90
|
+
}
|
|
91
|
+
dbi.client.on("interactionCreate", handle);
|
|
92
|
+
return () => {
|
|
93
|
+
dbi.client.off("interactionCreate", handle);
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
exports.hookInteractionListeners = hookInteractionListeners;
|
|
97
|
+
//# sourceMappingURL=hookInteractionListeners.js.map
|
|
@@ -0,0 +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\n\r\nexport function hookInteractionListeners(dbi: DBI): () => any {\r\n async function handle(inter: Discord.Interaction<Discord.CacheType>) {\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 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 dbi\r\n });\r\n await inter.respond(response);\r\n }\r\n return;\r\n }\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 rateLimitKeyMap = {\r\n \"User\": `${inter.user.id}`,\r\n \"Channel\": `${inter.channelId || \"Channel\"}`,\r\n \"Guild\": `${inter.guildId || \"Guild\"}`,\r\n \"Member\": `${inter.user.id}_${inter.guildId || \"Guild\"}`,\r\n \"Message\": `${(inter as any)?.message?.id}`\r\n }\r\n\r\n for (const type in rateLimitKeyMap) {\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.del(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 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 await dbi.config.store.set(`RateLimit:${rateLimitKeyMap[type]}`, { at: Date.now(), duration });\r\n }\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 await dbiInter.onExecute({\r\n dbi,\r\n // @ts-ignore\r\n interaction: inter as any,\r\n locale,\r\n setRateLimit,\r\n data,\r\n other\r\n });\r\n \r\n dbi.events.trigger(\"afterInteraction\", { dbi, interaction: inter, 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}"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import Discord from "discord.js";
|
|
2
|
+
import { DBIChatInput } from "../types/ChatInput/ChatInput";
|
|
3
|
+
export declare function publishInteractions(clientToken: string, interactions: Discord.Collection<string, DBIChatInput>, publishType: "Guild" | "Global", guildId?: string): Promise<void>;
|
|
4
|
+
//# sourceMappingURL=publishInteractions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publishInteractions.d.ts","sourceRoot":"","sources":["../../../src/methods/publishInteractions.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAQ5D,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,EACtD,WAAW,EAAE,OAAO,GAAG,QAAQ,EAC/B,OAAO,CAAC,EAAE,MAAM,iBAgJjB"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.publishInteractions = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const rest_1 = require("@discordjs/rest");
|
|
6
|
+
const v9_1 = require("discord-api-types/v9");
|
|
7
|
+
const permissions_1 = require("../utils/permissions");
|
|
8
|
+
const snakecase_keys_1 = tslib_1.__importDefault(require("snakecase-keys"));
|
|
9
|
+
const PUBLISHABLE_TYPES = ["ChatInput", "UserContextMenu", "MessageContextMenu"];
|
|
10
|
+
async function publishInteractions(clientToken, interactions, publishType, guildId) {
|
|
11
|
+
interactions = interactions.filter(i => PUBLISHABLE_TYPES.includes(i.type));
|
|
12
|
+
const rest = new rest_1.REST({ version: "9" });
|
|
13
|
+
rest.setToken(clientToken);
|
|
14
|
+
const me = await rest.get(v9_1.Routes.user());
|
|
15
|
+
const body = interactions.reduce((all, current) => {
|
|
16
|
+
switch (current.type) {
|
|
17
|
+
case "ChatInput": {
|
|
18
|
+
let nameSplitted = current.name.split(" ");
|
|
19
|
+
switch (nameSplitted.length) {
|
|
20
|
+
case 1: {
|
|
21
|
+
all.push({
|
|
22
|
+
type: v9_1.ApplicationCommandType.ChatInput,
|
|
23
|
+
description: current.description,
|
|
24
|
+
name: nameSplitted[0],
|
|
25
|
+
default_member_permissions: (0, permissions_1.reducePermissions)(current.defaultMemberPermissions).toString(),
|
|
26
|
+
dm_permission: current.directMessages,
|
|
27
|
+
options: (0, snakecase_keys_1.default)(current.options || [])
|
|
28
|
+
});
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
case 2: {
|
|
32
|
+
let baseItem = all.find(i => i.name == current.name.split(" ")[0] && i.type == "ChatInput");
|
|
33
|
+
let option = {
|
|
34
|
+
type: v9_1.ApplicationCommandOptionType.Subcommand,
|
|
35
|
+
name: nameSplitted[1],
|
|
36
|
+
description: current.description,
|
|
37
|
+
default_member_permissions: (0, permissions_1.reducePermissions)(current.defaultMemberPermissions).toString(),
|
|
38
|
+
dm_permission: current.directMessages,
|
|
39
|
+
options: (0, snakecase_keys_1.default)(current.options || [])
|
|
40
|
+
};
|
|
41
|
+
if (!baseItem) {
|
|
42
|
+
all.push({
|
|
43
|
+
type: v9_1.ApplicationCommandType.ChatInput,
|
|
44
|
+
name: nameSplitted[0],
|
|
45
|
+
description: "...",
|
|
46
|
+
options: [
|
|
47
|
+
option
|
|
48
|
+
]
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
baseItem.options.push(option);
|
|
53
|
+
}
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
case 3: {
|
|
57
|
+
let level1Item = all.find(i => i.name == current.name.split(" ")[0] && i.type == "ChatInput");
|
|
58
|
+
if (!level1Item) {
|
|
59
|
+
all.push({
|
|
60
|
+
type: v9_1.ApplicationCommandType.ChatInput,
|
|
61
|
+
name: nameSplitted[0],
|
|
62
|
+
description: "...",
|
|
63
|
+
options: [
|
|
64
|
+
{
|
|
65
|
+
type: v9_1.ApplicationCommandOptionType.SubcommandGroup,
|
|
66
|
+
name: nameSplitted[1],
|
|
67
|
+
description: "...",
|
|
68
|
+
options: [
|
|
69
|
+
{
|
|
70
|
+
type: v9_1.ApplicationCommandOptionType.Subcommand,
|
|
71
|
+
name: nameSplitted[2],
|
|
72
|
+
description: current.description,
|
|
73
|
+
default_member_permissions: (0, permissions_1.reducePermissions)(current.defaultMemberPermissions).toString(),
|
|
74
|
+
dm_permission: current.directMessages,
|
|
75
|
+
options: (0, snakecase_keys_1.default)(current.options || [])
|
|
76
|
+
}
|
|
77
|
+
]
|
|
78
|
+
}
|
|
79
|
+
]
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
let level2Item = level1Item.options.find(i => i.name == current.name.split(" ")[1] && i.type == "ChatInput");
|
|
84
|
+
if (!level2Item) {
|
|
85
|
+
level1Item.options.push({
|
|
86
|
+
type: v9_1.ApplicationCommandOptionType.SubcommandGroup,
|
|
87
|
+
name: nameSplitted[1],
|
|
88
|
+
description: "...",
|
|
89
|
+
options: [
|
|
90
|
+
{
|
|
91
|
+
type: v9_1.ApplicationCommandOptionType.Subcommand,
|
|
92
|
+
name: nameSplitted[2],
|
|
93
|
+
description: current.description,
|
|
94
|
+
default_member_permissions: (0, permissions_1.reducePermissions)(current.defaultMemberPermissions).toString(),
|
|
95
|
+
dm_permission: current.directMessages,
|
|
96
|
+
options: (0, snakecase_keys_1.default)(current.options || [])
|
|
97
|
+
}
|
|
98
|
+
]
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
level2Item.options.push({
|
|
103
|
+
type: v9_1.ApplicationCommandOptionType.Subcommand,
|
|
104
|
+
name: nameSplitted[2],
|
|
105
|
+
description: current.description,
|
|
106
|
+
default_member_permissions: (0, permissions_1.reducePermissions)(current.defaultMemberPermissions).toString(),
|
|
107
|
+
dm_permission: current.directMessages,
|
|
108
|
+
options: (0, snakecase_keys_1.default)(current.options || [])
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
case "MessageContextMenu": {
|
|
118
|
+
all.push({
|
|
119
|
+
type: v9_1.ApplicationCommandType.Message,
|
|
120
|
+
name: current.name,
|
|
121
|
+
default_member_permissions: (0, permissions_1.reducePermissions)(current.defaultMemberPermissions).toString(),
|
|
122
|
+
dm_permission: current.directMessages
|
|
123
|
+
});
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
case "UserContextMenu": {
|
|
127
|
+
all.push({
|
|
128
|
+
type: v9_1.ApplicationCommandType.User,
|
|
129
|
+
name: current.name,
|
|
130
|
+
default_member_permissions: (0, permissions_1.reducePermissions)(current.defaultMemberPermissions).toString(),
|
|
131
|
+
dm_permission: current.directMessages
|
|
132
|
+
});
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return all;
|
|
137
|
+
}, []);
|
|
138
|
+
switch (publishType) {
|
|
139
|
+
case "Global": {
|
|
140
|
+
await rest.put(v9_1.Routes.applicationGuildCommands(me.id, guildId), { body });
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
case "Guild": {
|
|
144
|
+
await rest.put(v9_1.Routes.applicationCommands(me.id), { body });
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
exports.publishInteractions = publishInteractions;
|
|
150
|
+
//# sourceMappingURL=publishInteractions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publishInteractions.js","sourceRoot":"","sources":["../../../src/methods/publishInteractions.ts"],"names":[],"mappings":"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","sourcesContent":["import Discord from \"discord.js\";\r\nimport { DBIChatInput } from \"../types/ChatInput/ChatInput\";\r\nimport { REST } from \"@discordjs/rest\";\r\nimport { Routes, RESTGetAPIUserResult, RESTPutAPIApplicationCommandsJSONBody, ApplicationCommandType, ApplicationCommandOptionType } from \"discord-api-types/v9\";\r\nimport { reducePermissions } from \"../utils/permissions\";\r\nimport snakecaseKeys from \"snakecase-keys\";\r\n\r\nconst PUBLISHABLE_TYPES = [\"ChatInput\", \"UserContextMenu\", \"MessageContextMenu\"];\r\n\r\nexport async function publishInteractions(\r\n clientToken: string,\r\n interactions: Discord.Collection<string, DBIChatInput>,\r\n publishType: \"Guild\" | \"Global\",\r\n guildId?: string\r\n) {\r\n interactions = interactions.filter(i => PUBLISHABLE_TYPES.includes(i.type));\r\n\r\n const rest = new REST({ version: \"9\" });\r\n rest.setToken(clientToken);\r\n\r\n const me: RESTGetAPIUserResult = await rest.get(Routes.user()) as any;\r\n \r\n const body: RESTPutAPIApplicationCommandsJSONBody =\r\n interactions.reduce((all, current) => {\r\n switch (current.type) {\r\n case \"ChatInput\": {\r\n let nameSplitted = current.name.split(\" \");\r\n switch (nameSplitted.length) {\r\n case 1: {\r\n all.push({\r\n type: ApplicationCommandType.ChatInput,\r\n description: current.description,\r\n name: nameSplitted[0],\r\n default_member_permissions: reducePermissions(current.defaultMemberPermissions).toString(),\r\n dm_permission: current.directMessages,\r\n options: snakecaseKeys(current.options || [])\r\n });\r\n break;\r\n }\r\n case 2: {\r\n let baseItem = all.find(i => i.name == current.name.split(\" \")[0] && i.type == \"ChatInput\");\r\n let option = {\r\n type: ApplicationCommandOptionType.Subcommand,\r\n name: nameSplitted[1],\r\n description: current.description,\r\n default_member_permissions: reducePermissions(current.defaultMemberPermissions).toString(),\r\n dm_permission: current.directMessages,\r\n options: snakecaseKeys(current.options || [])\r\n };\r\n if (!baseItem) {\r\n all.push({\r\n type: ApplicationCommandType.ChatInput,\r\n name: nameSplitted[0],\r\n description: \"...\",\r\n options: [\r\n option\r\n ]\r\n });\r\n } else {\r\n baseItem.options.push(option);\r\n }\r\n break;\r\n }\r\n case 3: {\r\n let level1Item = all.find(i => i.name == current.name.split(\" \")[0] && i.type == \"ChatInput\");\r\n if (!level1Item) {\r\n all.push({\r\n type: ApplicationCommandType.ChatInput,\r\n name: nameSplitted[0],\r\n description: \"...\",\r\n options: [\r\n {\r\n type: ApplicationCommandOptionType.SubcommandGroup,\r\n name: nameSplitted[1],\r\n description: \"...\",\r\n options: [\r\n {\r\n type: ApplicationCommandOptionType.Subcommand,\r\n name: nameSplitted[2],\r\n description: current.description,\r\n default_member_permissions: reducePermissions(current.defaultMemberPermissions).toString(),\r\n dm_permission: current.directMessages,\r\n options: snakecaseKeys(current.options || [])\r\n }\r\n ]\r\n }\r\n ]\r\n });\r\n } else {\r\n let level2Item = level1Item.options.find(i => i.name == current.name.split(\" \")[1] && i.type == \"ChatInput\");\r\n if (!level2Item) {\r\n level1Item.options.push({\r\n type: ApplicationCommandOptionType.SubcommandGroup,\r\n name: nameSplitted[1],\r\n description: \"...\",\r\n options: [\r\n {\r\n type: ApplicationCommandOptionType.Subcommand,\r\n name: nameSplitted[2],\r\n description: current.description,\r\n default_member_permissions: reducePermissions(current.defaultMemberPermissions).toString(),\r\n dm_permission: current.directMessages,\r\n options: snakecaseKeys(current.options || [])\r\n }\r\n ]\r\n })\r\n } else {\r\n level2Item.options.push({\r\n type: ApplicationCommandOptionType.Subcommand,\r\n name: nameSplitted[2],\r\n description: current.description,\r\n default_member_permissions: reducePermissions(current.defaultMemberPermissions).toString(),\r\n dm_permission: current.directMessages,\r\n options: snakecaseKeys(current.options || [])\r\n });\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n case \"MessageContextMenu\": {\r\n all.push({\r\n type: ApplicationCommandType.Message,\r\n name: current.name,\r\n default_member_permissions: reducePermissions(current.defaultMemberPermissions).toString(),\r\n dm_permission: current.directMessages\r\n });\r\n break;\r\n }\r\n case \"UserContextMenu\": {\r\n all.push({\r\n type: ApplicationCommandType.User,\r\n name: current.name,\r\n default_member_permissions: reducePermissions(current.defaultMemberPermissions).toString(),\r\n dm_permission: current.directMessages\r\n });\r\n break;\r\n }\r\n }\r\n\r\n return all;\r\n }, []);\r\n \r\n \r\n switch (publishType) {\r\n case \"Global\": {\r\n await rest.put(Routes.applicationGuildCommands(me.id, guildId), { body });\r\n break;\r\n }\r\n case \"Guild\": {\r\n await rest.put(Routes.applicationCommands(me.id), { body });\r\n break;\r\n }\r\n }\r\n \r\n}"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import Discord from "discord.js";
|
|
2
|
+
import { DBI } from "../DBI";
|
|
3
|
+
import { DBIBaseInteraction, IDBIBaseExecuteCtx } from "./Interaction";
|
|
4
|
+
export interface IDBIButtonExecuteCtx extends IDBIBaseExecuteCtx {
|
|
5
|
+
interaction: Discord.ButtonInteraction<Discord.CacheType>;
|
|
6
|
+
data: ({
|
|
7
|
+
[key: string]: any;
|
|
8
|
+
$ref: string;
|
|
9
|
+
$unRef(): boolean;
|
|
10
|
+
} | string | number)[];
|
|
11
|
+
}
|
|
12
|
+
export declare type TDBIButtonOmitted = Omit<DBIButton, "type" | "description" | "dbi" | "toJSON">;
|
|
13
|
+
export declare class DBIButton extends DBIBaseInteraction {
|
|
14
|
+
constructor(dbi: DBI, args: TDBIButtonOmitted);
|
|
15
|
+
options: Omit<Discord.ButtonComponentData, "customId" | "type">;
|
|
16
|
+
onExecute(ctx: IDBIButtonExecuteCtx): Promise<any> | any;
|
|
17
|
+
toJSON(...customData: (string | number | object)[]): Discord.ButtonComponentData;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=Button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/types/Button.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGvE,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAC9D,WAAW,EAAE,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC1D,IAAI,EAAE,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,IAAI,OAAO,CAAA;KAAE,GAAG,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;CACrF;AAED,oBAAY,iBAAiB,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,KAAK,GAAG,QAAQ,CAAC,CAAC;AAE3F,qBAAa,SAAU,SAAQ,kBAAkB;gBACnC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,iBAAiB;IAOrC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,UAAU,GAAG,MAAM,CAAC,CAAC;IAE/D,SAAS,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG;IAEjE,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,mBAAmB;CAOjF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DBIButton = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const discord_js_1 = tslib_1.__importDefault(require("discord.js"));
|
|
6
|
+
const Interaction_1 = require("./Interaction");
|
|
7
|
+
const customId_1 = require("../utils/customId");
|
|
8
|
+
class DBIButton extends Interaction_1.DBIBaseInteraction {
|
|
9
|
+
constructor(dbi, args) {
|
|
10
|
+
super(dbi, {
|
|
11
|
+
...args,
|
|
12
|
+
type: "Button",
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
onExecute(ctx) { }
|
|
16
|
+
;
|
|
17
|
+
toJSON(...customData) {
|
|
18
|
+
return {
|
|
19
|
+
...this.options,
|
|
20
|
+
customId: (0, customId_1.customIdBuilder)(this.dbi, this.name, customData),
|
|
21
|
+
type: discord_js_1.default.ComponentType.Button
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
;
|
|
25
|
+
}
|
|
26
|
+
exports.DBIButton = DBIButton;
|
|
27
|
+
//# sourceMappingURL=Button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../src/types/Button.ts"],"names":[],"mappings":";;;;AAAA,oEAAiC;AAEjC,+CAAuE;AACvE,gDAAoD;AASpD,MAAa,SAAU,SAAQ,gCAAkB;IAC/C,YAAY,GAAQ,EAAE,IAAuB;QAC3C,KAAK,CAAC,GAAG,EAAE;YACT,GAAI,IAAY;YAChB,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;IACL,CAAC;IAIQ,SAAS,CAAC,GAAyB,IAAwB,CAAC;IAAA,CAAC;IAEtE,MAAM,CAAC,GAAG,UAAwC;QAChD,OAAO;YACL,GAAG,IAAI,CAAC,OAAO;YACf,QAAQ,EAAE,IAAA,0BAAe,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC;YAC1D,IAAI,EAAE,oBAAO,CAAC,aAAa,CAAC,MAAM;SAC5B,CAAC;IACX,CAAC;IAAA,CAAC;CACH;AAnBD,8BAmBC","sourcesContent":["import Discord from \"discord.js\";\r\nimport { DBI } from \"../DBI\";\r\nimport { DBIBaseInteraction, IDBIBaseExecuteCtx } from \"./Interaction\";\r\nimport { customIdBuilder } from \"../utils/customId\";\r\n\r\nexport interface IDBIButtonExecuteCtx extends IDBIBaseExecuteCtx {\r\n interaction: Discord.ButtonInteraction<Discord.CacheType>;\r\n data: ({ [key: string]: any, $ref: string, $unRef(): boolean } | string | number)[];\r\n}\r\n\r\nexport type TDBIButtonOmitted = Omit<DBIButton, \"type\" | \"description\" | \"dbi\" | \"toJSON\">;\r\n\r\nexport class DBIButton extends DBIBaseInteraction {\r\n constructor(dbi: DBI, args: TDBIButtonOmitted) {\r\n super(dbi, {\r\n ...(args as any),\r\n type: \"Button\",\r\n });\r\n }\r\n\r\n declare options: Omit<Discord.ButtonComponentData, \"customId\" | \"type\">;\r\n\r\n override onExecute(ctx: IDBIButtonExecuteCtx): Promise<any> | any { };\r\n\r\n toJSON(...customData: (string | number | object)[]): Discord.ButtonComponentData {\r\n return {\r\n ...this.options,\r\n customId: customIdBuilder(this.dbi, this.name, customData),\r\n type: Discord.ComponentType.Button\r\n } as any;\r\n };\r\n}"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import Discord from "discord.js";
|
|
2
|
+
import { DBI } from "../../DBI";
|
|
3
|
+
import { DBIBaseInteraction, IDBIBaseExecuteCtx } from "../Interaction";
|
|
4
|
+
export interface IDBIChatInputExecuteCtx extends IDBIBaseExecuteCtx {
|
|
5
|
+
interaction: Discord.ChatInputCommandInteraction<Discord.CacheType>;
|
|
6
|
+
}
|
|
7
|
+
export declare type TDBIChatInputOmitted = Omit<DBIChatInput, "type" | "dbi">;
|
|
8
|
+
export declare class DBIChatInput extends DBIBaseInteraction {
|
|
9
|
+
constructor(dbi: DBI, cfg: TDBIChatInputOmitted);
|
|
10
|
+
directMessages?: boolean;
|
|
11
|
+
defaultMemberPermissions?: Discord.PermissionsString[];
|
|
12
|
+
options?: any[];
|
|
13
|
+
onExecute(ctx: IDBIChatInputExecuteCtx): void;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=ChatInput.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatInput.d.ts","sourceRoot":"","sources":["../../../../src/types/ChatInput/ChatInput.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAExE,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE,WAAW,EAAE,OAAO,CAAC,2BAA2B,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;CACrE;AAED,oBAAY,oBAAoB,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;AAEtE,qBAAa,YAAa,SAAQ,kBAAkB;gBACtC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,oBAAoB;IAQ/C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,wBAAwB,CAAC,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAC/C,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,SAAS,CAAC,GAAG,EAAE,uBAAuB;CAChD"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DBIChatInput = void 0;
|
|
4
|
+
const Interaction_1 = require("../Interaction");
|
|
5
|
+
class DBIChatInput extends Interaction_1.DBIBaseInteraction {
|
|
6
|
+
constructor(dbi, cfg) {
|
|
7
|
+
super(dbi, {
|
|
8
|
+
...cfg,
|
|
9
|
+
type: "ChatInput",
|
|
10
|
+
name: cfg.name.toLowerCase(),
|
|
11
|
+
options: Array.isArray(cfg.options) ? cfg.options : []
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
directMessages;
|
|
15
|
+
defaultMemberPermissions;
|
|
16
|
+
onExecute(ctx) { }
|
|
17
|
+
}
|
|
18
|
+
exports.DBIChatInput = DBIChatInput;
|
|
19
|
+
//# sourceMappingURL=ChatInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatInput.js","sourceRoot":"","sources":["../../../../src/types/ChatInput/ChatInput.ts"],"names":[],"mappings":";;;AAEA,gDAAwE;AAQxE,MAAa,YAAa,SAAQ,gCAAkB;IAClD,YAAY,GAAQ,EAAE,GAAyB;QAC7C,KAAK,CAAC,GAAG,EAAE;YACT,GAAI,GAAW;YACf,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE;YAC5B,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;SACvD,CAAC,CAAC;IACL,CAAC;IACD,cAAc,CAAW;IACzB,wBAAwB,CAA+B;IAE9C,SAAS,CAAC,GAA4B,IAAG,CAAC;CACpD;AAbD,oCAaC","sourcesContent":["import Discord from \"discord.js\";\r\nimport { DBI } from \"../../DBI\";\r\nimport { DBIBaseInteraction, IDBIBaseExecuteCtx } from \"../Interaction\";\r\n\r\nexport interface IDBIChatInputExecuteCtx extends IDBIBaseExecuteCtx {\r\n interaction: Discord.ChatInputCommandInteraction<Discord.CacheType>;\r\n}\r\n\r\nexport type TDBIChatInputOmitted = Omit<DBIChatInput, \"type\" | \"dbi\">;\r\n\r\nexport class DBIChatInput extends DBIBaseInteraction {\r\n constructor(dbi: DBI, cfg: TDBIChatInputOmitted) {\r\n super(dbi, {\r\n ...(cfg as any),\r\n type: \"ChatInput\",\r\n name: cfg.name.toLowerCase(),\r\n options: Array.isArray(cfg.options) ? cfg.options : []\r\n });\r\n }\r\n directMessages?: boolean;\r\n defaultMemberPermissions?: Discord.PermissionsString[];\r\n declare options?: any[];\r\n override onExecute(ctx: IDBIChatInputExecuteCtx) {}\r\n}"]}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import Discord from "discord.js";
|
|
2
|
+
import { IDBIBaseExecuteCtx } from "../Interaction";
|
|
3
|
+
declare type TValueName<T> = {
|
|
4
|
+
value: T;
|
|
5
|
+
name: string;
|
|
6
|
+
};
|
|
7
|
+
declare type TNameDescription = {
|
|
8
|
+
name: string;
|
|
9
|
+
description: string;
|
|
10
|
+
required?: boolean;
|
|
11
|
+
};
|
|
12
|
+
declare type TMinMaxLength = {
|
|
13
|
+
maxLength?: number;
|
|
14
|
+
minLength?: number;
|
|
15
|
+
};
|
|
16
|
+
declare type TMinMaxValue = {
|
|
17
|
+
maxValue?: number;
|
|
18
|
+
minValue?: number;
|
|
19
|
+
};
|
|
20
|
+
export interface IDBICompleteCtx extends IDBIBaseExecuteCtx {
|
|
21
|
+
interaction: Discord.AutocompleteInteraction;
|
|
22
|
+
value: string | number;
|
|
23
|
+
}
|
|
24
|
+
export declare class DBIChatInputOptions {
|
|
25
|
+
static stringAutocomplete(cfg: TNameDescription & TMinMaxLength & {
|
|
26
|
+
onComplete(ctx: IDBICompleteCtx): Promise<TValueName<string>[]>;
|
|
27
|
+
}): {
|
|
28
|
+
type: Discord.ApplicationCommandOptionType;
|
|
29
|
+
name: string;
|
|
30
|
+
autocomplete: boolean;
|
|
31
|
+
onComplete: (ctx: IDBICompleteCtx) => Promise<TValueName<string>[]>;
|
|
32
|
+
description: string;
|
|
33
|
+
maxLength: number;
|
|
34
|
+
minLength: number;
|
|
35
|
+
required: boolean;
|
|
36
|
+
};
|
|
37
|
+
static stringChoices(cfg: TNameDescription & TMinMaxLength & {
|
|
38
|
+
choices: TValueName<string>[];
|
|
39
|
+
}): {
|
|
40
|
+
type: Discord.ApplicationCommandOptionType;
|
|
41
|
+
name: string;
|
|
42
|
+
choices: TValueName<string>[];
|
|
43
|
+
description: string;
|
|
44
|
+
maxLength: number;
|
|
45
|
+
minLength: number;
|
|
46
|
+
required: boolean;
|
|
47
|
+
};
|
|
48
|
+
static string(cfg: TNameDescription & TMinMaxLength): {
|
|
49
|
+
type: Discord.ApplicationCommandOptionType;
|
|
50
|
+
name: string;
|
|
51
|
+
description: string;
|
|
52
|
+
maxLength: number;
|
|
53
|
+
minLength: number;
|
|
54
|
+
required: boolean;
|
|
55
|
+
};
|
|
56
|
+
static numberAutocomplete(cfg: TNameDescription & TMinMaxValue & {
|
|
57
|
+
onComplete(ctx: IDBICompleteCtx): Promise<TValueName<number>[]>;
|
|
58
|
+
}): {
|
|
59
|
+
type: Discord.ApplicationCommandOptionType;
|
|
60
|
+
name: string;
|
|
61
|
+
autocomplete: boolean;
|
|
62
|
+
onComplete: (ctx: IDBICompleteCtx) => Promise<TValueName<number>[]>;
|
|
63
|
+
description: string;
|
|
64
|
+
maxValue: number;
|
|
65
|
+
minValue: number;
|
|
66
|
+
required: boolean;
|
|
67
|
+
};
|
|
68
|
+
static numberChoices(cfg: TNameDescription & TMinMaxValue & {
|
|
69
|
+
choices: TValueName<number>[];
|
|
70
|
+
}): {
|
|
71
|
+
type: Discord.ApplicationCommandOptionType;
|
|
72
|
+
name: string;
|
|
73
|
+
choices: TValueName<number>[];
|
|
74
|
+
description: string;
|
|
75
|
+
maxValue: number;
|
|
76
|
+
minValue: number;
|
|
77
|
+
required: boolean;
|
|
78
|
+
};
|
|
79
|
+
static number(cfg: TNameDescription & TMinMaxValue): {
|
|
80
|
+
type: Discord.ApplicationCommandOptionType;
|
|
81
|
+
name: string;
|
|
82
|
+
description: string;
|
|
83
|
+
maxValue: number;
|
|
84
|
+
minValue: number;
|
|
85
|
+
required: boolean;
|
|
86
|
+
};
|
|
87
|
+
static integerAutocomplete(cfg: TNameDescription & TMinMaxValue & {
|
|
88
|
+
onComplete(ctx: IDBICompleteCtx): Promise<TValueName<number>[]>;
|
|
89
|
+
}): {
|
|
90
|
+
type: Discord.ApplicationCommandOptionType;
|
|
91
|
+
name: string;
|
|
92
|
+
autocomplete: boolean;
|
|
93
|
+
onComplete: (ctx: IDBICompleteCtx) => Promise<TValueName<number>[]>;
|
|
94
|
+
description: string;
|
|
95
|
+
maxValue: number;
|
|
96
|
+
minValue: number;
|
|
97
|
+
required: boolean;
|
|
98
|
+
};
|
|
99
|
+
static integerChoices(cfg: TNameDescription & TMinMaxValue & {
|
|
100
|
+
choices: TValueName<number>[];
|
|
101
|
+
}): {
|
|
102
|
+
type: Discord.ApplicationCommandOptionType;
|
|
103
|
+
name: string;
|
|
104
|
+
choices: TValueName<number>[];
|
|
105
|
+
description: string;
|
|
106
|
+
maxValue: number;
|
|
107
|
+
minValue: number;
|
|
108
|
+
required: boolean;
|
|
109
|
+
};
|
|
110
|
+
static integer(cfg: TNameDescription & TMinMaxValue): {
|
|
111
|
+
type: Discord.ApplicationCommandOptionType;
|
|
112
|
+
name: string;
|
|
113
|
+
description: string;
|
|
114
|
+
maxValue: number;
|
|
115
|
+
minValue: number;
|
|
116
|
+
required: boolean;
|
|
117
|
+
};
|
|
118
|
+
static boolean(cfg: TNameDescription): {
|
|
119
|
+
type: Discord.ApplicationCommandOptionType;
|
|
120
|
+
name: string;
|
|
121
|
+
description: string;
|
|
122
|
+
required: boolean;
|
|
123
|
+
};
|
|
124
|
+
static attachment(cfg: TNameDescription): {
|
|
125
|
+
type: Discord.ApplicationCommandOptionType;
|
|
126
|
+
name: string;
|
|
127
|
+
description: string;
|
|
128
|
+
required: boolean;
|
|
129
|
+
};
|
|
130
|
+
static channel(cfg: TNameDescription & {
|
|
131
|
+
channelTypes: Discord.ChannelType[];
|
|
132
|
+
}): {
|
|
133
|
+
type: Discord.ApplicationCommandOptionType;
|
|
134
|
+
name: string;
|
|
135
|
+
description: string;
|
|
136
|
+
channelTypes: Discord.ChannelType[];
|
|
137
|
+
required: boolean;
|
|
138
|
+
};
|
|
139
|
+
static mentionable(cfg: TNameDescription): {
|
|
140
|
+
type: Discord.ApplicationCommandOptionType;
|
|
141
|
+
name: string;
|
|
142
|
+
description: string;
|
|
143
|
+
required: boolean;
|
|
144
|
+
};
|
|
145
|
+
static user(cfg: TNameDescription): {
|
|
146
|
+
type: Discord.ApplicationCommandOptionType;
|
|
147
|
+
name: string;
|
|
148
|
+
description: string;
|
|
149
|
+
required: boolean;
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
export {};
|
|
153
|
+
//# sourceMappingURL=ChatInputOptions.d.ts.map
|