@mostfeatured/dbi 0.0.29 → 0.0.32
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 +17 -4
- package/dist/DBI.d.ts.map +1 -1
- package/dist/DBI.js +21 -16
- package/dist/DBI.js.map +1 -1
- package/dist/types/Button.d.ts +1 -0
- package/dist/types/Button.d.ts.map +1 -1
- package/dist/types/Button.js +2 -1
- package/dist/types/Button.js.map +1 -1
- package/dist/types/Modal.d.ts +2 -1
- package/dist/types/Modal.d.ts.map +1 -1
- package/dist/types/Modal.js +4 -3
- package/dist/types/Modal.js.map +1 -1
- package/dist/types/SelectMenu.d.ts +2 -1
- package/dist/types/SelectMenu.d.ts.map +1 -1
- package/dist/types/SelectMenu.js +2 -1
- package/dist/types/SelectMenu.js.map +1 -1
- package/dist/utils/customId.d.ts +1 -1
- package/dist/utils/customId.d.ts.map +1 -1
- package/dist/utils/customId.js +4 -2
- package/dist/utils/customId.js.map +1 -1
- package/package.json +40 -40
- package/readme.md +265 -17
- package/src/DBI.ts +42 -23
- package/src/types/Button.ts +3 -2
- package/src/types/Modal.ts +7 -4
- package/src/types/SelectMenu.ts +5 -2
- package/src/utils/customId.ts +3 -2
package/dist/DBI.d.ts
CHANGED
|
@@ -27,12 +27,18 @@ export interface DBIConfig {
|
|
|
27
27
|
directMessages: boolean;
|
|
28
28
|
defaultMemberPermissions: Discord.PermissionsString[];
|
|
29
29
|
};
|
|
30
|
-
sharding:
|
|
30
|
+
sharding: "hybrid" | "default" | "off";
|
|
31
31
|
/**
|
|
32
32
|
* Persist store. (Default to MemoryStore thats not persis tho.)
|
|
33
33
|
*/
|
|
34
34
|
store: DBIStore;
|
|
35
|
-
|
|
35
|
+
references: {
|
|
36
|
+
autoClear?: {
|
|
37
|
+
check: number;
|
|
38
|
+
ttl: number;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
strict: boolean;
|
|
36
42
|
}
|
|
37
43
|
export interface DBIConfigConstructor {
|
|
38
44
|
discord: {
|
|
@@ -44,12 +50,18 @@ export interface DBIConfigConstructor {
|
|
|
44
50
|
directMessages?: boolean;
|
|
45
51
|
defaultMemberPermissions?: Discord.PermissionsString[];
|
|
46
52
|
};
|
|
47
|
-
sharding?:
|
|
53
|
+
sharding?: "hybrid" | "default" | "off";
|
|
48
54
|
/**
|
|
49
55
|
* Persist store. (Default to MemoryStore thats not persis tho.)
|
|
50
56
|
*/
|
|
51
57
|
store?: DBIStore;
|
|
52
|
-
|
|
58
|
+
references?: {
|
|
59
|
+
autoClear?: {
|
|
60
|
+
check: number;
|
|
61
|
+
ttl: number;
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
strict?: boolean;
|
|
53
65
|
}
|
|
54
66
|
export interface DBIRegisterAPI {
|
|
55
67
|
ChatInput(cfg: TDBIChatInputOmitted): DBIChatInput;
|
|
@@ -83,6 +95,7 @@ export declare class DBI<TOtherData = Record<string, any>> {
|
|
|
83
95
|
refs: Map<string, {
|
|
84
96
|
at: number;
|
|
85
97
|
value: any;
|
|
98
|
+
ttl?: number;
|
|
86
99
|
}>;
|
|
87
100
|
};
|
|
88
101
|
events: Events;
|
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;AACjC,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAEzE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAG3D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"DBI.d.ts","sourceRoot":"","sources":["../src/DBI.ts"],"names":[],"mappings":"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"}
|
package/dist/DBI.js
CHANGED
|
@@ -39,7 +39,12 @@ class DBI {
|
|
|
39
39
|
directMessages: false,
|
|
40
40
|
...(config.defaults || {})
|
|
41
41
|
};
|
|
42
|
-
config.sharding = config.sharding ??
|
|
42
|
+
config.sharding = config.sharding ?? "off";
|
|
43
|
+
config.strict = config.strict ?? true;
|
|
44
|
+
config.references = {
|
|
45
|
+
autoClear: undefined,
|
|
46
|
+
...(config.references || {})
|
|
47
|
+
};
|
|
43
48
|
// @ts-ignore
|
|
44
49
|
this.config = config;
|
|
45
50
|
this.data = {
|
|
@@ -58,12 +63,12 @@ class DBI {
|
|
|
58
63
|
this.events = new Events_1.Events(this);
|
|
59
64
|
this.client = new discord_js_1.default.Client({
|
|
60
65
|
...(config.discord?.options || {}),
|
|
61
|
-
...(config.sharding ? {
|
|
66
|
+
...(config.sharding == "hybrid" ? {
|
|
62
67
|
shards: Sharding.data.SHARD_LIST,
|
|
63
68
|
shardCount: Sharding.data.TOTAL_SHARDS
|
|
64
69
|
} : {})
|
|
65
70
|
});
|
|
66
|
-
this.cluster = config.sharding ? new Sharding.Client(this.client) : undefined;
|
|
71
|
+
this.cluster = config.sharding == "hybrid" ? new Sharding.Client(this.client) : undefined;
|
|
67
72
|
this._loaded = false;
|
|
68
73
|
this._hooked = false;
|
|
69
74
|
}
|
|
@@ -73,15 +78,15 @@ class DBI {
|
|
|
73
78
|
this._hooked = true;
|
|
74
79
|
this.data.unloaders.add((0, hookInteractionListeners_1.hookInteractionListeners)(this));
|
|
75
80
|
this.data.unloaders.add((0, hookEventListeners_1.hookEventListeners)(this));
|
|
76
|
-
if (typeof this.config.
|
|
81
|
+
if (typeof this.config.references.autoClear != "undefined") {
|
|
77
82
|
this.data.unloaders.add((() => {
|
|
78
83
|
let interval = setInterval(() => {
|
|
79
|
-
this.data.refs.forEach(({ at }, key) => {
|
|
80
|
-
if (Date.now() > (at + this.config.
|
|
84
|
+
this.data.refs.forEach(({ at, ttl }, key) => {
|
|
85
|
+
if (Date.now() > (at + (ttl || this.config.references.autoClear.ttl))) {
|
|
81
86
|
this.data.refs.delete(key);
|
|
82
87
|
}
|
|
83
88
|
});
|
|
84
|
-
},
|
|
89
|
+
}, this.config.references.autoClear.check);
|
|
85
90
|
return () => {
|
|
86
91
|
clearInterval(interval);
|
|
87
92
|
};
|
|
@@ -119,7 +124,7 @@ class DBI {
|
|
|
119
124
|
});
|
|
120
125
|
let Event = function (cfg) {
|
|
121
126
|
let dbiEvent = new Event_1.DBIEvent(self, cfg);
|
|
122
|
-
if (self.data.events.has(dbiEvent.id || dbiEvent.name))
|
|
127
|
+
if (self.config.strict && self.data.events.has(dbiEvent.id || dbiEvent.name))
|
|
123
128
|
throw new Error(`DBIEvent "${dbiEvent.id || dbiEvent.name}" already loaded!`);
|
|
124
129
|
self.data.events.set(dbiEvent.id || dbiEvent.name, dbiEvent);
|
|
125
130
|
return dbiEvent;
|
|
@@ -129,7 +134,7 @@ class DBI {
|
|
|
129
134
|
});
|
|
130
135
|
let Button = function (cfg) {
|
|
131
136
|
let dbiButton = new Button_1.DBIButton(self, cfg);
|
|
132
|
-
if (self.data.interactions.has(dbiButton.name))
|
|
137
|
+
if (self.config.strict && self.data.interactions.has(dbiButton.name))
|
|
133
138
|
throw new Error(`DBIButton "${dbiButton.name}" already loaded as "${self.data.interactions.get(dbiButton.name)?.type}"!`);
|
|
134
139
|
self.data.interactions.set(dbiButton.name, dbiButton);
|
|
135
140
|
return dbiButton;
|
|
@@ -139,7 +144,7 @@ class DBI {
|
|
|
139
144
|
});
|
|
140
145
|
let SelectMenu = function (cfg) {
|
|
141
146
|
let dbiSelectMenu = new SelectMenu_1.DBISelectMenu(self, cfg);
|
|
142
|
-
if (self.data.interactions.has(dbiSelectMenu.name))
|
|
147
|
+
if (self.config.strict && self.data.interactions.has(dbiSelectMenu.name))
|
|
143
148
|
throw new Error(`DBISelectMenu "${dbiSelectMenu.name}" already loaded as "${self.data.interactions.get(dbiSelectMenu.name)?.type}"!`);
|
|
144
149
|
self.data.interactions.set(dbiSelectMenu.name, dbiSelectMenu);
|
|
145
150
|
return dbiSelectMenu;
|
|
@@ -149,7 +154,7 @@ class DBI {
|
|
|
149
154
|
});
|
|
150
155
|
let MessageContextMenu = function (cfg) {
|
|
151
156
|
let dbiMessageContextMenu = new MessageContextMenu_1.DBIMessageContextMenu(self, cfg);
|
|
152
|
-
if (self.data.interactions.has(dbiMessageContextMenu.name))
|
|
157
|
+
if (self.config.strict && self.data.interactions.has(dbiMessageContextMenu.name))
|
|
153
158
|
throw new Error(`DBIMessageContextMenu "${dbiMessageContextMenu.name}" already loaded as "${self.data.interactions.get(dbiMessageContextMenu.name)?.type}"!`);
|
|
154
159
|
self.data.interactions.set(dbiMessageContextMenu.name, dbiMessageContextMenu);
|
|
155
160
|
return dbiMessageContextMenu;
|
|
@@ -159,7 +164,7 @@ class DBI {
|
|
|
159
164
|
});
|
|
160
165
|
let UserContextMenu = function (cfg) {
|
|
161
166
|
let dbiUserContextMenu = new UserContextMenu_1.DBIUserContextMenu(self, cfg);
|
|
162
|
-
if (self.data.interactions.has(dbiUserContextMenu.name))
|
|
167
|
+
if (self.config.strict && self.data.interactions.has(dbiUserContextMenu.name))
|
|
163
168
|
throw new Error(`DBIUserContextMenu "${dbiUserContextMenu.name}" already loaded as "${self.data.interactions.get(dbiUserContextMenu.name)?.type}"!`);
|
|
164
169
|
self.data.interactions.set(dbiUserContextMenu.name, dbiUserContextMenu);
|
|
165
170
|
return dbiUserContextMenu;
|
|
@@ -169,7 +174,7 @@ class DBI {
|
|
|
169
174
|
});
|
|
170
175
|
let Modal = function (cfg) {
|
|
171
176
|
let dbiModal = new Modal_1.DBIModal(self, cfg);
|
|
172
|
-
if (self.data.interactions.has(dbiModal.name))
|
|
177
|
+
if (self.config.strict && self.data.interactions.has(dbiModal.name))
|
|
173
178
|
throw new Error(`DBIModal "${dbiModal.name}" already loaded as "${self.data.interactions.get(dbiModal.name)?.type}"!`);
|
|
174
179
|
self.data.interactions.set(dbiModal.name, dbiModal);
|
|
175
180
|
return dbiModal;
|
|
@@ -179,7 +184,7 @@ class DBI {
|
|
|
179
184
|
});
|
|
180
185
|
let Locale = function (cfg) {
|
|
181
186
|
let dbiLocale = new Locale_1.DBILocale(self, cfg);
|
|
182
|
-
if (self.data.locales.has(dbiLocale.name))
|
|
187
|
+
if (self.config.strict && self.data.locales.has(dbiLocale.name))
|
|
183
188
|
throw new Error(`DBILocale "${dbiLocale.name}" already loaded!`);
|
|
184
189
|
self.data.locales.set(dbiLocale.name, dbiLocale);
|
|
185
190
|
return dbiLocale;
|
|
@@ -189,7 +194,7 @@ class DBI {
|
|
|
189
194
|
});
|
|
190
195
|
let InteractionLocale = function (cfg) {
|
|
191
196
|
let dbiInteractionLocale = new InteractionLocale_1.DBIInteractionLocale(self, cfg);
|
|
192
|
-
if (self.data.interactionLocales.has(dbiInteractionLocale.name))
|
|
197
|
+
if (self.config.strict && self.data.interactionLocales.has(dbiInteractionLocale.name))
|
|
193
198
|
throw new Error(`DBIInteractionLocale "${dbiInteractionLocale.name}" already loaded!`);
|
|
194
199
|
self.data.interactionLocales.set(dbiInteractionLocale.name, dbiInteractionLocale);
|
|
195
200
|
return dbiInteractionLocale;
|
|
@@ -267,7 +272,7 @@ class DBI {
|
|
|
267
272
|
return lodash_1.default.unset(this.data.other, k);
|
|
268
273
|
}
|
|
269
274
|
async login() {
|
|
270
|
-
await this.client.login(this.config.discord.token);
|
|
275
|
+
await this.client.login(this.config.sharding == "default" ? undefined : this.config.discord.token);
|
|
271
276
|
}
|
|
272
277
|
async register(cb) {
|
|
273
278
|
this.data.registers.add(cb);
|
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 { 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, DBILangConstructorObject, TDBILocaleConstructor, TDBILocaleString } from \"./types/Locale\";\r\nimport { DBIButton, TDBIButtonOmitted } from \"./types/Button\";\r\nimport { DBISelectMenu, TDBISelectMenuOmitted } from \"./types/SelectMenu\";\r\nimport { DBIMessageContextMenu, TDBIMessageContextMenuOmitted } from \"./types/MessageContextMenu\";\r\nimport { DBIUserContextMenu, TDBIUserContextMenuOmitted } from \"./types/UserContextMenu\";\r\nimport { hookEventListeners } from \"./methods/hookEventListeners\";\r\nimport eventMap from \"./data/eventMap.json\";\r\nimport { DBIModal, TDBIModalOmitted } from \"./types/Modal\";\r\nimport * as Sharding from \"discord-hybrid-sharding\";\r\nimport _ from \"lodash\";\r\nimport { DBIInteractionLocale, TDBIInteractionLocaleOmitted } from \"./types/InteractionLocale\";\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 interface DBIConfig {\r\n discord: {\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: boolean;\r\n /**\r\n * Persist store. (Default to MemoryStore thats not persis tho.)\r\n */\r\n store: DBIStore;\r\n\r\n clearRefsAfter?: number;\r\n}\r\n\r\nexport interface DBIConfigConstructor {\r\n discord: {\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?: boolean;\r\n /**\r\n * Persist store. (Default to MemoryStore thats not persis tho.)\r\n */\r\n store?: DBIStore;\r\n\r\n clearRefsAfter?: number;\r\n}\r\n\r\nexport interface DBIRegisterAPI {\r\n ChatInput(cfg: TDBIChatInputOmitted): DBIChatInput;\r\n ChatInputOptions: typeof DBIChatInputOptions;\r\n Event(cfg: TDBIEventOmitted): DBIEvent;\r\n Locale(cfg: TDBILocaleConstructor): DBILocale;\r\n Button(cfg: TDBIButtonOmitted): DBIButton;\r\n SelectMenu(cfg: TDBISelectMenuOmitted): DBISelectMenu;\r\n MessageContextMenu(cfg: TDBIMessageContextMenuOmitted): DBIMessageContextMenu;\r\n UserContextMenu(cfg: TDBIUserContextMenuOmitted): DBIUserContextMenu;\r\n InteractionLocale(cfg: TDBIInteractionLocaleOmitted): DBIInteractionLocale;\r\n Modal(cfg: TDBIModalOmitted): DBIModal;\r\n onUnload(cb: () => Promise<any> | any): any;\r\n}\r\n\r\nexport type TDBIInteractions = DBIChatInput | DBIButton | DBISelectMenu | DBIMessageContextMenu | DBIUserContextMenu | DBIModal;\r\n\r\nexport class DBI<TOtherData = Record<string, any>> {\r\n namespace: string;\r\n config: DBIConfig;\r\n client: Discord.Client<true>;\r\n data: {\r\n interactions: Discord.Collection<string, TDBIInteractions>;\r\n events: Discord.Collection<string, DBIEvent>;\r\n plugins: Discord.Collection<string, any>;\r\n locales: Discord.Collection<string, DBILocale>;\r\n interactionLocales: Discord.Collection<string, DBIInteractionLocale>;\r\n other: TOtherData;\r\n eventMap: Record<string, 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 }>;\r\n };\r\n events: Events;\r\n cluster?: Sharding.Client;\r\n private _loaded: boolean;\r\n private _hooked: boolean;\r\n constructor(namespace: string, config: DBIConfigConstructor) {\r\n this.namespace = namespace;\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 ?? false;\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 plugins: new Discord.Collection(),\r\n locales: new Discord.Collection(),\r\n interactionLocales: new Discord.Collection(),\r\n other: {} as TOtherData,\r\n eventMap,\r\n unloaders: new Set(),\r\n registers: new Set(),\r\n registerUnloaders: new Set(),\r\n refs: new Map()\r\n }\r\n\r\n this.events = new Events(this as any);\r\n this.client = new Discord.Client({\r\n ...(config.discord?.options || {}) as any,\r\n ...(config.sharding ? {\r\n shards: (Sharding as any).data.SHARD_LIST,\r\n shardCount: (Sharding as any).data.TOTAL_SHARDS\r\n } : {})\r\n });\r\n this.cluster = config.sharding ? new Sharding.Client(this.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 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.clearRefsAfter == \"number\") {\r\n this.data.unloaders.add((() => {\r\n let interval = setInterval(() => {\r\n this.data.refs.forEach(({ at }, key) => {\r\n if (Date.now() > (at + this.config.clearRefsAfter)) {\r\n this.data.refs.delete(key);\r\n }\r\n });\r\n }, 60000);\r\n return () => {\r\n clearInterval(interval);\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.plugins.clear();\r\n }\r\n\r\n private async _registerAll() {\r\n const self = this as any;\r\n\r\n for await (const cb of this.data.registers) {\r\n let ChatInput = function(cfg: DBIChatInput) {\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) {\r\n let dbiEvent = new DBIEvent(self, cfg);\r\n if (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) {\r\n let dbiButton = new DBIButton(self, cfg);\r\n if (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);\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 SelectMenu = function(cfg: TDBISelectMenuOmitted) {\r\n let dbiSelectMenu = new DBISelectMenu(self, cfg);\r\n if (self.data.interactions.has(dbiSelectMenu.name)) throw new Error(`DBISelectMenu \"${dbiSelectMenu.name}\" already loaded as \"${self.data.interactions.get(dbiSelectMenu.name)?.type}\"!`);\r\n self.data.interactions.set(dbiSelectMenu.name, dbiSelectMenu);\r\n return dbiSelectMenu;\r\n };\r\n SelectMenu = Object.assign(SelectMenu, class { constructor(...args: any[]) { return SelectMenu.apply(this, args as any); } });\r\n\r\n let MessageContextMenu = function(cfg: TDBIMessageContextMenuOmitted) {\r\n let dbiMessageContextMenu = new DBIMessageContextMenu(self, cfg);\r\n if (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);\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) {\r\n let dbiUserContextMenu = new DBIUserContextMenu(self, cfg);\r\n if (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);\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) {\r\n let dbiModal = new DBIModal(self, cfg);\r\n if (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);\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) {\r\n let dbiLocale = new DBILocale(self, cfg);\r\n if (self.data.locales.has(dbiLocale.name)) throw new Error(`DBILocale \"${dbiLocale.name}\" already loaded!`);\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 InteractionLocale = function(cfg: TDBIInteractionLocaleOmitted) {\r\n let dbiInteractionLocale = new DBIInteractionLocale(self, cfg);\r\n if (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: DBIChatInputOptions,\r\n Locale,\r\n Button,\r\n SelectMenu,\r\n MessageContextMenu,\r\n UserContextMenu,\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 }\r\n\r\n /**\r\n * this.data.interactions.get(name)\r\n */\r\n interaction(name: string): TDBIInteractions {\r\n return this.data.interactions.get(name);\r\n }\r\n\r\n /**\r\n * this.data.events.get(name)\r\n */\r\n event(name: string): DBIEvent {\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(name: string): DBILocale {\r\n return this.data.locales.get(name);\r\n }\r\n\r\n /**\r\n * this.data.plugins.get(name)\r\n */\r\n plugin(name: string): any {\r\n return this.data.plugins.get(name);\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 this.client.login(this.config.discord.token);\r\n }\r\n\r\n async register(cb: (api: DBIRegisterAPI) => 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.config.discord.token,\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.config.discord.token,\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":"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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 { 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/Locale\";\r\nimport { DBIButton, TDBIButtonOmitted } from \"./types/Button\";\r\nimport { DBISelectMenu, TDBISelectMenuOmitted } from \"./types/SelectMenu\";\r\nimport { DBIMessageContextMenu, TDBIMessageContextMenuOmitted } from \"./types/MessageContextMenu\";\r\nimport { DBIUserContextMenu, TDBIUserContextMenuOmitted } from \"./types/UserContextMenu\";\r\nimport { hookEventListeners } from \"./methods/hookEventListeners\";\r\nimport eventMap from \"./data/eventMap.json\";\r\nimport { DBIModal, TDBIModalOmitted } from \"./types/Modal\";\r\nimport * as Sharding from \"discord-hybrid-sharding\";\r\nimport _ from \"lodash\";\r\nimport { DBIInteractionLocale, TDBIInteractionLocaleOmitted } from \"./types/InteractionLocale\";\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 interface DBIConfig {\r\n discord: {\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}\r\n\r\nexport interface DBIConfigConstructor {\r\n discord: {\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}\r\n\r\nexport interface DBIRegisterAPI {\r\n ChatInput(cfg: TDBIChatInputOmitted): DBIChatInput;\r\n ChatInputOptions: typeof DBIChatInputOptions;\r\n Event(cfg: TDBIEventOmitted): DBIEvent;\r\n Locale(cfg: TDBILocaleConstructor): DBILocale;\r\n Button(cfg: TDBIButtonOmitted): DBIButton;\r\n SelectMenu(cfg: TDBISelectMenuOmitted): DBISelectMenu;\r\n MessageContextMenu(cfg: TDBIMessageContextMenuOmitted): DBIMessageContextMenu;\r\n UserContextMenu(cfg: TDBIUserContextMenuOmitted): DBIUserContextMenu;\r\n InteractionLocale(cfg: TDBIInteractionLocaleOmitted): DBIInteractionLocale;\r\n Modal(cfg: TDBIModalOmitted): DBIModal;\r\n onUnload(cb: () => Promise<any> | any): any;\r\n}\r\n\r\nexport type TDBIInteractions = DBIChatInput | DBIButton | DBISelectMenu | DBIMessageContextMenu | DBIUserContextMenu | DBIModal;\r\n\r\nexport class DBI<TOtherData = Record<string, any>> {\r\n namespace: string;\r\n config: DBIConfig;\r\n client: Discord.Client<true>;\r\n data: {\r\n interactions: Discord.Collection<string, TDBIInteractions>;\r\n events: Discord.Collection<string, DBIEvent>;\r\n plugins: Discord.Collection<string, any>;\r\n locales: Discord.Collection<string, DBILocale>;\r\n interactionLocales: Discord.Collection<string, DBIInteractionLocale>;\r\n other: TOtherData;\r\n eventMap: Record<string, 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 };\r\n events: Events;\r\n cluster?: Sharding.Client;\r\n private _loaded: boolean;\r\n private _hooked: boolean;\r\n constructor(namespace: string, config: DBIConfigConstructor) {\r\n this.namespace = namespace;\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 // @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 plugins: new Discord.Collection(),\r\n locales: new Discord.Collection(),\r\n interactionLocales: new Discord.Collection(),\r\n other: {} as TOtherData,\r\n eventMap,\r\n unloaders: new Set(),\r\n registers: new Set(),\r\n registerUnloaders: new Set(),\r\n refs: new Map()\r\n }\r\n\r\n this.events = new Events(this as any);\r\n this.client = new Discord.Client({\r\n ...(config.discord?.options || {}) as any,\r\n ...(config.sharding == \"hybrid\" ? {\r\n shards: (Sharding as any).data.SHARD_LIST,\r\n shardCount: (Sharding as any).data.TOTAL_SHARDS\r\n } : {})\r\n });\r\n this.cluster = config.sharding == \"hybrid\" ? new Sharding.Client(this.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 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 }\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.plugins.clear();\r\n }\r\n\r\n private async _registerAll() {\r\n const self = this;\r\n\r\n for await (const cb of this.data.registers) {\r\n let ChatInput = function(cfg: DBIChatInput) {\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) {\r\n let dbiEvent = new DBIEvent(self, 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) {\r\n let dbiButton = new DBIButton(self, 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);\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 SelectMenu = function(cfg: TDBISelectMenuOmitted) {\r\n let dbiSelectMenu = new DBISelectMenu(self, cfg);\r\n if (self.config.strict && self.data.interactions.has(dbiSelectMenu.name)) throw new Error(`DBISelectMenu \"${dbiSelectMenu.name}\" already loaded as \"${self.data.interactions.get(dbiSelectMenu.name)?.type}\"!`);\r\n self.data.interactions.set(dbiSelectMenu.name, dbiSelectMenu);\r\n return dbiSelectMenu;\r\n };\r\n SelectMenu = Object.assign(SelectMenu, class { constructor(...args: any[]) { return SelectMenu.apply(this, args as any); } });\r\n\r\n let MessageContextMenu = function(cfg: TDBIMessageContextMenuOmitted) {\r\n let dbiMessageContextMenu = new DBIMessageContextMenu(self, 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);\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) {\r\n let dbiUserContextMenu = new DBIUserContextMenu(self, 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);\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) {\r\n let dbiModal = new DBIModal(self, 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);\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) {\r\n let dbiLocale = new DBILocale(self, cfg);\r\n if (self.config.strict && self.data.locales.has(dbiLocale.name)) throw new Error(`DBILocale \"${dbiLocale.name}\" already loaded!`);\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 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: DBIChatInputOptions,\r\n Locale,\r\n Button,\r\n SelectMenu,\r\n MessageContextMenu,\r\n UserContextMenu,\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 }\r\n\r\n /**\r\n * this.data.interactions.get(name)\r\n */\r\n interaction(name: string): TDBIInteractions {\r\n return this.data.interactions.get(name);\r\n }\r\n\r\n /**\r\n * this.data.events.get(name)\r\n */\r\n event(name: string): DBIEvent {\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(name: string): DBILocale {\r\n return this.data.locales.get(name);\r\n }\r\n\r\n /**\r\n * this.data.plugins.get(name)\r\n */\r\n plugin(name: string): any {\r\n return this.data.plugins.get(name);\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 this.client.login(this.config.sharding == \"default\" ? undefined : this.config.discord.token);\r\n }\r\n\r\n async register(cb: (api: DBIRegisterAPI) => 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.config.discord.token,\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.config.discord.token,\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}"]}
|
package/dist/types/Button.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ export declare class DBIButton extends DBIBaseInteraction {
|
|
|
10
10
|
constructor(dbi: DBI, args: TDBIButtonOmitted);
|
|
11
11
|
options?: Omit<Discord.ButtonComponentData, "customId" | "type"> | ((data: (number | string | any)[]) => Omit<Discord.ButtonComponentData, "customId" | "type">);
|
|
12
12
|
onExecute(ctx: IDBIButtonExecuteCtx): Promise<any> | any;
|
|
13
|
+
referenceTTL?: number;
|
|
13
14
|
toJSON(...customData: (string | number | object)[]): Discord.ButtonComponentData;
|
|
14
15
|
}
|
|
15
16
|
//# sourceMappingURL=Button.d.ts.map
|
|
@@ -1 +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,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAG3F,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAC9D,WAAW,EAAE,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,EAAE,kBAAkB,EAAE,CAAC;CAC5B;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;
|
|
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,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAG3F,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAC9D,WAAW,EAAE,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,EAAE,kBAAkB,EAAE,CAAC;CAC5B;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;IAQrC,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC;IAEhK,SAAS,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG;IACzD,YAAY,CAAC,EAAE,MAAM,CAAA;IAC7B,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,mBAAmB;CAOjF"}
|
package/dist/types/Button.js
CHANGED
|
@@ -11,13 +11,14 @@ class DBIButton extends Interaction_1.DBIBaseInteraction {
|
|
|
11
11
|
...args,
|
|
12
12
|
type: "Button",
|
|
13
13
|
});
|
|
14
|
+
this.referenceTTL = args.referenceTTL;
|
|
14
15
|
}
|
|
15
16
|
onExecute(ctx) { }
|
|
16
17
|
;
|
|
17
18
|
toJSON(...customData) {
|
|
18
19
|
return {
|
|
19
20
|
...(typeof this.options == "function" ? this.options(customData) : this.options),
|
|
20
|
-
customId: (0, customId_1.customIdBuilder)(this.dbi, this.name, customData),
|
|
21
|
+
customId: (0, customId_1.customIdBuilder)(this.dbi, this.name, customData, this.referenceTTL),
|
|
21
22
|
type: discord_js_1.default.ComponentType.Button
|
|
22
23
|
};
|
|
23
24
|
}
|
package/dist/types/Button.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.js","sourceRoot":"","sources":["../../src/types/Button.ts"],"names":[],"mappings":";;;;AAAA,oEAAiC;AAEjC,+CAA2F;AAC3F,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;
|
|
1
|
+
{"version":3,"file":"Button.js","sourceRoot":"","sources":["../../src/types/Button.ts"],"names":[],"mappings":";;;;AAAA,oEAAiC;AAEjC,+CAA2F;AAC3F,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;QACH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;IACxC,CAAC;IAIQ,SAAS,CAAC,GAAyB,IAAwB,CAAC;IAAA,CAAC;IAEtE,MAAM,CAAC,GAAG,UAAwC;QAChD,OAAO;YACL,GAAG,CAAC,OAAO,IAAI,CAAC,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;YAChF,QAAQ,EAAE,IAAA,0BAAe,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC;YAC7E,IAAI,EAAE,oBAAO,CAAC,aAAa,CAAC,MAAM;SAC5B,CAAC;IACX,CAAC;IAAA,CAAC;CACH;AApBD,8BAoBC","sourcesContent":["import Discord from \"discord.js\";\r\nimport { DBI } from \"../DBI\";\r\nimport { DBIBaseInteraction, IDBIBaseExecuteCtx, TDBIReferencedData } from \"./Interaction\";\r\nimport { customIdBuilder } from \"../utils/customId\";\r\n\r\nexport interface IDBIButtonExecuteCtx extends IDBIBaseExecuteCtx {\r\n interaction: Discord.ButtonInteraction<\"cached\">;\r\n data: TDBIReferencedData[];\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 this.referenceTTL = args.referenceTTL;\r\n }\r\n\r\n declare options?: Omit<Discord.ButtonComponentData, \"customId\" | \"type\"> | ((data: (number | string | any)[]) => Omit<Discord.ButtonComponentData, \"customId\" | \"type\">);\r\n\r\n override onExecute(ctx: IDBIButtonExecuteCtx): Promise<any> | any { };\r\n declare referenceTTL?: number\r\n toJSON(...customData: (string | number | object)[]): Discord.ButtonComponentData {\r\n return {\r\n ...(typeof this.options == \"function\" ? this.options(customData) : this.options),\r\n customId: customIdBuilder(this.dbi, this.name, customData, this.referenceTTL),\r\n type: Discord.ComponentType.Button\r\n } as any;\r\n };\r\n}"]}
|
package/dist/types/Modal.d.ts
CHANGED
|
@@ -7,9 +7,10 @@ export interface IDBIModalExecuteCtx extends IDBIBaseExecuteCtx {
|
|
|
7
7
|
}
|
|
8
8
|
export declare type TDBIModalOmitted = Omit<DBIModal, "type" | "description" | "dbi" | "toJSON">;
|
|
9
9
|
export declare class DBIModal extends DBIBaseInteraction {
|
|
10
|
-
constructor(dbi: DBI,
|
|
10
|
+
constructor(dbi: DBI, args: TDBIModalOmitted);
|
|
11
11
|
options: Omit<Discord.ModalComponentData, "customId"> | ((data: (number | string | any)[]) => Omit<Discord.ModalComponentData, "customId">);
|
|
12
12
|
onExecute(ctx: IDBIModalExecuteCtx): Promise<any> | any;
|
|
13
|
+
referenceTTL?: number;
|
|
13
14
|
toJSON(...customData: (string | number | object)[]): Discord.ModalComponentData;
|
|
14
15
|
}
|
|
15
16
|
//# sourceMappingURL=Modal.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../src/types/Modal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC3F,OAAO,OAAO,MAAM,YAAY,CAAC;AAGjC,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,WAAW,EAAE,OAAO,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAEtD,IAAI,EAAE,kBAAkB,EAAE,CAAC;CAC5B;AAED,oBAAY,gBAAgB,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,KAAK,GAAG,QAAQ,CAAC,CAAC;AAEzF,qBAAa,QAAS,SAAQ,kBAAkB;gBAClC,GAAG,EAAE,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../src/types/Modal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC3F,OAAO,OAAO,MAAM,YAAY,CAAC;AAGjC,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,WAAW,EAAE,OAAO,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAEtD,IAAI,EAAE,kBAAkB,EAAE,CAAC;CAC5B;AAED,oBAAY,gBAAgB,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,KAAK,GAAG,QAAQ,CAAC,CAAC;AAEzF,qBAAa,QAAS,SAAQ,kBAAkB;gBAClC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,gBAAgB;IAQpC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC,CAAC;IAE3I,SAAS,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG;IAExD,YAAY,CAAC,EAAE,MAAM,CAAC;IAE9B,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,kBAAkB;CAMhF"}
|
package/dist/types/Modal.js
CHANGED
|
@@ -4,18 +4,19 @@ exports.DBIModal = void 0;
|
|
|
4
4
|
const Interaction_1 = require("./Interaction");
|
|
5
5
|
const customId_1 = require("../utils/customId");
|
|
6
6
|
class DBIModal extends Interaction_1.DBIBaseInteraction {
|
|
7
|
-
constructor(dbi,
|
|
7
|
+
constructor(dbi, args) {
|
|
8
8
|
super(dbi, {
|
|
9
|
-
...
|
|
9
|
+
...args,
|
|
10
10
|
type: "Modal"
|
|
11
11
|
});
|
|
12
|
+
this.referenceTTL = args.referenceTTL;
|
|
12
13
|
}
|
|
13
14
|
onExecute(ctx) { }
|
|
14
15
|
;
|
|
15
16
|
toJSON(...customData) {
|
|
16
17
|
return {
|
|
17
18
|
...(typeof this.options == "function" ? this.options(customData) : this.options),
|
|
18
|
-
customId: (0, customId_1.customIdBuilder)(this.dbi, this.name, customData)
|
|
19
|
+
customId: (0, customId_1.customIdBuilder)(this.dbi, this.name, customData, this.referenceTTL)
|
|
19
20
|
};
|
|
20
21
|
}
|
|
21
22
|
;
|
package/dist/types/Modal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Modal.js","sourceRoot":"","sources":["../../src/types/Modal.ts"],"names":[],"mappings":";;;AACA,+CAA2F;AAE3F,gDAAoD;AAUpD,MAAa,QAAS,SAAQ,gCAAkB;IAC9C,YAAY,GAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"Modal.js","sourceRoot":"","sources":["../../src/types/Modal.ts"],"names":[],"mappings":";;;AACA,+CAA2F;AAE3F,gDAAoD;AAUpD,MAAa,QAAS,SAAQ,gCAAkB;IAC9C,YAAY,GAAQ,EAAE,IAAsB;QAC1C,KAAK,CAAC,GAAG,EAAE;YACT,GAAI,IAAY;YAChB,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;IACxC,CAAC;IAIQ,SAAS,CAAC,GAAwB,IAAwB,CAAC;IAAA,CAAC;IAIrE,MAAM,CAAC,GAAG,UAAwC;QAChD,OAAO;YACL,GAAG,CAAC,OAAO,IAAI,CAAC,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;YAChF,QAAQ,EAAE,IAAA,0BAAe,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC;SACvE,CAAC;IACX,CAAC;IAAA,CAAC;CACH;AArBD,4BAqBC","sourcesContent":["import { DBI } from \"../DBI\";\r\nimport { DBIBaseInteraction, IDBIBaseExecuteCtx, TDBIReferencedData } from \"./Interaction\";\r\nimport Discord from \"discord.js\";\r\nimport { customIdBuilder } from \"../utils/customId\";\r\n\r\nexport interface IDBIModalExecuteCtx extends IDBIBaseExecuteCtx {\r\n interaction: Discord.ModalSubmitInteraction<\"cached\">;\r\n\r\n data: TDBIReferencedData[];\r\n}\r\n\r\nexport type TDBIModalOmitted = Omit<DBIModal, \"type\" | \"description\" | \"dbi\" | \"toJSON\">;\r\n\r\nexport class DBIModal extends DBIBaseInteraction {\r\n constructor(dbi: DBI, args: TDBIModalOmitted) {\r\n super(dbi, {\r\n ...(args as any),\r\n type: \"Modal\"\r\n });\r\n this.referenceTTL = args.referenceTTL;\r\n }\r\n\r\n declare options: Omit<Discord.ModalComponentData, \"customId\"> | ((data: (number | string | any)[]) => Omit<Discord.ModalComponentData, \"customId\">);\r\n\r\n override onExecute(ctx: IDBIModalExecuteCtx): Promise<any> | any { };\r\n\r\n declare referenceTTL?: number;\r\n\r\n toJSON(...customData: (string | number | object)[]): Discord.ModalComponentData {\r\n return {\r\n ...(typeof this.options == \"function\" ? this.options(customData) : this.options),\r\n customId: customIdBuilder(this.dbi, this.name, customData, this.referenceTTL)\r\n } as any;\r\n };\r\n}"]}
|
|
@@ -5,11 +5,12 @@ export interface IDBISelectMenuExecuteCtx extends IDBIBaseExecuteCtx {
|
|
|
5
5
|
interaction: Discord.ButtonInteraction<"cached">;
|
|
6
6
|
data: TDBIReferencedData[];
|
|
7
7
|
}
|
|
8
|
-
export declare type TDBISelectMenuOmitted = Omit<
|
|
8
|
+
export declare type TDBISelectMenuOmitted = Omit<DBISelectMenu, "type" | "description" | "dbi" | "toJSON">;
|
|
9
9
|
export declare class DBISelectMenu extends DBIBaseInteraction {
|
|
10
10
|
constructor(dbi: DBI, args: TDBISelectMenuOmitted);
|
|
11
11
|
options: Omit<Discord.SelectMenuComponentData, "customId" | "type"> | ((data: (number | string | any)[]) => Omit<Discord.SelectMenuComponentData, "customId" | "type">);
|
|
12
12
|
onExecute(ctx: IDBISelectMenuExecuteCtx): Promise<any> | any;
|
|
13
|
+
referenceTTL?: number;
|
|
13
14
|
toJSON(...customData: (string | number | object)[]): Discord.SelectMenuComponentData;
|
|
14
15
|
}
|
|
15
16
|
//# sourceMappingURL=SelectMenu.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectMenu.d.ts","sourceRoot":"","sources":["../../src/types/SelectMenu.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAG3F,MAAM,WAAW,wBAAyB,SAAQ,kBAAkB;IAClE,WAAW,EAAE,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,EAAE,kBAAkB,EAAE,CAAC;CAC5B;AAED,oBAAY,qBAAqB,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"SelectMenu.d.ts","sourceRoot":"","sources":["../../src/types/SelectMenu.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAG3F,MAAM,WAAW,wBAAyB,SAAQ,kBAAkB;IAClE,WAAW,EAAE,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,EAAE,kBAAkB,EAAE,CAAC;CAC5B;AAED,oBAAY,qBAAqB,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,aAAa,GAAG,KAAK,GAAG,QAAQ,CAAC,CAAC;AAEnG,qBAAa,aAAc,SAAQ,kBAAkB;gBACvC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,qBAAqB;IAQzC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC;IAEvK,SAAS,CAAC,GAAG,EAAE,wBAAwB,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG;IAE7D,YAAY,CAAC,EAAE,MAAM,CAAC;IAE9B,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,uBAAuB;CAOrF"}
|
package/dist/types/SelectMenu.js
CHANGED
|
@@ -11,13 +11,14 @@ class DBISelectMenu extends Interaction_1.DBIBaseInteraction {
|
|
|
11
11
|
...args,
|
|
12
12
|
type: "SelectMenu",
|
|
13
13
|
});
|
|
14
|
+
this.referenceTTL = args.referenceTTL;
|
|
14
15
|
}
|
|
15
16
|
onExecute(ctx) { }
|
|
16
17
|
;
|
|
17
18
|
toJSON(...customData) {
|
|
18
19
|
return {
|
|
19
20
|
...(typeof this.options == "function" ? this.options(customData) : this.options),
|
|
20
|
-
customId: (0, customId_1.customIdBuilder)(this.dbi, this.name, customData),
|
|
21
|
+
customId: (0, customId_1.customIdBuilder)(this.dbi, this.name, customData, this.referenceTTL),
|
|
21
22
|
type: discord_js_1.default.ComponentType.SelectMenu
|
|
22
23
|
};
|
|
23
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectMenu.js","sourceRoot":"","sources":["../../src/types/SelectMenu.ts"],"names":[],"mappings":";;;;AAAA,oEAAiC;AAEjC,+CAA2F;AAC3F,gDAAoD;AASpD,MAAa,aAAc,SAAQ,gCAAkB;IACnD,YAAY,GAAQ,EAAE,IAA2B;QAC/C,KAAK,CAAC,GAAG,EAAE;YACT,GAAI,IAAY;YAChB,IAAI,EAAE,YAAY;SACnB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"SelectMenu.js","sourceRoot":"","sources":["../../src/types/SelectMenu.ts"],"names":[],"mappings":";;;;AAAA,oEAAiC;AAEjC,+CAA2F;AAC3F,gDAAoD;AASpD,MAAa,aAAc,SAAQ,gCAAkB;IACnD,YAAY,GAAQ,EAAE,IAA2B;QAC/C,KAAK,CAAC,GAAG,EAAE;YACT,GAAI,IAAY;YAChB,IAAI,EAAE,YAAY;SACnB,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;IACxC,CAAC;IAIQ,SAAS,CAAC,GAA6B,IAAwB,CAAC;IAAA,CAAC;IAI1E,MAAM,CAAC,GAAG,UAAwC;QAChD,OAAO;YACL,GAAG,CAAC,OAAO,IAAI,CAAC,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;YAChF,QAAQ,EAAE,IAAA,0BAAe,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC;YAC7E,IAAI,EAAE,oBAAO,CAAC,aAAa,CAAC,UAAU;SAChC,CAAA;IACV,CAAC;IAAA,CAAC;CACH;AAtBD,sCAsBC","sourcesContent":["import Discord from \"discord.js\";\r\nimport { DBI } from \"../DBI\";\r\nimport { DBIBaseInteraction, IDBIBaseExecuteCtx, TDBIReferencedData } from \"./Interaction\";\r\nimport { customIdBuilder } from \"../utils/customId\";\r\n\r\nexport interface IDBISelectMenuExecuteCtx extends IDBIBaseExecuteCtx {\r\n interaction: Discord.ButtonInteraction<\"cached\">;\r\n data: TDBIReferencedData[];\r\n}\r\n\r\nexport type TDBISelectMenuOmitted = Omit<DBISelectMenu, \"type\" | \"description\" | \"dbi\" | \"toJSON\">;\r\n\r\nexport class DBISelectMenu extends DBIBaseInteraction {\r\n constructor(dbi: DBI, args: TDBISelectMenuOmitted) {\r\n super(dbi, {\r\n ...(args as any),\r\n type: \"SelectMenu\",\r\n });\r\n this.referenceTTL = args.referenceTTL;\r\n }\r\n\r\n declare options: Omit<Discord.SelectMenuComponentData, \"customId\" | \"type\"> | ((data: (number | string | any)[]) => Omit<Discord.SelectMenuComponentData, \"customId\" | \"type\">);\r\n\r\n override onExecute(ctx: IDBISelectMenuExecuteCtx): Promise<any> | any { };\r\n\r\n declare referenceTTL?: number;\r\n\r\n toJSON(...customData: (string | number | object)[]): Discord.SelectMenuComponentData {\r\n return {\r\n ...(typeof this.options == \"function\" ? this.options(customData) : this.options),\r\n customId: customIdBuilder(this.dbi, this.name, customData, this.referenceTTL),\r\n type: Discord.ComponentType.SelectMenu\r\n } as any\r\n };\r\n}"]}
|
package/dist/utils/customId.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DBI } from "../DBI";
|
|
2
|
-
export declare function customIdBuilder(dbi: DBI, name: string, customData: any[]): string;
|
|
2
|
+
export declare function customIdBuilder(dbi: DBI, name: string, customData: any[], ttl?: number): string;
|
|
3
3
|
export declare function parseCustomId(dbi: DBI, customId: string): {
|
|
4
4
|
name: string;
|
|
5
5
|
data: any[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"customId.d.ts","sourceRoot":"","sources":["../../src/utils/customId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAG7B,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"customId.d.ts","sourceRoot":"","sources":["../../src/utils/customId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAG7B,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAC,MAAM,GAAG,MAAM,CAkB9F;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,GAAG,EAAE,CAAA;CAAC,CAYrF"}
|
package/dist/utils/customId.js
CHANGED
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.parseCustomId = exports.customIdBuilder = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const stuffs = tslib_1.__importStar(require("stuffs"));
|
|
6
|
-
function customIdBuilder(dbi, name, customData) {
|
|
6
|
+
function customIdBuilder(dbi, name, customData, ttl) {
|
|
7
7
|
let customId = [
|
|
8
8
|
name,
|
|
9
9
|
...customData.map(value => {
|
|
@@ -16,10 +16,12 @@ function customIdBuilder(dbi, name, customData) {
|
|
|
16
16
|
$ref: id,
|
|
17
17
|
$unRef() { return dbi.data.refs.delete(id); },
|
|
18
18
|
});
|
|
19
|
-
dbi.data.refs.set(id, { at: Date.now(), value });
|
|
19
|
+
dbi.data.refs.set(id, { at: Date.now(), value, ttl });
|
|
20
20
|
return `¤${id}`;
|
|
21
21
|
})
|
|
22
22
|
].join("—");
|
|
23
|
+
if (!dbi.config.strict)
|
|
24
|
+
customId = customId.slice(0, 100);
|
|
23
25
|
if (customId.length > 100)
|
|
24
26
|
throw new Error("Custom id cannot be longer than 100 characters.");
|
|
25
27
|
return customId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"customId.js","sourceRoot":"","sources":["../../src/utils/customId.ts"],"names":[],"mappings":";;;;AACA,uDAAiC;AAEjC,SAAgB,eAAe,CAAC,GAAQ,EAAE,IAAY,EAAE,UAAiB;
|
|
1
|
+
{"version":3,"file":"customId.js","sourceRoot":"","sources":["../../src/utils/customId.ts"],"names":[],"mappings":";;;;AACA,uDAAiC;AAEjC,SAAgB,eAAe,CAAC,GAAQ,EAAE,IAAY,EAAE,UAAiB,EAAE,GAAW;IACpF,IAAI,QAAQ,GAAG;QACb,IAAI;QACJ,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACxB,IAAI,OAAO,KAAK,IAAI,QAAQ;gBAAE,OAAO,KAAK,CAAC;YAC3C,IAAI,OAAO,KAAK,IAAI,QAAQ;gBAAE,OAAO,IAAI,KAAK,EAAE,CAAC;YACjD,IAAI,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;gBACnB,IAAI,EAAE,EAAE;gBACR,MAAM,KAAK,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aAC9C,CAAC,CAAA;YACF,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YACtD,OAAO,IAAI,EAAE,EAAE,CAAC;QAClB,CAAC,CAAC;KACH,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM;QAAE,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1D,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;IAC7F,OAAO,QAAQ,CAAC;AAClB,CAAC;AAlBD,0CAkBC;AAED,SAAgB,aAAa,CAAC,GAAQ,EAAE,QAAgB;IACtD,IAAI,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;IAC5B,IAAI,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QAC9B,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;QAC3E,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IACH,OAAO;QACL,IAAI;QACJ,IAAI;KACL,CAAA;AACH,CAAC;AAZD,sCAYC","sourcesContent":["import { DBI } from \"../DBI\";\r\nimport * as stuffs from \"stuffs\";\r\n\r\nexport function customIdBuilder(dbi: DBI, name: string, customData: any[], ttl?:number): string {\r\n let customId = [\r\n name,\r\n ...customData.map(value => {\r\n if (typeof value == \"string\") return value;\r\n if (typeof value == \"number\") return `π${value}`;\r\n let id = stuffs.randomString(8);\r\n Object.assign(value, {\r\n $ref: id,\r\n $unRef() { return dbi.data.refs.delete(id); },\r\n })\r\n dbi.data.refs.set(id, { at: Date.now(), value, ttl });\r\n return `¤${id}`;\r\n })\r\n ].join(\"—\");\r\n if (!dbi.config.strict) customId = customId.slice(0, 100);\r\n if (customId.length > 100) throw new Error(\"Custom id cannot be longer than 100 characters.\")\r\n return customId;\r\n}\r\n\r\nexport function parseCustomId(dbi: DBI, customId: string): {name: string, data: any[]} {\r\n let splitted = customId.split(\"—\");\r\n let name = splitted.shift();\r\n let data = splitted.map(value => {\r\n if (value.startsWith(\"π\")) return Number(value.slice(1));\r\n if (value.startsWith(\"¤\")) return dbi.data.refs.get(value.slice(1))?.value;\r\n return value;\r\n });\r\n return {\r\n name,\r\n data\r\n }\r\n}"]}
|
package/package.json
CHANGED
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
{
|
|
2
|
-
"dependencies": {
|
|
3
|
-
"@discordjs/rest": "^1.0.1",
|
|
4
|
-
"discord-api-types": "^0.37.0",
|
|
5
|
-
"discord-hybrid-sharding": "^1.7.4",
|
|
6
|
-
"discord.js": "^14.3.0",
|
|
7
|
-
"lodash": "^4.17.21",
|
|
8
|
-
"snakecase-keys": "^5.4.2",
|
|
9
|
-
"stuffs": "^0.1.17"
|
|
10
|
-
},
|
|
11
|
-
"name": "@mostfeatured/dbi",
|
|
12
|
-
"version": "0.0.
|
|
13
|
-
"main": "dist/index.js",
|
|
14
|
-
"type": "commonjs",
|
|
15
|
-
"private": false,
|
|
16
|
-
"scripts": {
|
|
17
|
-
"test": "npx tsc && node dist/test",
|
|
18
|
-
"build": "npx tsc",
|
|
19
|
-
"prepublish": "npx tsc"
|
|
20
|
-
},
|
|
21
|
-
"repository": {
|
|
22
|
-
"type": "git",
|
|
23
|
-
"url": "git+https://github.com/MostFeatured/DiscordBotInfrastructure.git"
|
|
24
|
-
},
|
|
25
|
-
"author": "Kıraç Armağan Önal",
|
|
26
|
-
"license": "GPL-3.0-or-later",
|
|
27
|
-
"bugs": {
|
|
28
|
-
"url": "https://github.com/MostFeatured/DiscordBotInfrastructure/issues"
|
|
29
|
-
},
|
|
30
|
-
"homepage": "https://github.com/MostFeatured/DiscordBotInfrastructure#readme",
|
|
31
|
-
"description": "",
|
|
32
|
-
"devDependencies": {
|
|
33
|
-
"@types/lodash": "^4.14.182",
|
|
34
|
-
"typescript": "^4.7.4"
|
|
35
|
-
},
|
|
36
|
-
"publishConfig": {
|
|
37
|
-
"access": "public",
|
|
38
|
-
"registry": "https://registry.npmjs.org/"
|
|
39
|
-
}
|
|
40
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"dependencies": {
|
|
3
|
+
"@discordjs/rest": "^1.0.1",
|
|
4
|
+
"discord-api-types": "^0.37.0",
|
|
5
|
+
"discord-hybrid-sharding": "^1.7.4",
|
|
6
|
+
"discord.js": "^14.3.0",
|
|
7
|
+
"lodash": "^4.17.21",
|
|
8
|
+
"snakecase-keys": "^5.4.2",
|
|
9
|
+
"stuffs": "^0.1.17"
|
|
10
|
+
},
|
|
11
|
+
"name": "@mostfeatured/dbi",
|
|
12
|
+
"version": "0.0.32",
|
|
13
|
+
"main": "dist/index.js",
|
|
14
|
+
"type": "commonjs",
|
|
15
|
+
"private": false,
|
|
16
|
+
"scripts": {
|
|
17
|
+
"test": "npx tsc && node dist/test",
|
|
18
|
+
"build": "npx tsc",
|
|
19
|
+
"prepublish": "npx tsc"
|
|
20
|
+
},
|
|
21
|
+
"repository": {
|
|
22
|
+
"type": "git",
|
|
23
|
+
"url": "git+https://github.com/MostFeatured/DiscordBotInfrastructure.git"
|
|
24
|
+
},
|
|
25
|
+
"author": "Kıraç Armağan Önal",
|
|
26
|
+
"license": "GPL-3.0-or-later",
|
|
27
|
+
"bugs": {
|
|
28
|
+
"url": "https://github.com/MostFeatured/DiscordBotInfrastructure/issues"
|
|
29
|
+
},
|
|
30
|
+
"homepage": "https://github.com/MostFeatured/DiscordBotInfrastructure#readme",
|
|
31
|
+
"description": "",
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@types/lodash": "^4.14.182",
|
|
34
|
+
"typescript": "^4.7.4"
|
|
35
|
+
},
|
|
36
|
+
"publishConfig": {
|
|
37
|
+
"access": "public",
|
|
38
|
+
"registry": "https://registry.npmjs.org/"
|
|
39
|
+
}
|
|
40
|
+
}
|
package/readme.md
CHANGED
|
@@ -1,34 +1,282 @@
|
|
|
1
|
-
# DiscordBotInfrastructure
|
|
1
|
+
# DiscordBotInfrastructure - [Turkish]
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
İnternet üzerinde bulabileceğiniz en gelişmiş, güncel ve kullanımı basit Discord bot altyapısı.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
Unutmadan söyleyeyim bu altyapı diğer alışık olduğunuz altyapılar gibi kendi halinde bir proje değil, bir NPM modülüdür. Bu yüzden kullanmaya başlamak için bir klasör açıyoruz ve içerisine `npm install @mostfeatured/dbi` komutunu kullanarak altyapıyı indiriyoruz.
|
|
5
|
+
# Kullanım Senaryosu
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
MostFeatured/DiscordBotInfrastructure projesi diğer alışık olduğunuz altyapılar gibi kendi halinde bir proje değil, bir NPM modülüdür. Bu bağlamda kullanmaya başlamadan önce bir klasör açmanız ve içerisine `npm install @mostfeatured/dbi discord.js` komutunu girerek altyapıyı ve discord.js'i indirmeniz gerekmektedir.
|
|
9
8
|
|
|
10
|
-
|
|
9
|
+
# Başlarken
|
|
11
10
|
|
|
12
|
-
İlk olarak `
|
|
13
|
-

|
|
11
|
+
İlk olarak `3 dosya` ve `1 klasöre` ihitiyacımız olacak. Bu yapı tamamen sizin çalışma düzeninize uygun olarak konfigüre edilebilmektedir. Lakin bizim önerdiğimiz senaryo aşağıdaki gibidir.
|
|
14
12
|
|
|
15
|
-
|
|
13
|
+
Açılması gereken dosyalar ve klasörler; `dbi.js`, `login.js`, `publish.js` dosyaları ve `src` klasörü.
|
|
16
14
|
|
|
15
|
+
1. adım olarak `dbi.js` adındaki dosyamızı açıyoruz ve içerisine altyapının temellerini atıyoruz.
|
|
16
|
+
```js
|
|
17
|
+
const { createDBI } = require("@mostfeatured/dbi");
|
|
17
18
|
|
|
19
|
+
let dbi = createDBI("xd", {
|
|
20
|
+
strict: true,
|
|
21
|
+
discord: {
|
|
22
|
+
token: "<yourTokenHere>",
|
|
23
|
+
options: {
|
|
24
|
+
intents: [
|
|
25
|
+
"Guilds"
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
defaults: {
|
|
30
|
+
locale: "en",
|
|
31
|
+
defaultMemberPermissions: ["SendMessages"],
|
|
32
|
+
directMessages: false
|
|
33
|
+
},
|
|
34
|
+
references: {
|
|
35
|
+
autoClear: {
|
|
36
|
+
ttl: 60 * 1000 * 60,
|
|
37
|
+
check: 60 * 1000
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
});
|
|
18
41
|
|
|
19
|
-
|
|
20
|
-
|
|
42
|
+
module.exports = dbi;
|
|
43
|
+
```
|
|
21
44
|
|
|
22
|
-
|
|
23
|
-
Ana `dbi.js` dosyamdan altyapıma ulaşıyorum. Ve `async` bir ortam oluşturup ilk önce tüm proje dosylarını altyapıya tanımlıyorum. Tanımlamanın ardından tanımladığım tüm özellikleri altyapıya `load()` fonksiyonunu ile yüklüyorum. Hemen ardından `login()` fonksiyonu ile Discord'a giriş sağlıyorum.
|
|
45
|
+
`createDBI()` fonksiyonu ile altyapıyı başlatıyoruz. Fonksiyonun ilk parametresi botunuzun `kodAdı`, ikinci parametresi ise botunuzun konfigürasyonudur.
|
|
24
46
|
|
|
47
|
+
2. adım olarak `login.js` dosyamızı açıyoruz ve içerisine botu açmak için kullanacağımız kod gurubunu yazıyoruz.
|
|
48
|
+
```js
|
|
49
|
+
const { recursiveImport } = require("@mostfeatured/dbi");
|
|
50
|
+
const dbi = require("./dbi");
|
|
25
51
|
|
|
26
|
-
|
|
27
|
-
|
|
52
|
+
(async () => {
|
|
53
|
+
await recursiveImport("./src");
|
|
28
54
|
|
|
29
|
-
|
|
55
|
+
await dbi.load();
|
|
56
|
+
await dbi.login();
|
|
30
57
|
|
|
58
|
+
await dbi.client.user.setActivity({
|
|
59
|
+
name: "MostFeatured ❤️ TheArmagan"
|
|
60
|
+
});
|
|
31
61
|
|
|
32
|
-
|
|
62
|
+
console.log(`Logged in! ${dbi.client.user.tag} (${dbi.client.user.id})`);
|
|
63
|
+
})();
|
|
64
|
+
```
|
|
33
65
|
|
|
66
|
+
İçeriye `recursiveImport()` fonksiyonunu alıyoruz. Bu fonksiyon ile sonsuz bir şekilde `x` klasöründeki bütün dosyaları `import`/`require` edebiliyoruz. Bu sayede altyapı bu dosyalardan haberdar oluyor.
|
|
67
|
+
Ana `dbi.js` dosyamızdan altyapımıza ulaşıyoruz ve `async` bir ortam oluşturup ilk önce tüm proje dosylarını altyapıya tanımlıyoruz. Tanımlamanın ardından tanımladığımız tüm özellikleri altyapıya `load()` fonksiyonunu ile yüklüyoruz. Hemen ardından `login()` fonksiyonu ile Discord'a giriş sağlıyoruz.
|
|
34
68
|
|
|
69
|
+
|
|
70
|
+
3. adım olarak `publish.js` dosyamızı açıyoruz ve ikinci aşamada yaptığımız tüm işlemleri tekrardan uyguluyoruz.
|
|
71
|
+
```js
|
|
72
|
+
const { recursiveImport } = require("@mostfeatured/dbi");
|
|
73
|
+
const dbi = require("./dbi");
|
|
74
|
+
|
|
75
|
+
(async () => {
|
|
76
|
+
await recursiveImport("./src");
|
|
77
|
+
|
|
78
|
+
await dbi.load();
|
|
79
|
+
await dbi.publish("Guild", "<yourGuildId>");
|
|
80
|
+
// await dbi.publish("Global");
|
|
81
|
+
await dbi.unload();
|
|
82
|
+
|
|
83
|
+
console.log("Published!");
|
|
84
|
+
})();
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Ancak `login()` fonksiyonunu çağırmak yerine, `publish()` fonksiyonunu çağrıyoruz ve bu fonksiyon ile botumuzun komutlarını istediğimiz yere tanıtıyoruz.
|
|
88
|
+
|
|
89
|
+
# Harika!
|
|
90
|
+
|
|
91
|
+
Artık altyapıyı kullanabilmek için gerekli olan bütün dosyalara sahibiz. (Bilgilendirme: Detaylı bir şekilde anlattığımız bu adımlar size karmaşık ve zor geliyorsa üzgünüz ki bu altyapı size uygun değil.)
|
|
92
|
+
|
|
93
|
+
# Detaylı Kullanım Senaryosu
|
|
94
|
+
|
|
95
|
+
Özel olarak geliştirdiğimiz ve v14'ü eksiksiz bir şekilde destekleyen altyapımız ile Discord'un her türlü özelliğini tam anlamıyla kullanabiliyorsunuz. (`ChatInput`, `Event`, `Locale`, `Button`, `SelectMenu`, `MessageContextMenu`, `UserContextMenu`, `Modal`, `InteractionLocale`)
|
|
96
|
+
|
|
97
|
+
Şimdi sizlere altyapıya özellik tanımlamayı göstermek istiyoruz. Örnek: (ChatInput/Button vb.)
|
|
98
|
+
|
|
99
|
+
İlk olarak ilgili özelliği altyapımıza dahil ediyoruz.
|
|
100
|
+
```js
|
|
101
|
+
const dbi = require("../dbi");
|
|
102
|
+
```
|
|
103
|
+
Ve devamında altyapının üzerindeki `register()` fonksiyonunu çağırıp içerisine bir `callback` fonksiyonu koyuyoruz. Bu `callback` fonksiyonu ilk parametre olarak size altyapı üzerine tanımlayabilceğiniz tüm her şeyi bir obje olarak sunuyor. Bu obje içerisinden istediğiniz özellik fonksiyonunu çağırarak altyapıya tanımlama işlemini gerçekleştirebiliyorsunuz.
|
|
104
|
+
```js
|
|
105
|
+
dbi.register(({ ChatInput, Event })=>{
|
|
106
|
+
ChatInput({ ... });
|
|
107
|
+
Event({ ... });
|
|
108
|
+
})
|
|
109
|
+
```
|
|
110
|
+
Unutmayın ki aynı anda istediğiniz kadar özelliği çağırabilirsiniz!
|
|
111
|
+
|
|
112
|
+
# ChatInput & ChatInputOptions
|
|
113
|
+
|
|
114
|
+
`ChatInput` sizin anlayacağınız şekilde "Slash Komut" olarak tanımlanmaktadır.
|
|
115
|
+
|
|
116
|
+
<sub>`src/chatInput.js` dosyası:</sub>
|
|
117
|
+
|
|
118
|
+
```js
|
|
119
|
+
const dbi = require("../dbi");
|
|
120
|
+
const Discord = require("discord.js");
|
|
121
|
+
|
|
122
|
+
dbi.register(({ ChatInput, ChatInputOptions })=>{
|
|
123
|
+
ChatInput({
|
|
124
|
+
name: "cinsiyet seç",
|
|
125
|
+
description: "Cinsiyet seçmenizi sağlar.",
|
|
126
|
+
onExecute({ interaction, locale }) {
|
|
127
|
+
let gender = interaction.options.get("cinsiyet").value;
|
|
128
|
+
let genderNames = locale.user.data.genders;
|
|
129
|
+
let genderText = locale.user.data.genderText(interaction.user, genderNames[gender]());
|
|
130
|
+
interaction.reply({
|
|
131
|
+
content: genderText,
|
|
132
|
+
components: [
|
|
133
|
+
{
|
|
134
|
+
type: Discord.ComponentType.ActionRow,
|
|
135
|
+
components: [
|
|
136
|
+
dbi.interaction("viewGender").toJSON({ gender }),
|
|
137
|
+
]
|
|
138
|
+
}
|
|
139
|
+
]
|
|
140
|
+
});
|
|
141
|
+
},
|
|
142
|
+
options: [
|
|
143
|
+
ChatInputOptions.stringChoices({
|
|
144
|
+
name: "cinsiyet",
|
|
145
|
+
description: "Seçeceğiniz cinsiyet.",
|
|
146
|
+
required: true,
|
|
147
|
+
choices: [
|
|
148
|
+
{ name: "Erkek", value: "erkek" },
|
|
149
|
+
{ name: "Kadın", value: "kadın" },
|
|
150
|
+
{ name: "Diğer", value: "diğer" },
|
|
151
|
+
]
|
|
152
|
+
})
|
|
153
|
+
],
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
```
|
|
157
|
+
Genel olarak `ChatInput`'un yapısı gözünüze `options` dışında tanıdık gelmiş olabilir. Direkt olarak options içerisine bir şey doldurmaya çalıştığınızda otomatik tamamlama alamayacaksınız. Çünkü options içerisinde ChatInputOptions class'ındaki statik fonksiyonlardan beklemekte. Fonksiyonlar ise şunlara benzemekte; `stringChoices`, `user`, `numberAutocomplete` vb.
|
|
158
|
+
Ayrıca yukarıda göstermiş olduğumuz Locale ve Component sisteminin nasıl kullanıldığıyla ilgili örnek gösterim için aşağıdan daha fazla örneğe ulaşabilirsiniz.
|
|
159
|
+
|
|
160
|
+
# Event
|
|
161
|
+
|
|
162
|
+
<sub>`src/event.js` dosyası:</sub>
|
|
163
|
+
|
|
164
|
+
```js
|
|
165
|
+
const dbi = require("../dbi");
|
|
166
|
+
|
|
167
|
+
dbi.register(({ Event })=>{
|
|
168
|
+
Event({
|
|
169
|
+
name: "ready",
|
|
170
|
+
id: "botIsReady",
|
|
171
|
+
onExecute() {
|
|
172
|
+
console.log(`Bot ready!`);
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
```
|
|
177
|
+
Event yani olay tanımlarken `name` kısmına istediğiniz olayın ismini yazabilirsiniz. Ancak eğer aynı olaydan birden fazla açmak istiyorsanız o olaya bir `id` tanımlamanız gerekmektedir.
|
|
178
|
+
|
|
179
|
+
# Locale
|
|
180
|
+
|
|
181
|
+
<sub>`src/locales.js` dosyası:</sub>
|
|
182
|
+
|
|
183
|
+
```js
|
|
184
|
+
const dbi = require("../dbi");
|
|
185
|
+
|
|
186
|
+
dbi.register(({ Locale })=>{
|
|
187
|
+
Locale({
|
|
188
|
+
name: "tr",
|
|
189
|
+
data: {
|
|
190
|
+
genders: {
|
|
191
|
+
erkek: "Erkek",
|
|
192
|
+
kadın: "Kadın",
|
|
193
|
+
diğer: "Diğer"
|
|
194
|
+
},
|
|
195
|
+
genderText: "{0} adlı üye {1} cinsiyetini seçti."
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
|
|
199
|
+
Locale({
|
|
200
|
+
name: "en",
|
|
201
|
+
data: {
|
|
202
|
+
genders: {
|
|
203
|
+
erkek: "Male",
|
|
204
|
+
kadın: "Female",
|
|
205
|
+
diğer: "Other"
|
|
206
|
+
},
|
|
207
|
+
genderText: "{0}, picked {1} gender."
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
});
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
Locale sayesinde her interaksiyon içerisinde kullanıcının veya sunucunun diline göre cevap vermenizi kolaylaştıracak bilgiler bulunmakta. Locale içerisindeki `name` hangi dil için tanımlama yaptığınız `data` kısmı ise tutmak istediğiniz değerleri içermekte. Yazı içerisindeki `{0}` ve `{1}` işaretleri aynı şekilde yazı içerisindeki değişkenlerimiz. Locale kullanırken istediğimiz değeri alıp onu bir fonksiyon gibi çağırabiliyoruz. Ve içerisine sırasıyla parametreleri veriyoruz. Örneğin `locale.data.genderText(user, gender)`.
|
|
214
|
+
|
|
215
|
+
# Button & SelectMenu & Modal
|
|
216
|
+
|
|
217
|
+
Bu bölümde ise üç adet özelliğimize bakacağız. (Aslında arka planda hepsi aynı özellik.)
|
|
218
|
+
|
|
219
|
+
<sub>`src/components.js` dosyası:</sub>
|
|
220
|
+
|
|
221
|
+
```js
|
|
222
|
+
const dbi = require("../dbi");
|
|
223
|
+
const Discord = require("discord.js");
|
|
224
|
+
|
|
225
|
+
dbi.register(({ Button, SelectMenu, Modal })=>{
|
|
226
|
+
Button({
|
|
227
|
+
name: "viewGender",
|
|
228
|
+
onExecute({ interaction, data }) {
|
|
229
|
+
interaction.reply(`\`${data[0].gender}\``);
|
|
230
|
+
},
|
|
231
|
+
options: {
|
|
232
|
+
style: Discord.ButtonStyle.Primary,
|
|
233
|
+
label: "View Gender"
|
|
234
|
+
}
|
|
235
|
+
});
|
|
236
|
+
});
|
|
237
|
+
```
|
|
238
|
+
Button & SelectMenu & Modal hakkında çok güzel ve havalı bir özelliği sizlerle buluşturuyoruz. Artık bunların üzerinde istediğiniz değeri taşıyabilirsiniz. (Referans/Obje veya yazı/sayı gibi.) Örneğin `dbi.interaction("viewGender").toJSON("male")` bize Discord.js tarafından desteklenen geçerli bir component sunacaktır. Ve to json içerisinde sunulan değere hem `options` kısmını bir fonksiyona çevirerek ulaşabilir hem de interaksiyonun kendisi çağırıldığında ulaşabilirsiniz. Bu konuyla ilgili unutmamanız gereken bir şey var. Eğer düz yazı veya sayı taşıyacaksanız bu yazı veya sayıların toplam uzunluğu 100 karakteri geçmemeli. Çünkü bu değerler direkt olarak düğmenin üzerinde taşınmakta ve siz botu kapatıp açsanız bile orada kalacak şekilde çalışmaktadırlar.
|
|
239
|
+
|
|
240
|
+
# MessageContextMenu & UserContextMenu
|
|
241
|
+
|
|
242
|
+
`ChatInput` ile birebir aynı özelliklere sahip ancak `options` değeri almamaktadır.
|
|
243
|
+
|
|
244
|
+
# InteractionLocale
|
|
245
|
+
|
|
246
|
+
Bir eşsiz özelliği daha sizlere sunuyoruz. Artık her kullanıcıya özel komut dili tanımlamanızı sağlayabilirsiniz.
|
|
247
|
+
Örneğin Türk bir kullanıcıya `/cinsiyet seç` şeklinde gözüken komut yabancı bir kullanıcıya `/select gender` olarak gözükebilir. (Dilediğiniz gibi konfigüre edebilirsiniz.)
|
|
248
|
+
|
|
249
|
+
<sub>`src/interactionlocales.js` dosyası:</sub>
|
|
250
|
+
|
|
251
|
+
```js
|
|
252
|
+
dbi.register(({ InteractionLocale })=>{
|
|
253
|
+
InteractionLocale({
|
|
254
|
+
name: "cinsiyet seç",
|
|
255
|
+
data: {
|
|
256
|
+
en: {
|
|
257
|
+
name: "select gender",
|
|
258
|
+
description: "Allows you to select a gender.",
|
|
259
|
+
options: {
|
|
260
|
+
cinsiyet: {
|
|
261
|
+
name: "gender",
|
|
262
|
+
description: "Select your gender correctly.",
|
|
263
|
+
choices: {
|
|
264
|
+
"Erkek": "Male",
|
|
265
|
+
"Kadın": "Female",
|
|
266
|
+
"Diğer": "Other"
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
});
|
|
273
|
+
});
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
Son not: `InteractionLocale` için `name` değeri sizin tanımladığınız diğer interaksiyonlardan birinin ismi olacaktır. Örneğin `cinsiyet seç`. Data'nın yapısını en basit hale getirmeye çalıştık. ilk önce istediğiniz dili seçiyorsunuz ve sonrasında içerisini örnekteki gibi uygun bir şekilde dolduruyorsunuz. İçerisine aynı anda istediğin kadar dilde nasıl gözükeceğini ekleyebilirsiniz.
|
|
277
|
+
|
|
278
|
+
Karşılacağınız hatalar ya da benzer konular için Discord üzerinden tarafıma ulaşabilirsiniz. (Armagan#4869)
|
|
279
|
+
|
|
280
|
+
Unutmayın ki: "Yeryüzünde her zaman ücretsiz ve değerli bir şeyler olacaktır."
|
|
281
|
+
|
|
282
|
+
<sub>12.09.2022: Orjinal metin TheArmagan tarafından yazıldı, Maschera tarafından düzenlendi. </sub>
|
package/src/DBI.ts
CHANGED
|
@@ -6,7 +6,7 @@ import { DBIEvent, TDBIEventOmitted } from "./types/Event";
|
|
|
6
6
|
import { MemoryStore } from "./utils/MemoryStore";
|
|
7
7
|
import { hookInteractionListeners } from "./methods/hookInteractionListeners";
|
|
8
8
|
import { Events } from "./Events";
|
|
9
|
-
import { DBILocale,
|
|
9
|
+
import { DBILocale, TDBILocaleConstructor, TDBILocaleString } from "./types/Locale";
|
|
10
10
|
import { DBIButton, TDBIButtonOmitted } from "./types/Button";
|
|
11
11
|
import { DBISelectMenu, TDBISelectMenuOmitted } from "./types/SelectMenu";
|
|
12
12
|
import { DBIMessageContextMenu, TDBIMessageContextMenuOmitted } from "./types/MessageContextMenu";
|
|
@@ -36,13 +36,20 @@ export interface DBIConfig {
|
|
|
36
36
|
defaultMemberPermissions: Discord.PermissionsString[]
|
|
37
37
|
};
|
|
38
38
|
|
|
39
|
-
sharding:
|
|
39
|
+
sharding: "hybrid" | "default" | "off";
|
|
40
40
|
/**
|
|
41
41
|
* Persist store. (Default to MemoryStore thats not persis tho.)
|
|
42
42
|
*/
|
|
43
43
|
store: DBIStore;
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
references: {
|
|
46
|
+
autoClear?: {
|
|
47
|
+
check: number;
|
|
48
|
+
ttl: number;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
strict: boolean;
|
|
46
53
|
}
|
|
47
54
|
|
|
48
55
|
export interface DBIConfigConstructor {
|
|
@@ -56,13 +63,20 @@ export interface DBIConfigConstructor {
|
|
|
56
63
|
defaultMemberPermissions?: Discord.PermissionsString[]
|
|
57
64
|
};
|
|
58
65
|
|
|
59
|
-
sharding?:
|
|
66
|
+
sharding?: "hybrid" | "default" | "off";
|
|
60
67
|
/**
|
|
61
68
|
* Persist store. (Default to MemoryStore thats not persis tho.)
|
|
62
69
|
*/
|
|
63
70
|
store?: DBIStore;
|
|
64
71
|
|
|
65
|
-
|
|
72
|
+
references?: {
|
|
73
|
+
autoClear?: {
|
|
74
|
+
check: number;
|
|
75
|
+
ttl: number;
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
strict?: boolean;
|
|
66
80
|
}
|
|
67
81
|
|
|
68
82
|
export interface DBIRegisterAPI {
|
|
@@ -96,7 +110,7 @@ export class DBI<TOtherData = Record<string, any>> {
|
|
|
96
110
|
unloaders: Set<() => void>;
|
|
97
111
|
registers: Set<(...args: any[]) => any>;
|
|
98
112
|
registerUnloaders: Set<(...args: any[]) => any>;
|
|
99
|
-
refs: Map<string, { at: number, value: any }>;
|
|
113
|
+
refs: Map<string, { at: number, value: any, ttl?: number }>;
|
|
100
114
|
};
|
|
101
115
|
events: Events;
|
|
102
116
|
cluster?: Sharding.Client;
|
|
@@ -112,7 +126,12 @@ export class DBI<TOtherData = Record<string, any>> {
|
|
|
112
126
|
directMessages: false,
|
|
113
127
|
...(config.defaults || {})
|
|
114
128
|
};
|
|
115
|
-
config.sharding = config.sharding ??
|
|
129
|
+
config.sharding = config.sharding ?? "off";
|
|
130
|
+
config.strict = config.strict ?? true;
|
|
131
|
+
config.references = {
|
|
132
|
+
autoClear: undefined,
|
|
133
|
+
...(config.references || {})
|
|
134
|
+
}
|
|
116
135
|
|
|
117
136
|
// @ts-ignore
|
|
118
137
|
this.config = config;
|
|
@@ -134,12 +153,12 @@ export class DBI<TOtherData = Record<string, any>> {
|
|
|
134
153
|
this.events = new Events(this as any);
|
|
135
154
|
this.client = new Discord.Client({
|
|
136
155
|
...(config.discord?.options || {}) as any,
|
|
137
|
-
...(config.sharding ? {
|
|
156
|
+
...(config.sharding == "hybrid" ? {
|
|
138
157
|
shards: (Sharding as any).data.SHARD_LIST,
|
|
139
158
|
shardCount: (Sharding as any).data.TOTAL_SHARDS
|
|
140
159
|
} : {})
|
|
141
160
|
});
|
|
142
|
-
this.cluster = config.sharding ? new Sharding.Client(this.client) : undefined;
|
|
161
|
+
this.cluster = config.sharding == "hybrid" ? new Sharding.Client(this.client) : undefined;
|
|
143
162
|
this._loaded = false;
|
|
144
163
|
this._hooked = false;
|
|
145
164
|
}
|
|
@@ -149,15 +168,15 @@ export class DBI<TOtherData = Record<string, any>> {
|
|
|
149
168
|
this._hooked = true;
|
|
150
169
|
this.data.unloaders.add(hookInteractionListeners(this as any));
|
|
151
170
|
this.data.unloaders.add(hookEventListeners(this as any));
|
|
152
|
-
if (typeof this.config.
|
|
171
|
+
if (typeof this.config.references.autoClear != "undefined") {
|
|
153
172
|
this.data.unloaders.add((() => {
|
|
154
173
|
let interval = setInterval(() => {
|
|
155
|
-
this.data.refs.forEach(({ at }, key) => {
|
|
156
|
-
if (Date.now() > (at + this.config.
|
|
174
|
+
this.data.refs.forEach(({ at, ttl }, key) => {
|
|
175
|
+
if (Date.now() > (at + (ttl || this.config.references.autoClear.ttl))) {
|
|
157
176
|
this.data.refs.delete(key);
|
|
158
177
|
}
|
|
159
178
|
});
|
|
160
|
-
},
|
|
179
|
+
}, this.config.references.autoClear.check);
|
|
161
180
|
return () => {
|
|
162
181
|
clearInterval(interval);
|
|
163
182
|
}
|
|
@@ -183,7 +202,7 @@ export class DBI<TOtherData = Record<string, any>> {
|
|
|
183
202
|
}
|
|
184
203
|
|
|
185
204
|
private async _registerAll() {
|
|
186
|
-
const self = this
|
|
205
|
+
const self = this;
|
|
187
206
|
|
|
188
207
|
for await (const cb of this.data.registers) {
|
|
189
208
|
let ChatInput = function(cfg: DBIChatInput) {
|
|
@@ -196,7 +215,7 @@ export class DBI<TOtherData = Record<string, any>> {
|
|
|
196
215
|
|
|
197
216
|
let Event = function(cfg: TDBIEventOmitted) {
|
|
198
217
|
let dbiEvent = new DBIEvent(self, cfg);
|
|
199
|
-
if (self.data.events.has(dbiEvent.id || dbiEvent.name)) throw new Error(`DBIEvent "${dbiEvent.id || dbiEvent.name}" already loaded!`);
|
|
218
|
+
if (self.config.strict && self.data.events.has(dbiEvent.id || dbiEvent.name)) throw new Error(`DBIEvent "${dbiEvent.id || dbiEvent.name}" already loaded!`);
|
|
200
219
|
self.data.events.set(dbiEvent.id || dbiEvent.name, dbiEvent);
|
|
201
220
|
return dbiEvent;
|
|
202
221
|
};
|
|
@@ -204,7 +223,7 @@ export class DBI<TOtherData = Record<string, any>> {
|
|
|
204
223
|
|
|
205
224
|
let Button = function(cfg: TDBIButtonOmitted) {
|
|
206
225
|
let dbiButton = new DBIButton(self, cfg);
|
|
207
|
-
if (self.data.interactions.has(dbiButton.name)) throw new Error(`DBIButton "${dbiButton.name}" already loaded as "${self.data.interactions.get(dbiButton.name)?.type}"!`);
|
|
226
|
+
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}"!`);
|
|
208
227
|
self.data.interactions.set(dbiButton.name, dbiButton);
|
|
209
228
|
return dbiButton;
|
|
210
229
|
};
|
|
@@ -212,7 +231,7 @@ export class DBI<TOtherData = Record<string, any>> {
|
|
|
212
231
|
|
|
213
232
|
let SelectMenu = function(cfg: TDBISelectMenuOmitted) {
|
|
214
233
|
let dbiSelectMenu = new DBISelectMenu(self, cfg);
|
|
215
|
-
if (self.data.interactions.has(dbiSelectMenu.name)) throw new Error(`DBISelectMenu "${dbiSelectMenu.name}" already loaded as "${self.data.interactions.get(dbiSelectMenu.name)?.type}"!`);
|
|
234
|
+
if (self.config.strict && self.data.interactions.has(dbiSelectMenu.name)) throw new Error(`DBISelectMenu "${dbiSelectMenu.name}" already loaded as "${self.data.interactions.get(dbiSelectMenu.name)?.type}"!`);
|
|
216
235
|
self.data.interactions.set(dbiSelectMenu.name, dbiSelectMenu);
|
|
217
236
|
return dbiSelectMenu;
|
|
218
237
|
};
|
|
@@ -220,7 +239,7 @@ export class DBI<TOtherData = Record<string, any>> {
|
|
|
220
239
|
|
|
221
240
|
let MessageContextMenu = function(cfg: TDBIMessageContextMenuOmitted) {
|
|
222
241
|
let dbiMessageContextMenu = new DBIMessageContextMenu(self, cfg);
|
|
223
|
-
if (self.data.interactions.has(dbiMessageContextMenu.name)) throw new Error(`DBIMessageContextMenu "${dbiMessageContextMenu.name}" already loaded as "${self.data.interactions.get(dbiMessageContextMenu.name)?.type}"!`);
|
|
242
|
+
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}"!`);
|
|
224
243
|
self.data.interactions.set(dbiMessageContextMenu.name, dbiMessageContextMenu);
|
|
225
244
|
return dbiMessageContextMenu;
|
|
226
245
|
};
|
|
@@ -228,7 +247,7 @@ export class DBI<TOtherData = Record<string, any>> {
|
|
|
228
247
|
|
|
229
248
|
let UserContextMenu = function(cfg: TDBIUserContextMenuOmitted) {
|
|
230
249
|
let dbiUserContextMenu = new DBIUserContextMenu(self, cfg);
|
|
231
|
-
if (self.data.interactions.has(dbiUserContextMenu.name)) throw new Error(`DBIUserContextMenu "${dbiUserContextMenu.name}" already loaded as "${self.data.interactions.get(dbiUserContextMenu.name)?.type}"!`);
|
|
250
|
+
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}"!`);
|
|
232
251
|
self.data.interactions.set(dbiUserContextMenu.name, dbiUserContextMenu);
|
|
233
252
|
return dbiUserContextMenu;
|
|
234
253
|
};
|
|
@@ -236,7 +255,7 @@ export class DBI<TOtherData = Record<string, any>> {
|
|
|
236
255
|
|
|
237
256
|
let Modal = function(cfg: TDBIModalOmitted) {
|
|
238
257
|
let dbiModal = new DBIModal(self, cfg);
|
|
239
|
-
if (self.data.interactions.has(dbiModal.name)) throw new Error(`DBIModal "${dbiModal.name}" already loaded as "${self.data.interactions.get(dbiModal.name)?.type}"!`);
|
|
258
|
+
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}"!`);
|
|
240
259
|
self.data.interactions.set(dbiModal.name, dbiModal);
|
|
241
260
|
return dbiModal;
|
|
242
261
|
};
|
|
@@ -244,7 +263,7 @@ export class DBI<TOtherData = Record<string, any>> {
|
|
|
244
263
|
|
|
245
264
|
let Locale = function(cfg: TDBILocaleConstructor) {
|
|
246
265
|
let dbiLocale = new DBILocale(self, cfg);
|
|
247
|
-
if (self.data.locales.has(dbiLocale.name)) throw new Error(`DBILocale "${dbiLocale.name}" already loaded!`);
|
|
266
|
+
if (self.config.strict && self.data.locales.has(dbiLocale.name)) throw new Error(`DBILocale "${dbiLocale.name}" already loaded!`);
|
|
248
267
|
self.data.locales.set(dbiLocale.name, dbiLocale);
|
|
249
268
|
return dbiLocale;
|
|
250
269
|
};
|
|
@@ -252,7 +271,7 @@ export class DBI<TOtherData = Record<string, any>> {
|
|
|
252
271
|
|
|
253
272
|
let InteractionLocale = function(cfg: TDBIInteractionLocaleOmitted) {
|
|
254
273
|
let dbiInteractionLocale = new DBIInteractionLocale(self, cfg);
|
|
255
|
-
if (self.data.interactionLocales.has(dbiInteractionLocale.name)) throw new Error(`DBIInteractionLocale "${dbiInteractionLocale.name}" already loaded!`);
|
|
274
|
+
if (self.config.strict && self.data.interactionLocales.has(dbiInteractionLocale.name)) throw new Error(`DBIInteractionLocale "${dbiInteractionLocale.name}" already loaded!`);
|
|
256
275
|
self.data.interactionLocales.set(dbiInteractionLocale.name, dbiInteractionLocale);
|
|
257
276
|
return dbiInteractionLocale;
|
|
258
277
|
};
|
|
@@ -337,7 +356,7 @@ export class DBI<TOtherData = Record<string, any>> {
|
|
|
337
356
|
}
|
|
338
357
|
|
|
339
358
|
async login(): Promise<any> {
|
|
340
|
-
await this.client.login(this.config.discord.token);
|
|
359
|
+
await this.client.login(this.config.sharding == "default" ? undefined : this.config.discord.token);
|
|
341
360
|
}
|
|
342
361
|
|
|
343
362
|
async register(cb: (api: DBIRegisterAPI) => void): Promise<any> {
|
package/src/types/Button.ts
CHANGED
|
@@ -16,16 +16,17 @@ export class DBIButton extends DBIBaseInteraction {
|
|
|
16
16
|
...(args as any),
|
|
17
17
|
type: "Button",
|
|
18
18
|
});
|
|
19
|
+
this.referenceTTL = args.referenceTTL;
|
|
19
20
|
}
|
|
20
21
|
|
|
21
22
|
declare options?: Omit<Discord.ButtonComponentData, "customId" | "type"> | ((data: (number | string | any)[]) => Omit<Discord.ButtonComponentData, "customId" | "type">);
|
|
22
23
|
|
|
23
24
|
override onExecute(ctx: IDBIButtonExecuteCtx): Promise<any> | any { };
|
|
24
|
-
|
|
25
|
+
declare referenceTTL?: number
|
|
25
26
|
toJSON(...customData: (string | number | object)[]): Discord.ButtonComponentData {
|
|
26
27
|
return {
|
|
27
28
|
...(typeof this.options == "function" ? this.options(customData) : this.options),
|
|
28
|
-
customId: customIdBuilder(this.dbi, this.name, customData),
|
|
29
|
+
customId: customIdBuilder(this.dbi, this.name, customData, this.referenceTTL),
|
|
29
30
|
type: Discord.ComponentType.Button
|
|
30
31
|
} as any;
|
|
31
32
|
};
|
package/src/types/Modal.ts
CHANGED
|
@@ -12,21 +12,24 @@ export interface IDBIModalExecuteCtx extends IDBIBaseExecuteCtx {
|
|
|
12
12
|
export type TDBIModalOmitted = Omit<DBIModal, "type" | "description" | "dbi" | "toJSON">;
|
|
13
13
|
|
|
14
14
|
export class DBIModal extends DBIBaseInteraction {
|
|
15
|
-
constructor(dbi: DBI,
|
|
15
|
+
constructor(dbi: DBI, args: TDBIModalOmitted) {
|
|
16
16
|
super(dbi, {
|
|
17
|
-
...(
|
|
17
|
+
...(args as any),
|
|
18
18
|
type: "Modal"
|
|
19
|
-
})
|
|
19
|
+
});
|
|
20
|
+
this.referenceTTL = args.referenceTTL;
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
declare options: Omit<Discord.ModalComponentData, "customId"> | ((data: (number | string | any)[]) => Omit<Discord.ModalComponentData, "customId">);
|
|
23
24
|
|
|
24
25
|
override onExecute(ctx: IDBIModalExecuteCtx): Promise<any> | any { };
|
|
25
26
|
|
|
27
|
+
declare referenceTTL?: number;
|
|
28
|
+
|
|
26
29
|
toJSON(...customData: (string | number | object)[]): Discord.ModalComponentData {
|
|
27
30
|
return {
|
|
28
31
|
...(typeof this.options == "function" ? this.options(customData) : this.options),
|
|
29
|
-
customId: customIdBuilder(this.dbi, this.name, customData)
|
|
32
|
+
customId: customIdBuilder(this.dbi, this.name, customData, this.referenceTTL)
|
|
30
33
|
} as any;
|
|
31
34
|
};
|
|
32
35
|
}
|
package/src/types/SelectMenu.ts
CHANGED
|
@@ -8,7 +8,7 @@ export interface IDBISelectMenuExecuteCtx extends IDBIBaseExecuteCtx {
|
|
|
8
8
|
data: TDBIReferencedData[];
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
export type TDBISelectMenuOmitted = Omit<
|
|
11
|
+
export type TDBISelectMenuOmitted = Omit<DBISelectMenu, "type" | "description" | "dbi" | "toJSON">;
|
|
12
12
|
|
|
13
13
|
export class DBISelectMenu extends DBIBaseInteraction {
|
|
14
14
|
constructor(dbi: DBI, args: TDBISelectMenuOmitted) {
|
|
@@ -16,16 +16,19 @@ export class DBISelectMenu extends DBIBaseInteraction {
|
|
|
16
16
|
...(args as any),
|
|
17
17
|
type: "SelectMenu",
|
|
18
18
|
});
|
|
19
|
+
this.referenceTTL = args.referenceTTL;
|
|
19
20
|
}
|
|
20
21
|
|
|
21
22
|
declare options: Omit<Discord.SelectMenuComponentData, "customId" | "type"> | ((data: (number | string | any)[]) => Omit<Discord.SelectMenuComponentData, "customId" | "type">);
|
|
22
23
|
|
|
23
24
|
override onExecute(ctx: IDBISelectMenuExecuteCtx): Promise<any> | any { };
|
|
24
25
|
|
|
26
|
+
declare referenceTTL?: number;
|
|
27
|
+
|
|
25
28
|
toJSON(...customData: (string | number | object)[]): Discord.SelectMenuComponentData {
|
|
26
29
|
return {
|
|
27
30
|
...(typeof this.options == "function" ? this.options(customData) : this.options),
|
|
28
|
-
customId: customIdBuilder(this.dbi, this.name, customData),
|
|
31
|
+
customId: customIdBuilder(this.dbi, this.name, customData, this.referenceTTL),
|
|
29
32
|
type: Discord.ComponentType.SelectMenu
|
|
30
33
|
} as any
|
|
31
34
|
};
|
package/src/utils/customId.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DBI } from "../DBI";
|
|
2
2
|
import * as stuffs from "stuffs";
|
|
3
3
|
|
|
4
|
-
export function customIdBuilder(dbi: DBI, name: string, customData: any[]): string {
|
|
4
|
+
export function customIdBuilder(dbi: DBI, name: string, customData: any[], ttl?:number): string {
|
|
5
5
|
let customId = [
|
|
6
6
|
name,
|
|
7
7
|
...customData.map(value => {
|
|
@@ -12,10 +12,11 @@ export function customIdBuilder(dbi: DBI, name: string, customData: any[]): stri
|
|
|
12
12
|
$ref: id,
|
|
13
13
|
$unRef() { return dbi.data.refs.delete(id); },
|
|
14
14
|
})
|
|
15
|
-
dbi.data.refs.set(id, { at: Date.now(), value });
|
|
15
|
+
dbi.data.refs.set(id, { at: Date.now(), value, ttl });
|
|
16
16
|
return `¤${id}`;
|
|
17
17
|
})
|
|
18
18
|
].join("—");
|
|
19
|
+
if (!dbi.config.strict) customId = customId.slice(0, 100);
|
|
19
20
|
if (customId.length > 100) throw new Error("Custom id cannot be longer than 100 characters.")
|
|
20
21
|
return customId;
|
|
21
22
|
}
|