@mostfeatured/dbi 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/DBI.d.ts +4 -1
- package/dist/DBI.d.ts.map +1 -1
- package/dist/DBI.js +106 -49
- package/dist/DBI.js.map +1 -1
- package/dist/Events.d.ts +6 -6
- package/dist/Events.d.ts.map +1 -1
- package/dist/Events.js +1 -1
- package/dist/Events.js.map +1 -1
- package/dist/methods/handleMessageCommands.d.ts.map +1 -1
- package/dist/methods/handleMessageCommands.js +71 -37
- package/dist/methods/handleMessageCommands.js.map +1 -1
- package/dist/methods/hookInteractionListeners.d.ts.map +1 -1
- package/dist/methods/hookInteractionListeners.js +122 -36
- package/dist/methods/hookInteractionListeners.js.map +1 -1
- package/dist/types/ChatInput/ChatInputOptions.d.ts +81 -23
- package/dist/types/ChatInput/ChatInputOptions.d.ts.map +1 -1
- package/dist/types/ChatInput/ChatInputOptions.js +28 -15
- package/dist/types/ChatInput/ChatInputOptions.js.map +1 -1
- package/package.json +1 -1
- package/src/DBI.ts +523 -170
- package/src/Events.ts +68 -21
- package/src/methods/handleMessageCommands.ts +182 -63
- package/src/methods/hookInteractionListeners.ts +155 -60
- package/src/types/ChatInput/ChatInputOptions.ts +213 -36
package/dist/DBI.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import Discord from "discord.js";
|
|
1
|
+
import Discord, { MessagePayload } from "discord.js";
|
|
2
2
|
import { DBIChatInput, TDBIChatInputOmitted } from "./types/ChatInput/ChatInput";
|
|
3
3
|
import { DBIChatInputOptions } from "./types/ChatInput/ChatInputOptions";
|
|
4
4
|
import { ClientEvents, DBIEvent, TDBIEventOmitted } from "./types/Event";
|
|
@@ -73,6 +73,9 @@ export interface DBIConfigConstructor {
|
|
|
73
73
|
locale?: TDBILocaleString;
|
|
74
74
|
directMessages?: boolean;
|
|
75
75
|
defaultMemberPermissions?: Discord.PermissionsString[];
|
|
76
|
+
messageCommands?: {
|
|
77
|
+
deferReplyContent?: MessagePayload | string;
|
|
78
|
+
};
|
|
76
79
|
};
|
|
77
80
|
sharding?: "hybrid" | "default" | "off";
|
|
78
81
|
/**
|
package/dist/DBI.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DBI.d.ts","sourceRoot":"","sources":["../src/DBI.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"DBI.d.ts","sourceRoot":"","sources":["../src/DBI.ts"],"names":[],"mappings":"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"}
|
package/dist/DBI.js
CHANGED
|
@@ -44,13 +44,17 @@ class DBI {
|
|
|
44
44
|
locale: "en",
|
|
45
45
|
defaultMemberPermissions: [],
|
|
46
46
|
directMessages: false,
|
|
47
|
-
...(config.defaults || {})
|
|
47
|
+
...(config.defaults || {}),
|
|
48
|
+
messageCommands: {
|
|
49
|
+
deferReplyContent: "Loading...",
|
|
50
|
+
...(config.defaults?.messageCommands || {}),
|
|
51
|
+
},
|
|
48
52
|
};
|
|
49
53
|
config.sharding = config.sharding ?? "off";
|
|
50
54
|
config.strict = config.strict ?? true;
|
|
51
55
|
config.references = {
|
|
52
56
|
autoClear: undefined,
|
|
53
|
-
...(config.references || {})
|
|
57
|
+
...(config.references || {}),
|
|
54
58
|
};
|
|
55
59
|
if (config.messageCommands) {
|
|
56
60
|
if (config.strict && !config.messageCommands?.prefixes?.length)
|
|
@@ -58,15 +62,15 @@ class DBI {
|
|
|
58
62
|
let { typeAliases } = config.messageCommands;
|
|
59
63
|
config.messageCommands.typeAliases = {
|
|
60
64
|
booleans: typeAliases.booleans ?? {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
true: true,
|
|
66
|
+
false: false,
|
|
67
|
+
yes: true,
|
|
68
|
+
no: false,
|
|
69
|
+
y: true,
|
|
70
|
+
n: false,
|
|
67
71
|
"1": true,
|
|
68
|
-
"0": false
|
|
69
|
-
}
|
|
72
|
+
"0": false,
|
|
73
|
+
},
|
|
70
74
|
};
|
|
71
75
|
}
|
|
72
76
|
// @ts-ignore
|
|
@@ -85,7 +89,7 @@ class DBI {
|
|
|
85
89
|
refs: config.data?.refs ?? new Map(),
|
|
86
90
|
clients: Object.assign([], {
|
|
87
91
|
next(key = "global") {
|
|
88
|
-
this.indexes[key] = ((
|
|
92
|
+
this.indexes[key] = ((this.indexes[key] ?? -1) + 1) % this.length;
|
|
89
93
|
return this[this.indexes[key]];
|
|
90
94
|
},
|
|
91
95
|
random(size) {
|
|
@@ -102,29 +106,41 @@ class DBI {
|
|
|
102
106
|
get(namespace) {
|
|
103
107
|
return this.find((i) => i.namespace === namespace);
|
|
104
108
|
},
|
|
105
|
-
indexes: {}
|
|
106
|
-
})
|
|
109
|
+
indexes: {},
|
|
110
|
+
}),
|
|
107
111
|
};
|
|
108
112
|
this.events = new Events_1.Events(this);
|
|
109
|
-
config.discord = Array.isArray(config.discord)
|
|
110
|
-
config.discord
|
|
111
|
-
|
|
113
|
+
config.discord = Array.isArray(config.discord)
|
|
114
|
+
? config.discord
|
|
115
|
+
: [
|
|
116
|
+
{
|
|
117
|
+
token: config.discord.token,
|
|
118
|
+
options: config.discord.options,
|
|
119
|
+
namespace: "default",
|
|
120
|
+
},
|
|
121
|
+
];
|
|
112
122
|
this.data.clients.push(...config.discord);
|
|
113
123
|
for (let clientContext of this.data.clients) {
|
|
114
124
|
let client = new discord_js_1.default.Client({
|
|
115
125
|
...(clientContext.options || {}),
|
|
116
|
-
...(config.sharding == "hybrid"
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
126
|
+
...(config.sharding == "hybrid"
|
|
127
|
+
? {
|
|
128
|
+
shards: Sharding.getInfo().SHARD_LIST,
|
|
129
|
+
shardCount: Sharding.getInfo().TOTAL_SHARDS,
|
|
130
|
+
}
|
|
131
|
+
: {}),
|
|
120
132
|
});
|
|
121
133
|
clientContext.client = client;
|
|
122
134
|
}
|
|
123
135
|
if (this.data.clients.length === 0)
|
|
124
136
|
throw new Error("No clients provided.");
|
|
125
|
-
if (this.data.clients.length !== 1 &&
|
|
137
|
+
if (this.data.clients.length !== 1 &&
|
|
138
|
+
!(config.sharding && config.sharding === "off"))
|
|
126
139
|
throw new Error("Sharding only supports 1 client.");
|
|
127
|
-
this.cluster =
|
|
140
|
+
this.cluster =
|
|
141
|
+
config.sharding == "hybrid"
|
|
142
|
+
? new Sharding.ClusterClient(this.data.clients[0].client)
|
|
143
|
+
: undefined;
|
|
128
144
|
this._loaded = false;
|
|
129
145
|
this._hooked = false;
|
|
130
146
|
}
|
|
@@ -139,7 +155,8 @@ class DBI {
|
|
|
139
155
|
this.data.unloaders.add((() => {
|
|
140
156
|
let interval = setInterval(() => {
|
|
141
157
|
this.data.refs.forEach(({ at, ttl }, key) => {
|
|
142
|
-
if (Date.now() >
|
|
158
|
+
if (Date.now() >
|
|
159
|
+
at + (ttl || this.config.references.autoClear.ttl)) {
|
|
143
160
|
this.data.refs.delete(key);
|
|
144
161
|
}
|
|
145
162
|
});
|
|
@@ -166,7 +183,7 @@ class DBI {
|
|
|
166
183
|
if (!this._hooked)
|
|
167
184
|
return;
|
|
168
185
|
this._hooked = false;
|
|
169
|
-
this.data.unloaders.forEach(f => {
|
|
186
|
+
this.data.unloaders.forEach((f) => {
|
|
170
187
|
f();
|
|
171
188
|
});
|
|
172
189
|
}
|
|
@@ -193,17 +210,22 @@ class DBI {
|
|
|
193
210
|
return dbiChatInput;
|
|
194
211
|
};
|
|
195
212
|
ChatInput = Object.assign(ChatInput, class {
|
|
196
|
-
constructor(...args) {
|
|
213
|
+
constructor(...args) {
|
|
214
|
+
return ChatInput.apply(this, args);
|
|
215
|
+
}
|
|
197
216
|
});
|
|
198
217
|
let Event = function (cfg) {
|
|
199
218
|
let dbiEvent = new Event_1.DBIEvent(self, cfg);
|
|
200
|
-
if (self.config.strict &&
|
|
219
|
+
if (self.config.strict &&
|
|
220
|
+
self.data.events.has(dbiEvent.id || dbiEvent.name))
|
|
201
221
|
throw new Error(`DBIEvent "${dbiEvent.id || dbiEvent.name}" already loaded!`);
|
|
202
222
|
self.data.events.set(dbiEvent.id || dbiEvent.name, dbiEvent);
|
|
203
223
|
return dbiEvent;
|
|
204
224
|
};
|
|
205
225
|
Event = Object.assign(Event, class {
|
|
206
|
-
constructor(...args) {
|
|
226
|
+
constructor(...args) {
|
|
227
|
+
return Event.apply(this, args);
|
|
228
|
+
}
|
|
207
229
|
});
|
|
208
230
|
let Button = function (cfg) {
|
|
209
231
|
let dbiButton = new Button_1.DBIButton(self, cfg);
|
|
@@ -213,77 +235,100 @@ class DBI {
|
|
|
213
235
|
return dbiButton;
|
|
214
236
|
};
|
|
215
237
|
Button = Object.assign(Button, class {
|
|
216
|
-
constructor(...args) {
|
|
238
|
+
constructor(...args) {
|
|
239
|
+
return Button.apply(this, args);
|
|
240
|
+
}
|
|
217
241
|
});
|
|
218
242
|
let StringSelectMenu = function (cfg) {
|
|
219
243
|
let dbiStringSelectMenu = new StringSelectMenu_1.DBIStringSelectMenu(self, cfg);
|
|
220
|
-
if (self.config.strict &&
|
|
244
|
+
if (self.config.strict &&
|
|
245
|
+
self.data.interactions.has(dbiStringSelectMenu.name))
|
|
221
246
|
throw new Error(`DBIStringSelectMenu "${dbiStringSelectMenu.name}" already loaded as "${self.data.interactions.get(dbiStringSelectMenu.name)?.type}"!`);
|
|
222
247
|
self.data.interactions.set(dbiStringSelectMenu.name, dbiStringSelectMenu);
|
|
223
248
|
return dbiStringSelectMenu;
|
|
224
249
|
};
|
|
225
250
|
StringSelectMenu = Object.assign(StringSelectMenu, class {
|
|
226
|
-
constructor(...args) {
|
|
251
|
+
constructor(...args) {
|
|
252
|
+
return StringSelectMenu.apply(this, args);
|
|
253
|
+
}
|
|
227
254
|
});
|
|
228
255
|
let UserSelectMenu = function (cfg) {
|
|
229
256
|
let dbiUserSelectMenu = new UserSelectMenu_1.DBIUserSelectMenu(self, cfg);
|
|
230
|
-
if (self.config.strict &&
|
|
257
|
+
if (self.config.strict &&
|
|
258
|
+
self.data.interactions.has(dbiUserSelectMenu.name))
|
|
231
259
|
throw new Error(`DBIUserSelectMenu "${dbiUserSelectMenu.name}" already loaded as "${self.data.interactions.get(dbiUserSelectMenu.name)?.type}"!`);
|
|
232
260
|
self.data.interactions.set(dbiUserSelectMenu.name, dbiUserSelectMenu);
|
|
233
261
|
return dbiUserSelectMenu;
|
|
234
262
|
};
|
|
235
263
|
UserSelectMenu = Object.assign(UserSelectMenu, class {
|
|
236
|
-
constructor(...args) {
|
|
264
|
+
constructor(...args) {
|
|
265
|
+
return UserSelectMenu.apply(this, args);
|
|
266
|
+
}
|
|
237
267
|
});
|
|
238
268
|
let RoleSelectMenu = function (cfg) {
|
|
239
269
|
let dbiRoleSelectMenu = new RoleSelectMenu_1.DBIRoleSelectMenu(self, cfg);
|
|
240
|
-
if (self.config.strict &&
|
|
270
|
+
if (self.config.strict &&
|
|
271
|
+
self.data.interactions.has(dbiRoleSelectMenu.name))
|
|
241
272
|
throw new Error(`DBIRoleSelectMenu "${dbiRoleSelectMenu.name}" already loaded as "${self.data.interactions.get(dbiRoleSelectMenu.name)?.type}"!`);
|
|
242
273
|
self.data.interactions.set(dbiRoleSelectMenu.name, dbiRoleSelectMenu);
|
|
243
274
|
return dbiRoleSelectMenu;
|
|
244
275
|
};
|
|
245
276
|
RoleSelectMenu = Object.assign(RoleSelectMenu, class {
|
|
246
|
-
constructor(...args) {
|
|
277
|
+
constructor(...args) {
|
|
278
|
+
return RoleSelectMenu.apply(this, args);
|
|
279
|
+
}
|
|
247
280
|
});
|
|
248
281
|
let ChannelSelectMenu = function (cfg) {
|
|
249
282
|
let dbiChannelSelectMenu = new ChannelSelectMenu_1.DBIChannelSelectMenu(self, cfg);
|
|
250
|
-
if (self.config.strict &&
|
|
283
|
+
if (self.config.strict &&
|
|
284
|
+
self.data.interactions.has(dbiChannelSelectMenu.name))
|
|
251
285
|
throw new Error(`DBIChannelSelectMenu "${dbiChannelSelectMenu.name}" already loaded as "${self.data.interactions.get(dbiChannelSelectMenu.name)?.type}"!`);
|
|
252
286
|
self.data.interactions.set(dbiChannelSelectMenu.name, dbiChannelSelectMenu);
|
|
253
287
|
return dbiChannelSelectMenu;
|
|
254
288
|
};
|
|
255
289
|
ChannelSelectMenu = Object.assign(ChannelSelectMenu, class {
|
|
256
|
-
constructor(...args) {
|
|
290
|
+
constructor(...args) {
|
|
291
|
+
return ChannelSelectMenu.apply(this, args);
|
|
292
|
+
}
|
|
257
293
|
});
|
|
258
294
|
let MentionableSelectMenu = function (cfg) {
|
|
259
295
|
let dbiMentionableSelectMenu = new MentionableSelectMenu_1.DBIMentionableSelectMenu(self, cfg);
|
|
260
|
-
if (self.config.strict &&
|
|
296
|
+
if (self.config.strict &&
|
|
297
|
+
self.data.interactions.has(dbiMentionableSelectMenu.name))
|
|
261
298
|
throw new Error(`DBIMentionableSelectMenu "${dbiMentionableSelectMenu.name}" already loaded as "${self.data.interactions.get(dbiMentionableSelectMenu.name)?.type}"!`);
|
|
262
299
|
self.data.interactions.set(dbiMentionableSelectMenu.name, dbiMentionableSelectMenu);
|
|
263
300
|
return dbiMentionableSelectMenu;
|
|
264
301
|
};
|
|
265
302
|
MentionableSelectMenu = Object.assign(MentionableSelectMenu, class {
|
|
266
|
-
constructor(...args) {
|
|
303
|
+
constructor(...args) {
|
|
304
|
+
return MentionableSelectMenu.apply(this, args);
|
|
305
|
+
}
|
|
267
306
|
});
|
|
268
307
|
let MessageContextMenu = function (cfg) {
|
|
269
308
|
let dbiMessageContextMenu = new MessageContextMenu_1.DBIMessageContextMenu(self, cfg);
|
|
270
|
-
if (self.config.strict &&
|
|
309
|
+
if (self.config.strict &&
|
|
310
|
+
self.data.interactions.has(dbiMessageContextMenu.name))
|
|
271
311
|
throw new Error(`DBIMessageContextMenu "${dbiMessageContextMenu.name}" already loaded as "${self.data.interactions.get(dbiMessageContextMenu.name)?.type}"!`);
|
|
272
312
|
self.data.interactions.set(dbiMessageContextMenu.name, dbiMessageContextMenu);
|
|
273
313
|
return dbiMessageContextMenu;
|
|
274
314
|
};
|
|
275
315
|
MessageContextMenu = Object.assign(MessageContextMenu, class {
|
|
276
|
-
constructor(...args) {
|
|
316
|
+
constructor(...args) {
|
|
317
|
+
return MessageContextMenu.apply(this, args);
|
|
318
|
+
}
|
|
277
319
|
});
|
|
278
320
|
let UserContextMenu = function (cfg) {
|
|
279
321
|
let dbiUserContextMenu = new UserContextMenu_1.DBIUserContextMenu(self, cfg);
|
|
280
|
-
if (self.config.strict &&
|
|
322
|
+
if (self.config.strict &&
|
|
323
|
+
self.data.interactions.has(dbiUserContextMenu.name))
|
|
281
324
|
throw new Error(`DBIUserContextMenu "${dbiUserContextMenu.name}" already loaded as "${self.data.interactions.get(dbiUserContextMenu.name)?.type}"!`);
|
|
282
325
|
self.data.interactions.set(dbiUserContextMenu.name, dbiUserContextMenu);
|
|
283
326
|
return dbiUserContextMenu;
|
|
284
327
|
};
|
|
285
328
|
UserContextMenu = Object.assign(UserContextMenu, class {
|
|
286
|
-
constructor(...args) {
|
|
329
|
+
constructor(...args) {
|
|
330
|
+
return UserContextMenu.apply(this, args);
|
|
331
|
+
}
|
|
287
332
|
});
|
|
288
333
|
let Modal = function (cfg) {
|
|
289
334
|
let dbiModal = new Modal_1.DBIModal(self, cfg);
|
|
@@ -293,11 +338,14 @@ class DBI {
|
|
|
293
338
|
return dbiModal;
|
|
294
339
|
};
|
|
295
340
|
Modal = Object.assign(Modal, class {
|
|
296
|
-
constructor(...args) {
|
|
341
|
+
constructor(...args) {
|
|
342
|
+
return Modal.apply(this, args);
|
|
343
|
+
}
|
|
297
344
|
});
|
|
298
345
|
let Locale = function (cfg) {
|
|
299
346
|
let dbiLocale = new Locale_1.DBILocale(self, cfg);
|
|
300
|
-
if (self.config.strict &&
|
|
347
|
+
if (self.config.strict &&
|
|
348
|
+
self.data.interactionLocales.has(dbiLocale.name))
|
|
301
349
|
throw new Error(`DBILocale "${dbiLocale.name}" already loaded!`);
|
|
302
350
|
if (self.data.locales.has(dbiLocale.name))
|
|
303
351
|
dbiLocale.mergeLocale(self.data.locales.get(dbiLocale.name));
|
|
@@ -305,7 +353,9 @@ class DBI {
|
|
|
305
353
|
return dbiLocale;
|
|
306
354
|
};
|
|
307
355
|
Locale = Object.assign(Locale, class {
|
|
308
|
-
constructor(...args) {
|
|
356
|
+
constructor(...args) {
|
|
357
|
+
return Locale.apply(this, args);
|
|
358
|
+
}
|
|
309
359
|
});
|
|
310
360
|
let CustomEvent = function (cfg) {
|
|
311
361
|
let dbiCustomEvent = new CustomEvent_1.DBICustomEvent(self, cfg);
|
|
@@ -316,17 +366,22 @@ class DBI {
|
|
|
316
366
|
return dbiCustomEvent;
|
|
317
367
|
};
|
|
318
368
|
CustomEvent = Object.assign(CustomEvent, class {
|
|
319
|
-
constructor(...args) {
|
|
369
|
+
constructor(...args) {
|
|
370
|
+
return CustomEvent.apply(this, args);
|
|
371
|
+
}
|
|
320
372
|
});
|
|
321
373
|
let InteractionLocale = function (cfg) {
|
|
322
374
|
let dbiInteractionLocale = new InteractionLocale_1.DBIInteractionLocale(self, cfg);
|
|
323
|
-
if (self.config.strict &&
|
|
375
|
+
if (self.config.strict &&
|
|
376
|
+
self.data.interactionLocales.has(dbiInteractionLocale.name))
|
|
324
377
|
throw new Error(`DBIInteractionLocale "${dbiInteractionLocale.name}" already loaded!`);
|
|
325
378
|
self.data.interactionLocales.set(dbiInteractionLocale.name, dbiInteractionLocale);
|
|
326
379
|
return dbiInteractionLocale;
|
|
327
380
|
};
|
|
328
381
|
InteractionLocale = Object.assign(InteractionLocale, class {
|
|
329
|
-
constructor(...args) {
|
|
382
|
+
constructor(...args) {
|
|
383
|
+
return InteractionLocale.apply(this, args);
|
|
384
|
+
}
|
|
330
385
|
});
|
|
331
386
|
await cb({
|
|
332
387
|
ChatInput,
|
|
@@ -431,7 +486,9 @@ class DBI {
|
|
|
431
486
|
return this._loaded;
|
|
432
487
|
}
|
|
433
488
|
async publish(...args) {
|
|
434
|
-
let interactions = this.data.interactions.filter(i => i.type == "ChatInput" ||
|
|
489
|
+
let interactions = this.data.interactions.filter((i) => i.type == "ChatInput" ||
|
|
490
|
+
i.type == "MessageContextMenu" ||
|
|
491
|
+
i.type == "UserContextMenu");
|
|
435
492
|
switch (args[0]) {
|
|
436
493
|
case "Global": {
|
|
437
494
|
return await (0, publishInteractions_1.publishInteractions)(this.data.clients, args[1] ? new discord_js_1.default.Collection() : interactions, this.data.interactionLocales, args[0]);
|
package/dist/DBI.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DBI.js","sourceRoot":"","sources":["../src/DBI.ts"],"names":[],"mappings":"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","sourcesContent":["import Discord from \"discord.js\";\r\nimport { DBIChatInput, TDBIChatInputOmitted } from \"./types/ChatInput/ChatInput\";\r\nimport { DBIChatInputOptions } from \"./types/ChatInput/ChatInputOptions\";\r\nimport { publishInteractions } from \"./methods/publishInteractions\";\r\nimport { ClientEvents, DBIEvent, TDBIEventOmitted } from \"./types/Event\";\r\nimport { MemoryStore } from \"./utils/MemoryStore\";\r\nimport { hookInteractionListeners } from \"./methods/hookInteractionListeners\";\r\nimport { Events } from \"./Events\";\r\nimport { DBILocale, TDBILocaleConstructor, TDBILocaleString } from \"./types/other/Locale\";\r\nimport { DBIButton, TDBIButtonOmitted } from \"./types/Components/Button\";\r\nimport { DBIStringSelectMenu, TDBIStringSelectMenuOmitted } from \"./types/Components/StringSelectMenu\";\r\nimport { DBIMessageContextMenu, TDBIMessageContextMenuOmitted } from \"./types/other/MessageContextMenu\";\r\nimport { DBIUserContextMenu, TDBIUserContextMenuOmitted } from \"./types/other/UserContextMenu\";\r\nimport { hookEventListeners } from \"./methods/hookEventListeners\";\r\nimport eventMap from \"./data/eventMap.json\";\r\nimport { DBIModal, TDBIModalOmitted } from \"./types/Components/Modal\";\r\nimport * as Sharding from \"discord-hybrid-sharding\";\r\nimport _ from \"lodash\";\r\nimport { DBIInteractionLocale, TDBIInteractionLocaleOmitted } from \"./types/other/InteractionLocale\";\r\nimport { TDBIInteractions } from \"./types/Interaction\";\r\nimport { NamespaceData, NamespaceEnums } from \"../generated/namespaceData\";\r\nimport { DBICustomEvent, TDBICustomEventOmitted } from \"./types/other/CustomEvent\";\r\nimport aaq from \"async-and-quick\";\r\nimport { DBIUserSelectMenu, TDBIUserSelectMenuOmitted } from \"./types/Components/UserSelectMenu\";\r\nimport { DBIMentionableSelectMenu, TDBIMentionableSelectMenuOmitted } from \"./types/Components/MentionableSelectMenu\";\r\nimport { DBIChannelSelectMenu, TDBIChannelSelectMenuOmitted } from \"./types/Components/ChannelSelectMenu\";\r\nimport { DBIRoleSelectMenu, TDBIRoleSelectMenuOmitted } from \"./types/Components/RoleSelectMenu\";\r\nimport { handleMessageCommands } from \"./methods/handleMessageCommands\";\r\n\r\nexport interface DBIStore {\r\n get(key: string, defaultValue?: any): Promise<any>;\r\n set(key: string, value: any): Promise<void>;\r\n delete(key: string): Promise<void>;\r\n has(key: string): Promise<boolean>;\r\n}\r\n\r\nexport type DBIClientData<TNamespace extends NamespaceEnums> = { namespace: NamespaceData[TNamespace][\"clientNamespaces\"], token: string, options: Discord.ClientOptions, client: Discord.Client<true> };\r\n\r\nexport interface DBIConfig {\r\n discord: {\r\n namespace: string,\r\n token: string,\r\n options: Discord.ClientOptions,\r\n }[];\r\n defaults: {\r\n locale: TDBILocaleString,\r\n directMessages: boolean,\r\n defaultMemberPermissions: Discord.PermissionsString[]\r\n };\r\n\r\n sharding: \"hybrid\" | \"default\" | \"off\";\r\n /**\r\n * Persist store. (Default to MemoryStore thats not persis tho.)\r\n */\r\n store: DBIStore;\r\n\r\n references: {\r\n autoClear?: {\r\n check: number;\r\n ttl: number;\r\n }\r\n };\r\n\r\n strict: boolean;\r\n messageCommands?: {\r\n prefixes: string[];\r\n typeAliases: {\r\n booleans: Record<string, boolean>;\r\n }\r\n }\r\n}\r\n\r\nexport interface DBIConfigConstructor {\r\n discord: {\r\n token: string;\r\n options: Discord.ClientOptions\r\n } | {\r\n namespace: string,\r\n token: string,\r\n options: Discord.ClientOptions,\r\n }[];\r\n\r\n defaults?: {\r\n locale?: TDBILocaleString,\r\n directMessages?: boolean,\r\n defaultMemberPermissions?: Discord.PermissionsString[]\r\n };\r\n\r\n sharding?: \"hybrid\" | \"default\" | \"off\";\r\n /**\r\n * Persist store. (Default to MemoryStore thats not persis tho.)\r\n */\r\n store?: DBIStore;\r\n\r\n references?: {\r\n autoClear?: {\r\n check: number;\r\n ttl: number;\r\n }\r\n };\r\n\r\n data?: {\r\n other?: Record<string, any>;\r\n refs?: Map<string, { at: number, value: any, ttl?: number }>;\r\n }\r\n\r\n strict?: boolean;\r\n\r\n messageCommands?: {\r\n prefixes: string[];\r\n typeAliases?: {\r\n /**\r\n * Example: {\"yes\": true, \"no\": false}\r\n */\r\n booleans?: Record<string, boolean>;\r\n }\r\n }\r\n}\r\n\r\nexport interface DBIRegisterAPI<TNamespace extends NamespaceEnums> {\r\n ChatInput(cfg: TDBIChatInputOmitted<TNamespace>): DBIChatInput<TNamespace>;\r\n ChatInputOptions: DBIChatInputOptions<TNamespace>;\r\n Event(cfg: TDBIEventOmitted<TNamespace>): DBIEvent<TNamespace>;\r\n Locale(cfg: TDBILocaleConstructor<TNamespace>): DBILocale<TNamespace>;\r\n Button(cfg: TDBIButtonOmitted<TNamespace>): DBIButton<TNamespace>;\r\n StringSelectMenu(cfg: TDBIStringSelectMenuOmitted<TNamespace>): DBIStringSelectMenu<TNamespace>;\r\n UserSelectMenu(cfg: TDBIUserSelectMenuOmitted<TNamespace>): DBIUserSelectMenu<TNamespace>;\r\n RoleSelectMenu(cfg: TDBIRoleSelectMenuOmitted<TNamespace>): DBIRoleSelectMenu<TNamespace>;\r\n ChannelSelectMenu(cfg: TDBIChannelSelectMenuOmitted<TNamespace>): DBIChannelSelectMenu<TNamespace>;\r\n MentionableSelectMenu(cfg: TDBIMentionableSelectMenuOmitted<TNamespace>): DBIMentionableSelectMenu<TNamespace>;\r\n MessageContextMenu(cfg: TDBIMessageContextMenuOmitted<TNamespace>): DBIMessageContextMenu<TNamespace>;\r\n UserContextMenu(cfg: TDBIUserContextMenuOmitted<TNamespace>): DBIUserContextMenu<TNamespace>;\r\n InteractionLocale(cfg: TDBIInteractionLocaleOmitted): DBIInteractionLocale;\r\n Modal(cfg: TDBIModalOmitted<TNamespace>): DBIModal<TNamespace>;\r\n CustomEvent<T extends keyof NamespaceData[TNamespace][\"customEvents\"]>(cfg: TDBICustomEventOmitted<TNamespace, T>): DBICustomEvent<TNamespace, T>;\r\n onUnload(cb: () => Promise<any> | any): any;\r\n}\r\n\r\nexport class DBI<TNamespace extends NamespaceEnums, TOtherData = Record<string, any>> {\r\n namespace: TNamespace;\r\n config: DBIConfig;\r\n data: {\r\n interactions: Discord.Collection<string, TDBIInteractions<TNamespace>>;\r\n events: Discord.Collection<string, DBIEvent<TNamespace>>;\r\n locales: Discord.Collection<string, DBILocale<TNamespace>>;\r\n interactionLocales: Discord.Collection<string, DBIInteractionLocale>;\r\n other: TOtherData;\r\n eventMap: Record<string, string[] | { [k: string]: string }>;\r\n customEventNames: Set<string>;\r\n unloaders: Set<() => void>;\r\n registers: Set<(...args: any[]) => any>;\r\n registerUnloaders: Set<(...args: any[]) => any>;\r\n refs: Map<string, { at: number, value: any, ttl?: number }>;\r\n clients:\r\n & DBIClientData<TNamespace>[]\r\n & {\r\n next(key?: string): DBIClientData<TNamespace>,\r\n random(): DBIClientData<TNamespace>,\r\n random(size: number): DBIClientData<TNamespace>[],\r\n first(): DBIClientData<TNamespace>,\r\n get(namespace: NamespaceData[TNamespace][\"clientNamespaces\"]): DBIClientData<TNamespace>,\r\n indexes: Record<string, number>\r\n }\r\n };\r\n events: Events<TNamespace>;\r\n cluster?: Sharding.ClusterClient<Discord.Client>;\r\n private _loaded: boolean;\r\n private _hooked: boolean;\r\n constructor(namespace: TNamespace, config: DBIConfigConstructor) {\r\n this.namespace = namespace as any;\r\n const self = this;\r\n\r\n config.store = config.store as any || new MemoryStore();\r\n config.defaults = {\r\n locale: \"en\",\r\n defaultMemberPermissions: [],\r\n directMessages: false,\r\n ...(config.defaults || {})\r\n };\r\n config.sharding = config.sharding ?? \"off\";\r\n config.strict = config.strict ?? true;\r\n config.references = {\r\n autoClear: undefined,\r\n ...(config.references || {})\r\n }\r\n\r\n if (config.messageCommands) {\r\n if (config.strict && !config.messageCommands?.prefixes?.length) throw new Error(\"No message command prefixes provided.\");\r\n\r\n let { typeAliases } = config.messageCommands;\r\n\r\n config.messageCommands.typeAliases = {\r\n booleans: typeAliases.booleans ?? {\r\n \"true\": true,\r\n \"false\": false,\r\n \"yes\": true,\r\n \"no\": false,\r\n \"y\": true,\r\n \"n\": false,\r\n \"1\": true,\r\n \"0\": false\r\n }\r\n };\r\n }\r\n\r\n // @ts-ignore\r\n this.config = config;\r\n\r\n this.data = {\r\n interactions: new Discord.Collection(),\r\n events: new Discord.Collection(),\r\n locales: new Discord.Collection(),\r\n interactionLocales: new Discord.Collection(),\r\n other: (config.data?.other as any) ?? ({} as TOtherData),\r\n eventMap: { ...eventMap },\r\n customEventNames: new Set(),\r\n unloaders: new Set(),\r\n registers: new Set(),\r\n registerUnloaders: new Set(),\r\n refs: config.data?.refs ?? new Map(),\r\n clients: Object.assign([], {\r\n next(key = \"global\") {\r\n this.indexes[key] = (((this.indexes[key] ?? -1) + 1) % this.length);\r\n return this[this.indexes[key]];\r\n },\r\n random(size?: number) {\r\n if (typeof size === \"number\") {\r\n return this.sort(() => Math.random() - 0.5).slice(0, size);\r\n } else {\r\n return this[Math.floor(Math.random() * this.length)];\r\n }\r\n },\r\n first() {\r\n return this[0];\r\n },\r\n get(namespace: string) {\r\n return this.find((i: any) => i.namespace === namespace);\r\n },\r\n indexes: {}\r\n }) as any\r\n }\r\n\r\n this.events = new Events(this as any);\r\n\r\n config.discord = Array.isArray(config.discord) ?\r\n config.discord :\r\n [{ token: config.discord.token, options: config.discord.options, namespace: \"default\" }];\r\n\r\n this.data.clients.push(...(\r\n config.discord as any\r\n ));\r\n for (let clientContext of this.data.clients) {\r\n let client = new Discord.Client({\r\n ...(clientContext.options || {}) as any,\r\n ...(config.sharding == \"hybrid\" ? {\r\n shards: Sharding.getInfo().SHARD_LIST,\r\n shardCount: Sharding.getInfo().TOTAL_SHARDS\r\n } : {})\r\n });\r\n clientContext.client = client as Discord.Client<true>;\r\n }\r\n\r\n if (this.data.clients.length === 0) throw new Error(\"No clients provided.\");\r\n if (this.data.clients.length !== 1 && !(config.sharding && config.sharding === \"off\"))\r\n throw new Error(\"Sharding only supports 1 client.\");\r\n\r\n this.cluster = config.sharding == \"hybrid\" ? new Sharding.ClusterClient(this.data.clients[0].client) : undefined;\r\n this._loaded = false;\r\n this._hooked = false;\r\n }\r\n\r\n private async _hookListeners() {\r\n if (this._hooked) return;\r\n const self = this;\r\n this._hooked = true;\r\n this.data.unloaders.add(hookInteractionListeners(this as any));\r\n this.data.unloaders.add(hookEventListeners(this as any));\r\n if (typeof this.config.references.autoClear !== \"undefined\") {\r\n this.data.unloaders.add((() => {\r\n let interval = setInterval(() => {\r\n this.data.refs.forEach(({ at, ttl }, key) => {\r\n if (Date.now() > (at + (ttl || this.config.references.autoClear.ttl))) {\r\n this.data.refs.delete(key);\r\n }\r\n });\r\n }, this.config.references.autoClear.check);\r\n return () => {\r\n clearInterval(interval);\r\n }\r\n })());\r\n }\r\n if (typeof this.config.messageCommands !== \"undefined\") {\r\n this.data.unloaders.add((() => {\r\n const { client } = this.client();\r\n\r\n function onMessage(message: Discord.Message) {\r\n handleMessageCommands(self as any, message);\r\n }\r\n\r\n client.on(\"messageCreate\", onMessage);\r\n return () => {\r\n client.off(\"messageCreate\", onMessage);\r\n }\r\n })());\r\n }\r\n }\r\n\r\n private async _unhookListeners() {\r\n if (!this._hooked) return;\r\n this._hooked = false;\r\n this.data.unloaders.forEach(f => {\r\n f();\r\n });\r\n }\r\n\r\n private async _unregisterAll() {\r\n for await (const cb of this.data.registerUnloaders) {\r\n await cb();\r\n }\r\n this.data.events.clear();\r\n this.data.interactions.clear();\r\n this.data.customEventNames.forEach((value) => {\r\n delete this.data.eventMap[value];\r\n });\r\n this.data.customEventNames.clear();\r\n }\r\n\r\n private async _registerAll() {\r\n const self = this;\r\n const ChatInputOptions = new DBIChatInputOptions(self);\r\n\r\n for await (const cb of this.data.registers) {\r\n let ChatInput = function (cfg: DBIChatInput<TNamespace>) {\r\n let dbiChatInput = new DBIChatInput(self, cfg);\r\n if (self.data.interactions.has(dbiChatInput.name)) throw new Error(`DBIChatInput \"${dbiChatInput.name}\" already loaded as \"${self.data.interactions.get(dbiChatInput.name)?.type}\"!`);\r\n self.data.interactions.set(dbiChatInput.name, dbiChatInput);\r\n return dbiChatInput;\r\n };\r\n ChatInput = Object.assign(ChatInput, class { constructor(...args: any[]) { return ChatInput.apply(this, args as any); } });\r\n\r\n let Event = function (cfg: TDBIEventOmitted<TNamespace>) {\r\n let dbiEvent = new DBIEvent(self as any, cfg);\r\n if (self.config.strict && self.data.events.has(dbiEvent.id || dbiEvent.name)) throw new Error(`DBIEvent \"${dbiEvent.id || dbiEvent.name}\" already loaded!`);\r\n self.data.events.set(dbiEvent.id || dbiEvent.name, dbiEvent);\r\n return dbiEvent;\r\n };\r\n Event = Object.assign(Event, class { constructor(...args: any[]) { return Event.apply(this, args as any); } });\r\n\r\n let Button = function (cfg: TDBIButtonOmitted<TNamespace>) {\r\n let dbiButton = new DBIButton(self as any, cfg);\r\n if (self.config.strict && self.data.interactions.has(dbiButton.name)) throw new Error(`DBIButton \"${dbiButton.name}\" already loaded as \"${self.data.interactions.get(dbiButton.name)?.type}\"!`);\r\n self.data.interactions.set(dbiButton.name, dbiButton as any);\r\n return dbiButton;\r\n };\r\n Button = Object.assign(Button, class { constructor(...args: any[]) { return Button.apply(this, args as any); } });\r\n\r\n let StringSelectMenu = function (cfg: TDBIStringSelectMenuOmitted<TNamespace>) {\r\n let dbiStringSelectMenu = new DBIStringSelectMenu(self as any, cfg);\r\n if (self.config.strict && self.data.interactions.has(dbiStringSelectMenu.name)) throw new Error(`DBIStringSelectMenu \"${dbiStringSelectMenu.name}\" already loaded as \"${self.data.interactions.get(dbiStringSelectMenu.name)?.type}\"!`);\r\n self.data.interactions.set(dbiStringSelectMenu.name, dbiStringSelectMenu as any);\r\n return dbiStringSelectMenu;\r\n };\r\n StringSelectMenu = Object.assign(StringSelectMenu, class { constructor(...args: any[]) { return StringSelectMenu.apply(this, args as any); } });\r\n\r\n let UserSelectMenu = function (cfg: TDBIUserSelectMenuOmitted<TNamespace>) {\r\n let dbiUserSelectMenu = new DBIUserSelectMenu(self as any, cfg);\r\n if (self.config.strict && self.data.interactions.has(dbiUserSelectMenu.name)) throw new Error(`DBIUserSelectMenu \"${dbiUserSelectMenu.name}\" already loaded as \"${self.data.interactions.get(dbiUserSelectMenu.name)?.type}\"!`);\r\n self.data.interactions.set(dbiUserSelectMenu.name, dbiUserSelectMenu as any);\r\n return dbiUserSelectMenu;\r\n };\r\n UserSelectMenu = Object.assign(UserSelectMenu, class { constructor(...args: any[]) { return UserSelectMenu.apply(this, args as any); } });\r\n\r\n let RoleSelectMenu = function (cfg: TDBIRoleSelectMenuOmitted<TNamespace>) {\r\n let dbiRoleSelectMenu = new DBIRoleSelectMenu(self as any, cfg);\r\n if (self.config.strict && self.data.interactions.has(dbiRoleSelectMenu.name)) throw new Error(`DBIRoleSelectMenu \"${dbiRoleSelectMenu.name}\" already loaded as \"${self.data.interactions.get(dbiRoleSelectMenu.name)?.type}\"!`);\r\n self.data.interactions.set(dbiRoleSelectMenu.name, dbiRoleSelectMenu as any);\r\n return dbiRoleSelectMenu;\r\n };\r\n RoleSelectMenu = Object.assign(RoleSelectMenu, class { constructor(...args: any[]) { return RoleSelectMenu.apply(this, args as any); } });\r\n\r\n let ChannelSelectMenu = function (cfg: TDBIChannelSelectMenuOmitted<TNamespace>) {\r\n let dbiChannelSelectMenu = new DBIChannelSelectMenu(self as any, cfg);\r\n if (self.config.strict && self.data.interactions.has(dbiChannelSelectMenu.name)) throw new Error(`DBIChannelSelectMenu \"${dbiChannelSelectMenu.name}\" already loaded as \"${self.data.interactions.get(dbiChannelSelectMenu.name)?.type}\"!`);\r\n self.data.interactions.set(dbiChannelSelectMenu.name, dbiChannelSelectMenu as any);\r\n return dbiChannelSelectMenu;\r\n };\r\n ChannelSelectMenu = Object.assign(ChannelSelectMenu, class { constructor(...args: any[]) { return ChannelSelectMenu.apply(this, args as any); } });\r\n\r\n let MentionableSelectMenu = function (cfg: TDBIMentionableSelectMenuOmitted<TNamespace>) {\r\n let dbiMentionableSelectMenu = new DBIMentionableSelectMenu(self as any, cfg);\r\n if (self.config.strict && self.data.interactions.has(dbiMentionableSelectMenu.name)) throw new Error(`DBIMentionableSelectMenu \"${dbiMentionableSelectMenu.name}\" already loaded as \"${self.data.interactions.get(dbiMentionableSelectMenu.name)?.type}\"!`);\r\n self.data.interactions.set(dbiMentionableSelectMenu.name, dbiMentionableSelectMenu as any);\r\n return dbiMentionableSelectMenu;\r\n };\r\n MentionableSelectMenu = Object.assign(MentionableSelectMenu, class { constructor(...args: any[]) { return MentionableSelectMenu.apply(this, args as any); } });\r\n\r\n let MessageContextMenu = function (cfg: TDBIMessageContextMenuOmitted<TNamespace>) {\r\n let dbiMessageContextMenu = new DBIMessageContextMenu(self as any, cfg);\r\n if (self.config.strict && self.data.interactions.has(dbiMessageContextMenu.name)) throw new Error(`DBIMessageContextMenu \"${dbiMessageContextMenu.name}\" already loaded as \"${self.data.interactions.get(dbiMessageContextMenu.name)?.type}\"!`);\r\n self.data.interactions.set(dbiMessageContextMenu.name, dbiMessageContextMenu as any);\r\n return dbiMessageContextMenu;\r\n };\r\n MessageContextMenu = Object.assign(MessageContextMenu, class { constructor(...args: any[]) { return MessageContextMenu.apply(this, args as any); } });\r\n\r\n let UserContextMenu = function (cfg: TDBIUserContextMenuOmitted<TNamespace>) {\r\n let dbiUserContextMenu = new DBIUserContextMenu(self as any, cfg);\r\n if (self.config.strict && self.data.interactions.has(dbiUserContextMenu.name)) throw new Error(`DBIUserContextMenu \"${dbiUserContextMenu.name}\" already loaded as \"${self.data.interactions.get(dbiUserContextMenu.name)?.type}\"!`);\r\n self.data.interactions.set(dbiUserContextMenu.name, dbiUserContextMenu as any);\r\n return dbiUserContextMenu;\r\n };\r\n UserContextMenu = Object.assign(UserContextMenu, class { constructor(...args: any[]) { return UserContextMenu.apply(this, args as any); } });\r\n\r\n let Modal = function (cfg: TDBIModalOmitted<TNamespace>) {\r\n let dbiModal = new DBIModal(self as any, cfg);\r\n if (self.config.strict && self.data.interactions.has(dbiModal.name)) throw new Error(`DBIModal \"${dbiModal.name}\" already loaded as \"${self.data.interactions.get(dbiModal.name)?.type}\"!`);\r\n self.data.interactions.set(dbiModal.name, dbiModal as any);\r\n return dbiModal;\r\n };\r\n Modal = Object.assign(Modal, class { constructor(...args: any[]) { return Modal.apply(this, args as any); } });\r\n\r\n let Locale = function (cfg: TDBILocaleConstructor<TNamespace>) {\r\n let dbiLocale = new DBILocale(self as any, cfg);\r\n if (self.config.strict && self.data.interactionLocales.has(dbiLocale.name)) throw new Error(`DBILocale \"${dbiLocale.name}\" already loaded!`);\r\n if (self.data.locales.has(dbiLocale.name)) dbiLocale.mergeLocale(self.data.locales.get(dbiLocale.name));\r\n self.data.locales.set(dbiLocale.name, dbiLocale);\r\n return dbiLocale;\r\n };\r\n Locale = Object.assign(Locale, class { constructor(...args: any[]) { return Locale.apply(this, args as any); } });\r\n\r\n let CustomEvent = function (cfg: TDBICustomEventOmitted<TNamespace>) {\r\n let dbiCustomEvent = new DBICustomEvent(self, cfg) as any;\r\n if (self.config.strict && self.data.eventMap[dbiCustomEvent.name]) throw new Error(`DBICustomEvent \"${dbiCustomEvent.name}\" already loaded!`);\r\n self.data.eventMap[dbiCustomEvent.name] = dbiCustomEvent.map;\r\n self.data.customEventNames.add(dbiCustomEvent.name);\r\n return dbiCustomEvent;\r\n };\r\n CustomEvent = Object.assign(CustomEvent, class { constructor(...args: any[]) { return CustomEvent.apply(this, args as any); } });\r\n\r\n let InteractionLocale = function (cfg: TDBIInteractionLocaleOmitted) {\r\n let dbiInteractionLocale = new DBIInteractionLocale(self, cfg);\r\n if (self.config.strict && self.data.interactionLocales.has(dbiInteractionLocale.name)) throw new Error(`DBIInteractionLocale \"${dbiInteractionLocale.name}\" already loaded!`);\r\n self.data.interactionLocales.set(dbiInteractionLocale.name, dbiInteractionLocale);\r\n return dbiInteractionLocale;\r\n };\r\n InteractionLocale = Object.assign(InteractionLocale, class { constructor(...args: any[]) { return InteractionLocale.apply(this, args as any); } });\r\n\r\n await cb({\r\n ChatInput,\r\n Event,\r\n ChatInputOptions,\r\n Locale,\r\n Button,\r\n StringSelectMenu,\r\n UserSelectMenu,\r\n RoleSelectMenu,\r\n ChannelSelectMenu,\r\n MentionableSelectMenu,\r\n MessageContextMenu,\r\n UserContextMenu,\r\n CustomEvent,\r\n Modal,\r\n InteractionLocale,\r\n onUnload(cb: () => Promise<any> | any) {\r\n self.data.registerUnloaders.add(cb);\r\n },\r\n });\r\n }\r\n self.data.interactions.sort((a, b) => b.name.length - a.name.length);\r\n }\r\n\r\n emit<TEventName extends keyof (NamespaceData[TNamespace][\"customEvents\"] & ClientEvents)>(name: TEventName, args: (NamespaceData[TNamespace][\"customEvents\"] & ClientEvents)[TEventName]): void {\r\n this.data.clients.forEach((d) => d.client.emit(name as any, { ...args, _DIRECT_: true } as any));\r\n }\r\n\r\n /**\r\n * this.data.interactions.get(name)\r\n */\r\n interaction<TInteractionName extends keyof NamespaceData[TNamespace][\"interactionMapping\"]>(name: TInteractionName): NamespaceData[TNamespace][\"interactionMapping\"][TInteractionName] {\r\n return this.data.interactions.get(name as any) as any;\r\n }\r\n\r\n client<TClientName extends NamespaceData[TNamespace][\"clientNamespaces\"]>(name?: TClientName): DBIClientData<TNamespace> {\r\n return name ? this.data.clients.get(name) : this.data.clients.first();\r\n }\r\n /**\r\n * this.data.events.get(name)\r\n */\r\n event<TEventName extends NamespaceData[TNamespace][\"eventNames\"]>(name: TEventName): DBIEvent<TNamespace> {\r\n return this.data.events.get(name);\r\n }\r\n\r\n /**\r\n * this.data.locales.get(name)\r\n */\r\n locale<TLocaleName extends NamespaceData[TNamespace][\"localeNames\"]>(name: TLocaleName): DBILocale<TNamespace> {\r\n return this.data.locales.get(name) as any;\r\n }\r\n\r\n /**\r\n * Shorthands for modifying `dbi.data.other`\r\n */\r\n get<K extends keyof TOtherData>(k: K, defaultValue?: TOtherData[K]): TOtherData[K] {\r\n if (defaultValue && !this.has(k as any)) {\r\n this.set(k, defaultValue);\r\n return defaultValue;\r\n }\r\n return _.get(this.data.other, k);\r\n }\r\n\r\n /**\r\n * Shorthands for modifying `dbi.data.other`\r\n */\r\n set<K extends keyof TOtherData>(k: K, v: TOtherData[K]): any {\r\n this.data.other = _.set(this.data.other as any, k, v);\r\n }\r\n\r\n /**\r\n * Shorthands for modifying `dbi.data.other`\r\n */\r\n has(k: string): boolean {\r\n return _.has(this.data.other, k as any);\r\n }\r\n\r\n /**\r\n * Shorthands for modifying `dbi.data.other`\r\n */\r\n delete(k: string): boolean {\r\n return _.unset(this.data.other, k);\r\n }\r\n\r\n async login(): Promise<any> {\r\n await aaq.quickForEach(this.data.clients, async (clientContext) => {\r\n await clientContext.client.login(this.config.sharding == \"default\" ? null : clientContext.token);\r\n });\r\n }\r\n\r\n async register(cb: (api: DBIRegisterAPI<TNamespace>) => void): Promise<any> {\r\n this.data.registers.add(cb);\r\n }\r\n\r\n async load(): Promise<boolean> {\r\n if (this._loaded) return false;\r\n await this._registerAll();\r\n await this._hookListeners();\r\n this._loaded = true;\r\n return true;\r\n }\r\n\r\n async unload(): Promise<boolean> {\r\n if (!this._loaded) return false;\r\n await this._unregisterAll();\r\n await this._unhookListeners();\r\n this._loaded = false;\r\n return true;\r\n }\r\n\r\n get loaded(): boolean {\r\n return this._loaded;\r\n }\r\n\r\n async publish(type: \"Global\", clear?: boolean): Promise<any>;\r\n async publish(type: \"Guild\", guildId: string, clear?: boolean): Promise<any>;\r\n\r\n async publish(...args: any[]) {\r\n let interactions = this.data.interactions.filter(i => i.type == \"ChatInput\" || i.type == \"MessageContextMenu\" || i.type == \"UserContextMenu\") as any;\r\n switch (args[0]) {\r\n case \"Global\": {\r\n return await publishInteractions(\r\n this.data.clients,\r\n args[1] ? new Discord.Collection() : interactions,\r\n this.data.interactionLocales,\r\n args[0]\r\n );\r\n }\r\n case \"Guild\": {\r\n return await publishInteractions(\r\n this.data.clients,\r\n args[2] ? new Discord.Collection() : interactions,\r\n this.data.interactionLocales,\r\n args[0],\r\n args[1]\r\n );\r\n }\r\n }\r\n }\r\n\r\n\r\n}"]}
|
|
1
|
+
{"version":3,"file":"DBI.js","sourceRoot":"","sources":["../src/DBI.ts"],"names":[],"mappings":";;;;AAAA,oEAAqD;AACrD,2DAGqC;AACrC,yEAAyE;AACzE,uEAAoE;AACpE,yCAAyE;AACzE,qDAAkD;AAClD,iFAA8E;AAC9E,qCAAkC;AAClC,iDAI8B;AAC9B,sDAAyE;AACzE,0EAG6C;AAC7C,yEAG0C;AAC1C,mEAGuC;AACvC,qEAAkE;AAClE,iFAA4C;AAC5C,oDAAsE;AACtE,0EAAoD;AACpD,4DAAuB;AACvB,uEAGyC;AAGzC,2DAGmC;AACnC,8EAAkC;AAClC,sEAG2C;AAC3C,oFAGkD;AAClD,4EAG8C;AAC9C,sEAG2C;AAC3C,2EAAwE;AAyIxE,MAAa,GAAG;IAId,SAAS,CAAa;IACtB,MAAM,CAAY;IAClB,IAAI,CAsBF;IACF,MAAM,CAAqB;IAC3B,OAAO,CAA0C;IACzC,OAAO,CAAU;IACjB,OAAO,CAAU;IACzB,YAAY,SAAqB,EAAE,MAA4B;QAC7D,IAAI,CAAC,SAAS,GAAG,SAAgB,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,MAAM,CAAC,KAAK,GAAI,MAAM,CAAC,KAAa,IAAI,IAAI,yBAAW,EAAE,CAAC;QAC1D,MAAM,CAAC,QAAQ,GAAG;YAChB,MAAM,EAAE,IAAI;YACZ,wBAAwB,EAAE,EAAE;YAC5B,cAAc,EAAE,KAAK;YACrB,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;YAC1B,eAAe,EAAE;gBACf,iBAAiB,EAAE,YAAY;gBAC/B,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,eAAe,IAAI,EAAE,CAAC;aAC5C;SACF,CAAC;QACF,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC;QAC3C,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC;QACtC,MAAM,CAAC,UAAU,GAAG;YAClB,SAAS,EAAE,SAAS;YACpB,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;SAC7B,CAAC;QAEF,IAAI,MAAM,CAAC,eAAe,EAAE;YAC1B,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,QAAQ,EAAE,MAAM;gBAC5D,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;YAE3D,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,eAAe,CAAC;YAE7C,MAAM,CAAC,eAAe,CAAC,WAAW,GAAG;gBACnC,QAAQ,EAAE,WAAW,CAAC,QAAQ,IAAI;oBAChC,IAAI,EAAE,IAAI;oBACV,KAAK,EAAE,KAAK;oBACZ,GAAG,EAAE,IAAI;oBACT,EAAE,EAAE,KAAK;oBACT,CAAC,EAAE,IAAI;oBACP,CAAC,EAAE,KAAK;oBACR,GAAG,EAAE,IAAI;oBACT,GAAG,EAAE,KAAK;iBACX;aACF,CAAC;SACH;QAED,aAAa;QACb,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,CAAC,IAAI,GAAG;YACV,YAAY,EAAE,IAAI,oBAAO,CAAC,UAAU,EAAE;YACtC,MAAM,EAAE,IAAI,oBAAO,CAAC,UAAU,EAAE;YAChC,OAAO,EAAE,IAAI,oBAAO,CAAC,UAAU,EAAE;YACjC,kBAAkB,EAAE,IAAI,oBAAO,CAAC,UAAU,EAAE;YAC5C,KAAK,EAAG,MAAM,CAAC,IAAI,EAAE,KAAa,IAAK,EAAiB;YACxD,QAAQ,EAAE,EAAE,GAAG,uBAAQ,EAAE;YACzB,gBAAgB,EAAE,IAAI,GAAG,EAAE;YAC3B,SAAS,EAAE,IAAI,GAAG,EAAE;YACpB,SAAS,EAAE,IAAI,GAAG,EAAE;YACpB,iBAAiB,EAAE,IAAI,GAAG,EAAE;YAC5B,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE;YACpC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE;gBACzB,IAAI,CAAC,GAAG,GAAG,QAAQ;oBACjB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;oBAClE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;gBACjC,CAAC;gBACD,MAAM,CAAC,IAAa;oBAClB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;wBAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;qBAC5D;yBAAM;wBACL,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;qBACtD;gBACH,CAAC;gBACD,KAAK;oBACH,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;gBACjB,CAAC;gBACD,GAAG,CAAC,SAAiB;oBACnB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;gBAC1D,CAAC;gBACD,OAAO,EAAE,EAAE;aACZ,CAAQ;SACV,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,IAAW,CAAC,CAAC;QAEtC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;YAC5C,CAAC,CAAC,MAAM,CAAC,OAAO;YAChB,CAAC,CAAC;gBACE;oBACE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK;oBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO;oBAC/B,SAAS,EAAE,SAAS;iBACrB;aACF,CAAC;QAEN,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAI,MAAM,CAAC,OAAe,CAAC,CAAC;QACnD,KAAK,IAAI,aAAa,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC3C,IAAI,MAAM,GAAG,IAAI,oBAAO,CAAC,MAAM,CAAC;gBAC9B,GAAI,CAAC,aAAa,CAAC,OAAO,IAAI,EAAE,CAAS;gBACzC,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ;oBAC7B,CAAC,CAAC;wBACE,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,UAAU;wBACrC,UAAU,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,YAAY;qBAC5C;oBACH,CAAC,CAAC,EAAE,CAAC;aACR,CAAC,CAAC;YACH,aAAa,CAAC,MAAM,GAAG,MAA8B,CAAC;SACvD;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC5E,IACE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAC9B,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC;YAE/C,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAEtD,IAAI,CAAC,OAAO;YACV,MAAM,CAAC,QAAQ,IAAI,QAAQ;gBACzB,CAAC,CAAC,IAAI,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBACzD,CAAC,CAAC,SAAS,CAAC;QAChB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IAEO,KAAK,CAAC,cAAc;QAC1B,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAA,mDAAwB,EAAC,IAAW,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAA,uCAAkB,EAAC,IAAW,CAAC,CAAC,CAAC;QACzD,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,KAAK,WAAW,EAAE;YAC3D,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CACrB,CAAC,GAAG,EAAE;gBACJ,IAAI,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;oBAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE;wBAC1C,IACE,IAAI,CAAC,GAAG,EAAE;4BACV,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAClD;4BACA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;yBAC5B;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC3C,OAAO,GAAG,EAAE;oBACV,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAC1B,CAAC,CAAC;YACJ,CAAC,CAAC,EAAE,CACL,CAAC;SACH;QACD,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,KAAK,WAAW,EAAE;YACtD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CACrB,CAAC,GAAG,EAAE;gBACJ,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBAEjC,SAAS,SAAS,CAAC,OAAwB;oBACzC,IAAA,6CAAqB,EAAC,IAAW,EAAE,OAAO,CAAC,CAAC;gBAC9C,CAAC;gBAED,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;gBACtC,OAAO,GAAG,EAAE;oBACV,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;gBACzC,CAAC,CAAC;YACJ,CAAC,CAAC,EAAE,CACL,CAAC;SACH;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC5B,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAChC,CAAC,EAAE,CAAC;QACN,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,cAAc;QAC1B,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAClD,MAAM,EAAE,EAAE,CAAC;SACZ;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IACrC,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,gBAAgB,GAAG,IAAI,sCAAmB,CAAC,IAAI,CAAC,CAAC;QAEvD,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YAC1C,IAAI,SAAS,GAAG,UAAU,GAA6B;gBACrD,IAAI,YAAY,GAAG,IAAI,wBAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBAC/C,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC;oBAC/C,MAAM,IAAI,KAAK,CACb,iBAAiB,YAAY,CAAC,IAAI,wBAChC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IACjD,IAAI,CACL,CAAC;gBACJ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;gBAC5D,OAAO,YAAY,CAAC;YACtB,CAAC,CAAC;YACF,SAAS,GAAG,MAAM,CAAC,MAAM,CACvB,SAAS,EACT;gBACE,YAAY,GAAG,IAAW;oBACxB,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,IAAW,CAAC,CAAC;gBAC5C,CAAC;aACF,CACF,CAAC;YAEF,IAAI,KAAK,GAAG,UAAU,GAAiC;gBACrD,IAAI,QAAQ,GAAG,IAAI,gBAAQ,CAAC,IAAW,EAAE,GAAG,CAAC,CAAC;gBAC9C,IACE,IAAI,CAAC,MAAM,CAAC,MAAM;oBAClB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC;oBAElD,MAAM,IAAI,KAAK,CACb,aAAa,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI,mBAAmB,CAC7D,CAAC;gBACJ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAC7D,OAAO,QAAQ,CAAC;YAClB,CAAC,CAAC;YACF,KAAK,GAAG,MAAM,CAAC,MAAM,CACnB,KAAK,EACL;gBACE,YAAY,GAAG,IAAW;oBACxB,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAW,CAAC,CAAC;gBACxC,CAAC;aACF,CACF,CAAC;YAEF,IAAI,MAAM,GAAG,UAAU,GAAkC;gBACvD,IAAI,SAAS,GAAG,IAAI,kBAAS,CAAC,IAAW,EAAE,GAAG,CAAC,CAAC;gBAChD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;oBAClE,MAAM,IAAI,KAAK,CACb,cAAc,SAAS,CAAC,IAAI,wBAC1B,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAC9C,IAAI,CACL,CAAC;gBACJ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,SAAgB,CAAC,CAAC;gBAC7D,OAAO,SAAS,CAAC;YACnB,CAAC,CAAC;YACF,MAAM,GAAG,MAAM,CAAC,MAAM,CACpB,MAAM,EACN;gBACE,YAAY,GAAG,IAAW;oBACxB,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAW,CAAC,CAAC;gBACzC,CAAC;aACF,CACF,CAAC;YAEF,IAAI,gBAAgB,GAAG,UACrB,GAA4C;gBAE5C,IAAI,mBAAmB,GAAG,IAAI,sCAAmB,CAAC,IAAW,EAAE,GAAG,CAAC,CAAC;gBACpE,IACE,IAAI,CAAC,MAAM,CAAC,MAAM;oBAClB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC;oBAEpD,MAAM,IAAI,KAAK,CACb,wBACE,mBAAmB,CAAC,IACtB,wBACE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,IACxD,IAAI,CACL,CAAC;gBACJ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CACxB,mBAAmB,CAAC,IAAI,EACxB,mBAA0B,CAC3B,CAAC;gBACF,OAAO,mBAAmB,CAAC;YAC7B,CAAC,CAAC;YACF,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAC9B,gBAAgB,EAChB;gBACE,YAAY,GAAG,IAAW;oBACxB,OAAO,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAW,CAAC,CAAC;gBACnD,CAAC;aACF,CACF,CAAC;YAEF,IAAI,cAAc,GAAG,UACnB,GAA0C;gBAE1C,IAAI,iBAAiB,GAAG,IAAI,kCAAiB,CAAC,IAAW,EAAE,GAAG,CAAC,CAAC;gBAChE,IACE,IAAI,CAAC,MAAM,CAAC,MAAM;oBAClB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC;oBAElD,MAAM,IAAI,KAAK,CACb,sBAAsB,iBAAiB,CAAC,IAAI,wBAC1C,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,IACtD,IAAI,CACL,CAAC;gBACJ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CACxB,iBAAiB,CAAC,IAAI,EACtB,iBAAwB,CACzB,CAAC;gBACF,OAAO,iBAAiB,CAAC;YAC3B,CAAC,CAAC;YACF,cAAc,GAAG,MAAM,CAAC,MAAM,CAC5B,cAAc,EACd;gBACE,YAAY,GAAG,IAAW;oBACxB,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAW,CAAC,CAAC;gBACjD,CAAC;aACF,CACF,CAAC;YAEF,IAAI,cAAc,GAAG,UACnB,GAA0C;gBAE1C,IAAI,iBAAiB,GAAG,IAAI,kCAAiB,CAAC,IAAW,EAAE,GAAG,CAAC,CAAC;gBAChE,IACE,IAAI,CAAC,MAAM,CAAC,MAAM;oBAClB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC;oBAElD,MAAM,IAAI,KAAK,CACb,sBAAsB,iBAAiB,CAAC,IAAI,wBAC1C,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,IACtD,IAAI,CACL,CAAC;gBACJ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CACxB,iBAAiB,CAAC,IAAI,EACtB,iBAAwB,CACzB,CAAC;gBACF,OAAO,iBAAiB,CAAC;YAC3B,CAAC,CAAC;YACF,cAAc,GAAG,MAAM,CAAC,MAAM,CAC5B,cAAc,EACd;gBACE,YAAY,GAAG,IAAW;oBACxB,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAW,CAAC,CAAC;gBACjD,CAAC;aACF,CACF,CAAC;YAEF,IAAI,iBAAiB,GAAG,UACtB,GAA6C;gBAE7C,IAAI,oBAAoB,GAAG,IAAI,wCAAoB,CAAC,IAAW,EAAE,GAAG,CAAC,CAAC;gBACtE,IACE,IAAI,CAAC,MAAM,CAAC,MAAM;oBAClB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC;oBAErD,MAAM,IAAI,KAAK,CACb,yBACE,oBAAoB,CAAC,IACvB,wBACE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,IACzD,IAAI,CACL,CAAC;gBACJ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CACxB,oBAAoB,CAAC,IAAI,EACzB,oBAA2B,CAC5B,CAAC;gBACF,OAAO,oBAAoB,CAAC;YAC9B,CAAC,CAAC;YACF,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAC/B,iBAAiB,EACjB;gBACE,YAAY,GAAG,IAAW;oBACxB,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAW,CAAC,CAAC;gBACpD,CAAC;aACF,CACF,CAAC;YAEF,IAAI,qBAAqB,GAAG,UAC1B,GAAiD;gBAEjD,IAAI,wBAAwB,GAAG,IAAI,gDAAwB,CACzD,IAAW,EACX,GAAG,CACJ,CAAC;gBACF,IACE,IAAI,CAAC,MAAM,CAAC,MAAM;oBAClB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,CAAC;oBAEzD,MAAM,IAAI,KAAK,CACb,6BACE,wBAAwB,CAAC,IAC3B,wBACE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,IAC7D,IAAI,CACL,CAAC;gBACJ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CACxB,wBAAwB,CAAC,IAAI,EAC7B,wBAA+B,CAChC,CAAC;gBACF,OAAO,wBAAwB,CAAC;YAClC,CAAC,CAAC;YACF,qBAAqB,GAAG,MAAM,CAAC,MAAM,CACnC,qBAAqB,EACrB;gBACE,YAAY,GAAG,IAAW;oBACxB,OAAO,qBAAqB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAW,CAAC,CAAC;gBACxD,CAAC;aACF,CACF,CAAC;YAEF,IAAI,kBAAkB,GAAG,UACvB,GAA8C;gBAE9C,IAAI,qBAAqB,GAAG,IAAI,0CAAqB,CAAC,IAAW,EAAE,GAAG,CAAC,CAAC;gBACxE,IACE,IAAI,CAAC,MAAM,CAAC,MAAM;oBAClB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC;oBAEtD,MAAM,IAAI,KAAK,CACb,0BACE,qBAAqB,CAAC,IACxB,wBACE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,IAC1D,IAAI,CACL,CAAC;gBACJ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CACxB,qBAAqB,CAAC,IAAI,EAC1B,qBAA4B,CAC7B,CAAC;gBACF,OAAO,qBAAqB,CAAC;YAC/B,CAAC,CAAC;YACF,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAChC,kBAAkB,EAClB;gBACE,YAAY,GAAG,IAAW;oBACxB,OAAO,kBAAkB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAW,CAAC,CAAC;gBACrD,CAAC;aACF,CACF,CAAC;YAEF,IAAI,eAAe,GAAG,UACpB,GAA2C;gBAE3C,IAAI,kBAAkB,GAAG,IAAI,oCAAkB,CAAC,IAAW,EAAE,GAAG,CAAC,CAAC;gBAClE,IACE,IAAI,CAAC,MAAM,CAAC,MAAM;oBAClB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC;oBAEnD,MAAM,IAAI,KAAK,CACb,uBACE,kBAAkB,CAAC,IACrB,wBACE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,IACvD,IAAI,CACL,CAAC;gBACJ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CACxB,kBAAkB,CAAC,IAAI,EACvB,kBAAyB,CAC1B,CAAC;gBACF,OAAO,kBAAkB,CAAC;YAC5B,CAAC,CAAC;YACF,eAAe,GAAG,MAAM,CAAC,MAAM,CAC7B,eAAe,EACf;gBACE,YAAY,GAAG,IAAW;oBACxB,OAAO,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,IAAW,CAAC,CAAC;gBAClD,CAAC;aACF,CACF,CAAC;YAEF,IAAI,KAAK,GAAG,UAAU,GAAiC;gBACrD,IAAI,QAAQ,GAAG,IAAI,gBAAQ,CAAC,IAAW,EAAE,GAAG,CAAC,CAAC;gBAC9C,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACjE,MAAM,IAAI,KAAK,CACb,aAAa,QAAQ,CAAC,IAAI,wBACxB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAC7C,IAAI,CACL,CAAC;gBACJ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAe,CAAC,CAAC;gBAC3D,OAAO,QAAQ,CAAC;YAClB,CAAC,CAAC;YACF,KAAK,GAAG,MAAM,CAAC,MAAM,CACnB,KAAK,EACL;gBACE,YAAY,GAAG,IAAW;oBACxB,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAW,CAAC,CAAC;gBACxC,CAAC;aACF,CACF,CAAC;YAEF,IAAI,MAAM,GAAG,UAAU,GAAsC;gBAC3D,IAAI,SAAS,GAAG,IAAI,kBAAS,CAAC,IAAW,EAAE,GAAG,CAAC,CAAC;gBAChD,IACE,IAAI,CAAC,MAAM,CAAC,MAAM;oBAClB,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;oBAEhD,MAAM,IAAI,KAAK,CAAC,cAAc,SAAS,CAAC,IAAI,mBAAmB,CAAC,CAAC;gBACnE,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;oBACvC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBACjD,OAAO,SAAS,CAAC;YACnB,CAAC,CAAC;YACF,MAAM,GAAG,MAAM,CAAC,MAAM,CACpB,MAAM,EACN;gBACE,YAAY,GAAG,IAAW;oBACxB,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAW,CAAC,CAAC;gBACzC,CAAC;aACF,CACF,CAAC;YAEF,IAAI,WAAW,GAAG,UAAU,GAAuC;gBACjE,IAAI,cAAc,GAAG,IAAI,4BAAc,CAAC,IAAI,EAAE,GAAG,CAAQ,CAAC;gBAC1D,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC;oBAC/D,MAAM,IAAI,KAAK,CACb,mBAAmB,cAAc,CAAC,IAAI,mBAAmB,CAC1D,CAAC;gBACJ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC;gBAC7D,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBACpD,OAAO,cAAc,CAAC;YACxB,CAAC,CAAC;YACF,WAAW,GAAG,MAAM,CAAC,MAAM,CACzB,WAAW,EACX;gBACE,YAAY,GAAG,IAAW;oBACxB,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,IAAW,CAAC,CAAC;gBAC9C,CAAC;aACF,CACF,CAAC;YAEF,IAAI,iBAAiB,GAAG,UAAU,GAAiC;gBACjE,IAAI,oBAAoB,GAAG,IAAI,wCAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBAC/D,IACE,IAAI,CAAC,MAAM,CAAC,MAAM;oBAClB,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC;oBAE3D,MAAM,IAAI,KAAK,CACb,yBAAyB,oBAAoB,CAAC,IAAI,mBAAmB,CACtE,CAAC;gBACJ,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAC9B,oBAAoB,CAAC,IAAI,EACzB,oBAAoB,CACrB,CAAC;gBACF,OAAO,oBAAoB,CAAC;YAC9B,CAAC,CAAC;YACF,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAC/B,iBAAiB,EACjB;gBACE,YAAY,GAAG,IAAW;oBACxB,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAW,CAAC,CAAC;gBACpD,CAAC;aACF,CACF,CAAC;YAEF,MAAM,EAAE,CAAC;gBACP,SAAS;gBACT,KAAK;gBACL,gBAAgB;gBAChB,MAAM;gBACN,MAAM;gBACN,gBAAgB;gBAChB,cAAc;gBACd,cAAc;gBACd,iBAAiB;gBACjB,qBAAqB;gBACrB,kBAAkB;gBAClB,eAAe;gBACf,WAAW;gBACX,KAAK;gBACL,iBAAiB;gBACjB,QAAQ,CAAC,EAA4B;oBACnC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACtC,CAAC;aACF,CAAC,CAAC;SACJ;QACD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,CAIF,IAAgB,EAChB,IAA4E;QAE5E,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAW,EAAE,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAS,CAAC,CAC/D,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,WAAW,CAGT,IAAsB;QAEtB,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAW,CAAQ,CAAC;IACxD,CAAC;IAED,MAAM,CACJ,IAAkB;QAElB,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACxE,CAAC;IACD;;OAEG;IACH,KAAK,CACH,IAAgB;QAEhB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,MAAM,CACJ,IAAiB;QAEjB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAQ,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,GAAG,CACD,CAAI,EACJ,YAA4B;QAE5B,IAAI,YAAY,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAQ,CAAC,EAAE;YACvC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;YAC1B,OAAO,YAAY,CAAC;SACrB;QACD,OAAO,gBAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,GAAG,CAA6B,CAAI,EAAE,CAAgB;QACpD,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,gBAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAY,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,CAAS;QACX,OAAO,gBAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAQ,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,CAAS;QACd,OAAO,gBAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,yBAAG,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE;YAChE,MAAM,aAAa,CAAC,MAAM,CAAC,KAAK,CAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAC/D,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAA6C;QAC1D,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAC/B,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,MAAM;QACV,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAKD,KAAK,CAAC,OAAO,CAAC,GAAG,IAAW;QAC1B,IAAI,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAC9C,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,IAAI,IAAI,WAAW;YACrB,CAAC,CAAC,IAAI,IAAI,oBAAoB;YAC9B,CAAC,CAAC,IAAI,IAAI,iBAAiB,CACvB,CAAC;QACT,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE;YACf,KAAK,QAAQ,CAAC,CAAC;gBACb,OAAO,MAAM,IAAA,yCAAmB,EAC9B,IAAI,CAAC,IAAI,CAAC,OAAO,EACjB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,oBAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,YAAY,EACjD,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAC5B,IAAI,CAAC,CAAC,CAAC,CACR,CAAC;aACH;YACD,KAAK,OAAO,CAAC,CAAC;gBACZ,OAAO,MAAM,IAAA,yCAAmB,EAC9B,IAAI,CAAC,IAAI,CAAC,OAAO,EACjB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,oBAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,YAAY,EACjD,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAC5B,IAAI,CAAC,CAAC,CAAC,EACP,IAAI,CAAC,CAAC,CAAC,CACR,CAAC;aACH;SACF;IACH,CAAC;CACF;AAtuBD,kBAsuBC","sourcesContent":["import Discord, { MessagePayload } from \"discord.js\";\r\nimport {\r\n DBIChatInput,\r\n TDBIChatInputOmitted,\r\n} from \"./types/ChatInput/ChatInput\";\r\nimport { DBIChatInputOptions } from \"./types/ChatInput/ChatInputOptions\";\r\nimport { publishInteractions } from \"./methods/publishInteractions\";\r\nimport { ClientEvents, DBIEvent, TDBIEventOmitted } from \"./types/Event\";\r\nimport { MemoryStore } from \"./utils/MemoryStore\";\r\nimport { hookInteractionListeners } from \"./methods/hookInteractionListeners\";\r\nimport { Events } from \"./Events\";\r\nimport {\r\n DBILocale,\r\n TDBILocaleConstructor,\r\n TDBILocaleString,\r\n} from \"./types/other/Locale\";\r\nimport { DBIButton, TDBIButtonOmitted } from \"./types/Components/Button\";\r\nimport {\r\n DBIStringSelectMenu,\r\n TDBIStringSelectMenuOmitted,\r\n} from \"./types/Components/StringSelectMenu\";\r\nimport {\r\n DBIMessageContextMenu,\r\n TDBIMessageContextMenuOmitted,\r\n} from \"./types/other/MessageContextMenu\";\r\nimport {\r\n DBIUserContextMenu,\r\n TDBIUserContextMenuOmitted,\r\n} from \"./types/other/UserContextMenu\";\r\nimport { hookEventListeners } from \"./methods/hookEventListeners\";\r\nimport eventMap from \"./data/eventMap.json\";\r\nimport { DBIModal, TDBIModalOmitted } from \"./types/Components/Modal\";\r\nimport * as Sharding from \"discord-hybrid-sharding\";\r\nimport _ from \"lodash\";\r\nimport {\r\n DBIInteractionLocale,\r\n TDBIInteractionLocaleOmitted,\r\n} from \"./types/other/InteractionLocale\";\r\nimport { TDBIInteractions } from \"./types/Interaction\";\r\nimport { NamespaceData, NamespaceEnums } from \"../generated/namespaceData\";\r\nimport {\r\n DBICustomEvent,\r\n TDBICustomEventOmitted,\r\n} from \"./types/other/CustomEvent\";\r\nimport aaq from \"async-and-quick\";\r\nimport {\r\n DBIUserSelectMenu,\r\n TDBIUserSelectMenuOmitted,\r\n} from \"./types/Components/UserSelectMenu\";\r\nimport {\r\n DBIMentionableSelectMenu,\r\n TDBIMentionableSelectMenuOmitted,\r\n} from \"./types/Components/MentionableSelectMenu\";\r\nimport {\r\n DBIChannelSelectMenu,\r\n TDBIChannelSelectMenuOmitted,\r\n} from \"./types/Components/ChannelSelectMenu\";\r\nimport {\r\n DBIRoleSelectMenu,\r\n TDBIRoleSelectMenuOmitted,\r\n} from \"./types/Components/RoleSelectMenu\";\r\nimport { handleMessageCommands } from \"./methods/handleMessageCommands\";\r\n\r\nexport interface DBIStore {\r\n get(key: string, defaultValue?: any): Promise<any>;\r\n set(key: string, value: any): Promise<void>;\r\n delete(key: string): Promise<void>;\r\n has(key: string): Promise<boolean>;\r\n}\r\n\r\nexport type DBIClientData<TNamespace extends NamespaceEnums> = {\r\n namespace: NamespaceData[TNamespace][\"clientNamespaces\"];\r\n token: string;\r\n options: Discord.ClientOptions;\r\n client: Discord.Client<true>;\r\n};\r\n\r\nexport interface DBIConfig {\r\n discord: {\r\n namespace: string;\r\n token: string;\r\n options: Discord.ClientOptions;\r\n }[];\r\n defaults: {\r\n locale: TDBILocaleString;\r\n directMessages: boolean;\r\n defaultMemberPermissions: Discord.PermissionsString[];\r\n };\r\n\r\n sharding: \"hybrid\" | \"default\" | \"off\";\r\n /**\r\n * Persist store. (Default to MemoryStore thats not persis tho.)\r\n */\r\n store: DBIStore;\r\n\r\n references: {\r\n autoClear?: {\r\n check: number;\r\n ttl: number;\r\n };\r\n };\r\n\r\n strict: boolean;\r\n messageCommands?: {\r\n prefixes: string[];\r\n typeAliases: {\r\n booleans: Record<string, boolean>;\r\n };\r\n };\r\n}\r\n\r\nexport interface DBIConfigConstructor {\r\n discord:\r\n | {\r\n token: string;\r\n options: Discord.ClientOptions;\r\n }\r\n | {\r\n namespace: string;\r\n token: string;\r\n options: Discord.ClientOptions;\r\n }[];\r\n\r\n defaults?: {\r\n locale?: TDBILocaleString;\r\n directMessages?: boolean;\r\n defaultMemberPermissions?: Discord.PermissionsString[];\r\n messageCommands?: {\r\n deferReplyContent?: MessagePayload | string;\r\n };\r\n };\r\n\r\n sharding?: \"hybrid\" | \"default\" | \"off\";\r\n /**\r\n * Persist store. (Default to MemoryStore thats not persis tho.)\r\n */\r\n store?: DBIStore;\r\n\r\n references?: {\r\n autoClear?: {\r\n check: number;\r\n ttl: number;\r\n };\r\n };\r\n\r\n data?: {\r\n other?: Record<string, any>;\r\n refs?: Map<string, { at: number; value: any; ttl?: number }>;\r\n };\r\n\r\n strict?: boolean;\r\n\r\n messageCommands?: {\r\n prefixes: string[];\r\n typeAliases?: {\r\n /**\r\n * Example: {\"yes\": true, \"no\": false}\r\n */\r\n booleans?: Record<string, boolean>;\r\n };\r\n };\r\n}\r\n\r\nexport interface DBIRegisterAPI<TNamespace extends NamespaceEnums> {\r\n ChatInput(cfg: TDBIChatInputOmitted<TNamespace>): DBIChatInput<TNamespace>;\r\n ChatInputOptions: DBIChatInputOptions<TNamespace>;\r\n Event(cfg: TDBIEventOmitted<TNamespace>): DBIEvent<TNamespace>;\r\n Locale(cfg: TDBILocaleConstructor<TNamespace>): DBILocale<TNamespace>;\r\n Button(cfg: TDBIButtonOmitted<TNamespace>): DBIButton<TNamespace>;\r\n StringSelectMenu(\r\n cfg: TDBIStringSelectMenuOmitted<TNamespace>\r\n ): DBIStringSelectMenu<TNamespace>;\r\n UserSelectMenu(\r\n cfg: TDBIUserSelectMenuOmitted<TNamespace>\r\n ): DBIUserSelectMenu<TNamespace>;\r\n RoleSelectMenu(\r\n cfg: TDBIRoleSelectMenuOmitted<TNamespace>\r\n ): DBIRoleSelectMenu<TNamespace>;\r\n ChannelSelectMenu(\r\n cfg: TDBIChannelSelectMenuOmitted<TNamespace>\r\n ): DBIChannelSelectMenu<TNamespace>;\r\n MentionableSelectMenu(\r\n cfg: TDBIMentionableSelectMenuOmitted<TNamespace>\r\n ): DBIMentionableSelectMenu<TNamespace>;\r\n MessageContextMenu(\r\n cfg: TDBIMessageContextMenuOmitted<TNamespace>\r\n ): DBIMessageContextMenu<TNamespace>;\r\n UserContextMenu(\r\n cfg: TDBIUserContextMenuOmitted<TNamespace>\r\n ): DBIUserContextMenu<TNamespace>;\r\n InteractionLocale(cfg: TDBIInteractionLocaleOmitted): DBIInteractionLocale;\r\n Modal(cfg: TDBIModalOmitted<TNamespace>): DBIModal<TNamespace>;\r\n CustomEvent<T extends keyof NamespaceData[TNamespace][\"customEvents\"]>(\r\n cfg: TDBICustomEventOmitted<TNamespace, T>\r\n ): DBICustomEvent<TNamespace, T>;\r\n onUnload(cb: () => Promise<any> | any): any;\r\n}\r\n\r\nexport class DBI<\r\n TNamespace extends NamespaceEnums,\r\n TOtherData = Record<string, any>\r\n> {\r\n namespace: TNamespace;\r\n config: DBIConfig;\r\n data: {\r\n interactions: Discord.Collection<string, TDBIInteractions<TNamespace>>;\r\n events: Discord.Collection<string, DBIEvent<TNamespace>>;\r\n locales: Discord.Collection<string, DBILocale<TNamespace>>;\r\n interactionLocales: Discord.Collection<string, DBIInteractionLocale>;\r\n other: TOtherData;\r\n eventMap: Record<string, string[] | { [k: string]: string }>;\r\n customEventNames: Set<string>;\r\n unloaders: Set<() => void>;\r\n registers: Set<(...args: any[]) => any>;\r\n registerUnloaders: Set<(...args: any[]) => any>;\r\n refs: Map<string, { at: number; value: any; ttl?: number }>;\r\n clients: DBIClientData<TNamespace>[] & {\r\n next(key?: string): DBIClientData<TNamespace>;\r\n random(): DBIClientData<TNamespace>;\r\n random(size: number): DBIClientData<TNamespace>[];\r\n first(): DBIClientData<TNamespace>;\r\n get(\r\n namespace: NamespaceData[TNamespace][\"clientNamespaces\"]\r\n ): DBIClientData<TNamespace>;\r\n indexes: Record<string, number>;\r\n };\r\n };\r\n events: Events<TNamespace>;\r\n cluster?: Sharding.ClusterClient<Discord.Client>;\r\n private _loaded: boolean;\r\n private _hooked: boolean;\r\n constructor(namespace: TNamespace, config: DBIConfigConstructor) {\r\n this.namespace = namespace as any;\r\n const self = this;\r\n\r\n config.store = (config.store as any) || new MemoryStore();\r\n config.defaults = {\r\n locale: \"en\",\r\n defaultMemberPermissions: [],\r\n directMessages: false,\r\n ...(config.defaults || {}),\r\n messageCommands: {\r\n deferReplyContent: \"Loading...\",\r\n ...(config.defaults?.messageCommands || {}),\r\n },\r\n };\r\n config.sharding = config.sharding ?? \"off\";\r\n config.strict = config.strict ?? true;\r\n config.references = {\r\n autoClear: undefined,\r\n ...(config.references || {}),\r\n };\r\n\r\n if (config.messageCommands) {\r\n if (config.strict && !config.messageCommands?.prefixes?.length)\r\n throw new Error(\"No message command prefixes provided.\");\r\n\r\n let { typeAliases } = config.messageCommands;\r\n\r\n config.messageCommands.typeAliases = {\r\n booleans: typeAliases.booleans ?? {\r\n true: true,\r\n false: false,\r\n yes: true,\r\n no: false,\r\n y: true,\r\n n: false,\r\n \"1\": true,\r\n \"0\": false,\r\n },\r\n };\r\n }\r\n\r\n // @ts-ignore\r\n this.config = config;\r\n\r\n this.data = {\r\n interactions: new Discord.Collection(),\r\n events: new Discord.Collection(),\r\n locales: new Discord.Collection(),\r\n interactionLocales: new Discord.Collection(),\r\n other: (config.data?.other as any) ?? ({} as TOtherData),\r\n eventMap: { ...eventMap },\r\n customEventNames: new Set(),\r\n unloaders: new Set(),\r\n registers: new Set(),\r\n registerUnloaders: new Set(),\r\n refs: config.data?.refs ?? new Map(),\r\n clients: Object.assign([], {\r\n next(key = \"global\") {\r\n this.indexes[key] = ((this.indexes[key] ?? -1) + 1) % this.length;\r\n return this[this.indexes[key]];\r\n },\r\n random(size?: number) {\r\n if (typeof size === \"number\") {\r\n return this.sort(() => Math.random() - 0.5).slice(0, size);\r\n } else {\r\n return this[Math.floor(Math.random() * this.length)];\r\n }\r\n },\r\n first() {\r\n return this[0];\r\n },\r\n get(namespace: string) {\r\n return this.find((i: any) => i.namespace === namespace);\r\n },\r\n indexes: {},\r\n }) as any,\r\n };\r\n\r\n this.events = new Events(this as any);\r\n\r\n config.discord = Array.isArray(config.discord)\r\n ? config.discord\r\n : [\r\n {\r\n token: config.discord.token,\r\n options: config.discord.options,\r\n namespace: \"default\",\r\n },\r\n ];\r\n\r\n this.data.clients.push(...(config.discord as any));\r\n for (let clientContext of this.data.clients) {\r\n let client = new Discord.Client({\r\n ...((clientContext.options || {}) as any),\r\n ...(config.sharding == \"hybrid\"\r\n ? {\r\n shards: Sharding.getInfo().SHARD_LIST,\r\n shardCount: Sharding.getInfo().TOTAL_SHARDS,\r\n }\r\n : {}),\r\n });\r\n clientContext.client = client as Discord.Client<true>;\r\n }\r\n\r\n if (this.data.clients.length === 0) throw new Error(\"No clients provided.\");\r\n if (\r\n this.data.clients.length !== 1 &&\r\n !(config.sharding && config.sharding === \"off\")\r\n )\r\n throw new Error(\"Sharding only supports 1 client.\");\r\n\r\n this.cluster =\r\n config.sharding == \"hybrid\"\r\n ? new Sharding.ClusterClient(this.data.clients[0].client)\r\n : undefined;\r\n this._loaded = false;\r\n this._hooked = false;\r\n }\r\n\r\n private async _hookListeners() {\r\n if (this._hooked) return;\r\n const self = this;\r\n this._hooked = true;\r\n this.data.unloaders.add(hookInteractionListeners(this as any));\r\n this.data.unloaders.add(hookEventListeners(this as any));\r\n if (typeof this.config.references.autoClear !== \"undefined\") {\r\n this.data.unloaders.add(\r\n (() => {\r\n let interval = setInterval(() => {\r\n this.data.refs.forEach(({ at, ttl }, key) => {\r\n if (\r\n Date.now() >\r\n at + (ttl || this.config.references.autoClear.ttl)\r\n ) {\r\n this.data.refs.delete(key);\r\n }\r\n });\r\n }, this.config.references.autoClear.check);\r\n return () => {\r\n clearInterval(interval);\r\n };\r\n })()\r\n );\r\n }\r\n if (typeof this.config.messageCommands !== \"undefined\") {\r\n this.data.unloaders.add(\r\n (() => {\r\n const { client } = this.client();\r\n\r\n function onMessage(message: Discord.Message) {\r\n handleMessageCommands(self as any, message);\r\n }\r\n\r\n client.on(\"messageCreate\", onMessage);\r\n return () => {\r\n client.off(\"messageCreate\", onMessage);\r\n };\r\n })()\r\n );\r\n }\r\n }\r\n\r\n private async _unhookListeners() {\r\n if (!this._hooked) return;\r\n this._hooked = false;\r\n this.data.unloaders.forEach((f) => {\r\n f();\r\n });\r\n }\r\n\r\n private async _unregisterAll() {\r\n for await (const cb of this.data.registerUnloaders) {\r\n await cb();\r\n }\r\n this.data.events.clear();\r\n this.data.interactions.clear();\r\n this.data.customEventNames.forEach((value) => {\r\n delete this.data.eventMap[value];\r\n });\r\n this.data.customEventNames.clear();\r\n }\r\n\r\n private async _registerAll() {\r\n const self = this;\r\n const ChatInputOptions = new DBIChatInputOptions(self);\r\n\r\n for await (const cb of this.data.registers) {\r\n let ChatInput = function (cfg: DBIChatInput<TNamespace>) {\r\n let dbiChatInput = new DBIChatInput(self, cfg);\r\n if (self.data.interactions.has(dbiChatInput.name))\r\n throw new Error(\r\n `DBIChatInput \"${dbiChatInput.name}\" already loaded as \"${\r\n self.data.interactions.get(dbiChatInput.name)?.type\r\n }\"!`\r\n );\r\n self.data.interactions.set(dbiChatInput.name, dbiChatInput);\r\n return dbiChatInput;\r\n };\r\n ChatInput = Object.assign(\r\n ChatInput,\r\n class {\r\n constructor(...args: any[]) {\r\n return ChatInput.apply(this, args as any);\r\n }\r\n }\r\n );\r\n\r\n let Event = function (cfg: TDBIEventOmitted<TNamespace>) {\r\n let dbiEvent = new DBIEvent(self as any, cfg);\r\n if (\r\n self.config.strict &&\r\n self.data.events.has(dbiEvent.id || dbiEvent.name)\r\n )\r\n throw new Error(\r\n `DBIEvent \"${dbiEvent.id || dbiEvent.name}\" already loaded!`\r\n );\r\n self.data.events.set(dbiEvent.id || dbiEvent.name, dbiEvent);\r\n return dbiEvent;\r\n };\r\n Event = Object.assign(\r\n Event,\r\n class {\r\n constructor(...args: any[]) {\r\n return Event.apply(this, args as any);\r\n }\r\n }\r\n );\r\n\r\n let Button = function (cfg: TDBIButtonOmitted<TNamespace>) {\r\n let dbiButton = new DBIButton(self as any, cfg);\r\n if (self.config.strict && self.data.interactions.has(dbiButton.name))\r\n throw new Error(\r\n `DBIButton \"${dbiButton.name}\" already loaded as \"${\r\n self.data.interactions.get(dbiButton.name)?.type\r\n }\"!`\r\n );\r\n self.data.interactions.set(dbiButton.name, dbiButton as any);\r\n return dbiButton;\r\n };\r\n Button = Object.assign(\r\n Button,\r\n class {\r\n constructor(...args: any[]) {\r\n return Button.apply(this, args as any);\r\n }\r\n }\r\n );\r\n\r\n let StringSelectMenu = function (\r\n cfg: TDBIStringSelectMenuOmitted<TNamespace>\r\n ) {\r\n let dbiStringSelectMenu = new DBIStringSelectMenu(self as any, cfg);\r\n if (\r\n self.config.strict &&\r\n self.data.interactions.has(dbiStringSelectMenu.name)\r\n )\r\n throw new Error(\r\n `DBIStringSelectMenu \"${\r\n dbiStringSelectMenu.name\r\n }\" already loaded as \"${\r\n self.data.interactions.get(dbiStringSelectMenu.name)?.type\r\n }\"!`\r\n );\r\n self.data.interactions.set(\r\n dbiStringSelectMenu.name,\r\n dbiStringSelectMenu as any\r\n );\r\n return dbiStringSelectMenu;\r\n };\r\n StringSelectMenu = Object.assign(\r\n StringSelectMenu,\r\n class {\r\n constructor(...args: any[]) {\r\n return StringSelectMenu.apply(this, args as any);\r\n }\r\n }\r\n );\r\n\r\n let UserSelectMenu = function (\r\n cfg: TDBIUserSelectMenuOmitted<TNamespace>\r\n ) {\r\n let dbiUserSelectMenu = new DBIUserSelectMenu(self as any, cfg);\r\n if (\r\n self.config.strict &&\r\n self.data.interactions.has(dbiUserSelectMenu.name)\r\n )\r\n throw new Error(\r\n `DBIUserSelectMenu \"${dbiUserSelectMenu.name}\" already loaded as \"${\r\n self.data.interactions.get(dbiUserSelectMenu.name)?.type\r\n }\"!`\r\n );\r\n self.data.interactions.set(\r\n dbiUserSelectMenu.name,\r\n dbiUserSelectMenu as any\r\n );\r\n return dbiUserSelectMenu;\r\n };\r\n UserSelectMenu = Object.assign(\r\n UserSelectMenu,\r\n class {\r\n constructor(...args: any[]) {\r\n return UserSelectMenu.apply(this, args as any);\r\n }\r\n }\r\n );\r\n\r\n let RoleSelectMenu = function (\r\n cfg: TDBIRoleSelectMenuOmitted<TNamespace>\r\n ) {\r\n let dbiRoleSelectMenu = new DBIRoleSelectMenu(self as any, cfg);\r\n if (\r\n self.config.strict &&\r\n self.data.interactions.has(dbiRoleSelectMenu.name)\r\n )\r\n throw new Error(\r\n `DBIRoleSelectMenu \"${dbiRoleSelectMenu.name}\" already loaded as \"${\r\n self.data.interactions.get(dbiRoleSelectMenu.name)?.type\r\n }\"!`\r\n );\r\n self.data.interactions.set(\r\n dbiRoleSelectMenu.name,\r\n dbiRoleSelectMenu as any\r\n );\r\n return dbiRoleSelectMenu;\r\n };\r\n RoleSelectMenu = Object.assign(\r\n RoleSelectMenu,\r\n class {\r\n constructor(...args: any[]) {\r\n return RoleSelectMenu.apply(this, args as any);\r\n }\r\n }\r\n );\r\n\r\n let ChannelSelectMenu = function (\r\n cfg: TDBIChannelSelectMenuOmitted<TNamespace>\r\n ) {\r\n let dbiChannelSelectMenu = new DBIChannelSelectMenu(self as any, cfg);\r\n if (\r\n self.config.strict &&\r\n self.data.interactions.has(dbiChannelSelectMenu.name)\r\n )\r\n throw new Error(\r\n `DBIChannelSelectMenu \"${\r\n dbiChannelSelectMenu.name\r\n }\" already loaded as \"${\r\n self.data.interactions.get(dbiChannelSelectMenu.name)?.type\r\n }\"!`\r\n );\r\n self.data.interactions.set(\r\n dbiChannelSelectMenu.name,\r\n dbiChannelSelectMenu as any\r\n );\r\n return dbiChannelSelectMenu;\r\n };\r\n ChannelSelectMenu = Object.assign(\r\n ChannelSelectMenu,\r\n class {\r\n constructor(...args: any[]) {\r\n return ChannelSelectMenu.apply(this, args as any);\r\n }\r\n }\r\n );\r\n\r\n let MentionableSelectMenu = function (\r\n cfg: TDBIMentionableSelectMenuOmitted<TNamespace>\r\n ) {\r\n let dbiMentionableSelectMenu = new DBIMentionableSelectMenu(\r\n self as any,\r\n cfg\r\n );\r\n if (\r\n self.config.strict &&\r\n self.data.interactions.has(dbiMentionableSelectMenu.name)\r\n )\r\n throw new Error(\r\n `DBIMentionableSelectMenu \"${\r\n dbiMentionableSelectMenu.name\r\n }\" already loaded as \"${\r\n self.data.interactions.get(dbiMentionableSelectMenu.name)?.type\r\n }\"!`\r\n );\r\n self.data.interactions.set(\r\n dbiMentionableSelectMenu.name,\r\n dbiMentionableSelectMenu as any\r\n );\r\n return dbiMentionableSelectMenu;\r\n };\r\n MentionableSelectMenu = Object.assign(\r\n MentionableSelectMenu,\r\n class {\r\n constructor(...args: any[]) {\r\n return MentionableSelectMenu.apply(this, args as any);\r\n }\r\n }\r\n );\r\n\r\n let MessageContextMenu = function (\r\n cfg: TDBIMessageContextMenuOmitted<TNamespace>\r\n ) {\r\n let dbiMessageContextMenu = new DBIMessageContextMenu(self as any, cfg);\r\n if (\r\n self.config.strict &&\r\n self.data.interactions.has(dbiMessageContextMenu.name)\r\n )\r\n throw new Error(\r\n `DBIMessageContextMenu \"${\r\n dbiMessageContextMenu.name\r\n }\" already loaded as \"${\r\n self.data.interactions.get(dbiMessageContextMenu.name)?.type\r\n }\"!`\r\n );\r\n self.data.interactions.set(\r\n dbiMessageContextMenu.name,\r\n dbiMessageContextMenu as any\r\n );\r\n return dbiMessageContextMenu;\r\n };\r\n MessageContextMenu = Object.assign(\r\n MessageContextMenu,\r\n class {\r\n constructor(...args: any[]) {\r\n return MessageContextMenu.apply(this, args as any);\r\n }\r\n }\r\n );\r\n\r\n let UserContextMenu = function (\r\n cfg: TDBIUserContextMenuOmitted<TNamespace>\r\n ) {\r\n let dbiUserContextMenu = new DBIUserContextMenu(self as any, cfg);\r\n if (\r\n self.config.strict &&\r\n self.data.interactions.has(dbiUserContextMenu.name)\r\n )\r\n throw new Error(\r\n `DBIUserContextMenu \"${\r\n dbiUserContextMenu.name\r\n }\" already loaded as \"${\r\n self.data.interactions.get(dbiUserContextMenu.name)?.type\r\n }\"!`\r\n );\r\n self.data.interactions.set(\r\n dbiUserContextMenu.name,\r\n dbiUserContextMenu as any\r\n );\r\n return dbiUserContextMenu;\r\n };\r\n UserContextMenu = Object.assign(\r\n UserContextMenu,\r\n class {\r\n constructor(...args: any[]) {\r\n return UserContextMenu.apply(this, args as any);\r\n }\r\n }\r\n );\r\n\r\n let Modal = function (cfg: TDBIModalOmitted<TNamespace>) {\r\n let dbiModal = new DBIModal(self as any, cfg);\r\n if (self.config.strict && self.data.interactions.has(dbiModal.name))\r\n throw new Error(\r\n `DBIModal \"${dbiModal.name}\" already loaded as \"${\r\n self.data.interactions.get(dbiModal.name)?.type\r\n }\"!`\r\n );\r\n self.data.interactions.set(dbiModal.name, dbiModal as any);\r\n return dbiModal;\r\n };\r\n Modal = Object.assign(\r\n Modal,\r\n class {\r\n constructor(...args: any[]) {\r\n return Modal.apply(this, args as any);\r\n }\r\n }\r\n );\r\n\r\n let Locale = function (cfg: TDBILocaleConstructor<TNamespace>) {\r\n let dbiLocale = new DBILocale(self as any, cfg);\r\n if (\r\n self.config.strict &&\r\n self.data.interactionLocales.has(dbiLocale.name)\r\n )\r\n throw new Error(`DBILocale \"${dbiLocale.name}\" already loaded!`);\r\n if (self.data.locales.has(dbiLocale.name))\r\n dbiLocale.mergeLocale(self.data.locales.get(dbiLocale.name));\r\n self.data.locales.set(dbiLocale.name, dbiLocale);\r\n return dbiLocale;\r\n };\r\n Locale = Object.assign(\r\n Locale,\r\n class {\r\n constructor(...args: any[]) {\r\n return Locale.apply(this, args as any);\r\n }\r\n }\r\n );\r\n\r\n let CustomEvent = function (cfg: TDBICustomEventOmitted<TNamespace>) {\r\n let dbiCustomEvent = new DBICustomEvent(self, cfg) as any;\r\n if (self.config.strict && self.data.eventMap[dbiCustomEvent.name])\r\n throw new Error(\r\n `DBICustomEvent \"${dbiCustomEvent.name}\" already loaded!`\r\n );\r\n self.data.eventMap[dbiCustomEvent.name] = dbiCustomEvent.map;\r\n self.data.customEventNames.add(dbiCustomEvent.name);\r\n return dbiCustomEvent;\r\n };\r\n CustomEvent = Object.assign(\r\n CustomEvent,\r\n class {\r\n constructor(...args: any[]) {\r\n return CustomEvent.apply(this, args as any);\r\n }\r\n }\r\n );\r\n\r\n let InteractionLocale = function (cfg: TDBIInteractionLocaleOmitted) {\r\n let dbiInteractionLocale = new DBIInteractionLocale(self, cfg);\r\n if (\r\n self.config.strict &&\r\n self.data.interactionLocales.has(dbiInteractionLocale.name)\r\n )\r\n throw new Error(\r\n `DBIInteractionLocale \"${dbiInteractionLocale.name}\" already loaded!`\r\n );\r\n self.data.interactionLocales.set(\r\n dbiInteractionLocale.name,\r\n dbiInteractionLocale\r\n );\r\n return dbiInteractionLocale;\r\n };\r\n InteractionLocale = Object.assign(\r\n InteractionLocale,\r\n class {\r\n constructor(...args: any[]) {\r\n return InteractionLocale.apply(this, args as any);\r\n }\r\n }\r\n );\r\n\r\n await cb({\r\n ChatInput,\r\n Event,\r\n ChatInputOptions,\r\n Locale,\r\n Button,\r\n StringSelectMenu,\r\n UserSelectMenu,\r\n RoleSelectMenu,\r\n ChannelSelectMenu,\r\n MentionableSelectMenu,\r\n MessageContextMenu,\r\n UserContextMenu,\r\n CustomEvent,\r\n Modal,\r\n InteractionLocale,\r\n onUnload(cb: () => Promise<any> | any) {\r\n self.data.registerUnloaders.add(cb);\r\n },\r\n });\r\n }\r\n self.data.interactions.sort((a, b) => b.name.length - a.name.length);\r\n }\r\n\r\n emit<\r\n TEventName extends keyof (NamespaceData[TNamespace][\"customEvents\"] &\r\n ClientEvents)\r\n >(\r\n name: TEventName,\r\n args: (NamespaceData[TNamespace][\"customEvents\"] & ClientEvents)[TEventName]\r\n ): void {\r\n this.data.clients.forEach((d) =>\r\n d.client.emit(name as any, { ...args, _DIRECT_: true } as any)\r\n );\r\n }\r\n\r\n /**\r\n * this.data.interactions.get(name)\r\n */\r\n interaction<\r\n TInteractionName extends keyof NamespaceData[TNamespace][\"interactionMapping\"]\r\n >(\r\n name: TInteractionName\r\n ): NamespaceData[TNamespace][\"interactionMapping\"][TInteractionName] {\r\n return this.data.interactions.get(name as any) as any;\r\n }\r\n\r\n client<TClientName extends NamespaceData[TNamespace][\"clientNamespaces\"]>(\r\n name?: TClientName\r\n ): DBIClientData<TNamespace> {\r\n return name ? this.data.clients.get(name) : this.data.clients.first();\r\n }\r\n /**\r\n * this.data.events.get(name)\r\n */\r\n event<TEventName extends NamespaceData[TNamespace][\"eventNames\"]>(\r\n name: TEventName\r\n ): DBIEvent<TNamespace> {\r\n return this.data.events.get(name);\r\n }\r\n\r\n /**\r\n * this.data.locales.get(name)\r\n */\r\n locale<TLocaleName extends NamespaceData[TNamespace][\"localeNames\"]>(\r\n name: TLocaleName\r\n ): DBILocale<TNamespace> {\r\n return this.data.locales.get(name) as any;\r\n }\r\n\r\n /**\r\n * Shorthands for modifying `dbi.data.other`\r\n */\r\n get<K extends keyof TOtherData>(\r\n k: K,\r\n defaultValue?: TOtherData[K]\r\n ): TOtherData[K] {\r\n if (defaultValue && !this.has(k as any)) {\r\n this.set(k, defaultValue);\r\n return defaultValue;\r\n }\r\n return _.get(this.data.other, k);\r\n }\r\n\r\n /**\r\n * Shorthands for modifying `dbi.data.other`\r\n */\r\n set<K extends keyof TOtherData>(k: K, v: TOtherData[K]): any {\r\n this.data.other = _.set(this.data.other as any, k, v);\r\n }\r\n\r\n /**\r\n * Shorthands for modifying `dbi.data.other`\r\n */\r\n has(k: string): boolean {\r\n return _.has(this.data.other, k as any);\r\n }\r\n\r\n /**\r\n * Shorthands for modifying `dbi.data.other`\r\n */\r\n delete(k: string): boolean {\r\n return _.unset(this.data.other, k);\r\n }\r\n\r\n async login(): Promise<any> {\r\n await aaq.quickForEach(this.data.clients, async (clientContext) => {\r\n await clientContext.client.login(\r\n this.config.sharding == \"default\" ? null : clientContext.token\r\n );\r\n });\r\n }\r\n\r\n async register(cb: (api: DBIRegisterAPI<TNamespace>) => void): Promise<any> {\r\n this.data.registers.add(cb);\r\n }\r\n\r\n async load(): Promise<boolean> {\r\n if (this._loaded) return false;\r\n await this._registerAll();\r\n await this._hookListeners();\r\n this._loaded = true;\r\n return true;\r\n }\r\n\r\n async unload(): Promise<boolean> {\r\n if (!this._loaded) return false;\r\n await this._unregisterAll();\r\n await this._unhookListeners();\r\n this._loaded = false;\r\n return true;\r\n }\r\n\r\n get loaded(): boolean {\r\n return this._loaded;\r\n }\r\n\r\n async publish(type: \"Global\", clear?: boolean): Promise<any>;\r\n async publish(type: \"Guild\", guildId: string, clear?: boolean): Promise<any>;\r\n\r\n async publish(...args: any[]) {\r\n let interactions = this.data.interactions.filter(\r\n (i) =>\r\n i.type == \"ChatInput\" ||\r\n i.type == \"MessageContextMenu\" ||\r\n i.type == \"UserContextMenu\"\r\n ) as any;\r\n switch (args[0]) {\r\n case \"Global\": {\r\n return await publishInteractions(\r\n this.data.clients,\r\n args[1] ? new Discord.Collection() : interactions,\r\n this.data.interactionLocales,\r\n args[0]\r\n );\r\n }\r\n case \"Guild\": {\r\n return await publishInteractions(\r\n this.data.clients,\r\n args[2] ? new Discord.Collection() : interactions,\r\n this.data.interactionLocales,\r\n args[0],\r\n args[1]\r\n );\r\n }\r\n }\r\n }\r\n}\r\n"]}
|