@mostfeatured/dbi 0.0.80 → 0.0.82

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.
Files changed (244) hide show
  1. package/dist/{src/DBI.d.ts → DBI.d.ts} +15 -0
  2. package/dist/DBI.d.ts.map +1 -0
  3. package/dist/{src/DBI.js → DBI.js} +33 -1
  4. package/dist/DBI.js.map +1 -0
  5. package/dist/{src/Events.d.ts → Events.d.ts} +17 -1
  6. package/dist/Events.d.ts.map +1 -0
  7. package/dist/Events.js.map +1 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/methods/handleMessageCommands.d.ts +6 -0
  11. package/dist/methods/handleMessageCommands.d.ts.map +1 -0
  12. package/dist/methods/handleMessageCommands.js +301 -0
  13. package/dist/methods/handleMessageCommands.js.map +1 -0
  14. package/dist/methods/hookEventListeners.d.ts.map +1 -0
  15. package/dist/methods/hookEventListeners.js.map +1 -0
  16. package/dist/methods/hookInteractionListeners.d.ts.map +1 -0
  17. package/dist/{src/methods → methods}/hookInteractionListeners.js +1 -1
  18. package/dist/methods/hookInteractionListeners.js.map +1 -0
  19. package/dist/methods/publishInteractions.d.ts.map +1 -0
  20. package/dist/methods/publishInteractions.js.map +1 -0
  21. package/dist/types/ApplicationRoleConnectionMetadata.d.ts.map +1 -0
  22. package/dist/types/ApplicationRoleConnectionMetadata.js.map +1 -0
  23. package/dist/types/Builders/ButtonBuilder.d.ts.map +1 -0
  24. package/dist/types/Builders/ButtonBuilder.js.map +1 -0
  25. package/dist/types/Builders/ChannelSelectMenuBuilder.d.ts.map +1 -0
  26. package/dist/types/Builders/ChannelSelectMenuBuilder.js.map +1 -0
  27. package/dist/types/Builders/MentionableSelectMenuBuilder.d.ts.map +1 -0
  28. package/dist/types/Builders/MentionableSelectMenuBuilder.js.map +1 -0
  29. package/dist/types/Builders/ModalBuilder.d.ts.map +1 -0
  30. package/dist/types/Builders/ModalBuilder.js.map +1 -0
  31. package/dist/types/Builders/RoleSelectMenuBuilder.d.ts.map +1 -0
  32. package/dist/types/Builders/RoleSelectMenuBuilder.js.map +1 -0
  33. package/dist/types/Builders/StringSelectMenuBuilder.d.ts.map +1 -0
  34. package/dist/types/Builders/StringSelectMenuBuilder.js.map +1 -0
  35. package/dist/types/Builders/UserSelectMenuBuilder.d.ts.map +1 -0
  36. package/dist/types/Builders/UserSelectMenuBuilder.js.map +1 -0
  37. package/dist/types/ChatInput/ChatInput.d.ts.map +1 -0
  38. package/dist/types/ChatInput/ChatInput.js.map +1 -0
  39. package/dist/{src/types → types}/ChatInput/ChatInputOptions.d.ts +6 -6
  40. package/dist/types/ChatInput/ChatInputOptions.d.ts.map +1 -0
  41. package/dist/types/ChatInput/ChatInputOptions.js.map +1 -0
  42. package/dist/types/Components/Button.d.ts.map +1 -0
  43. package/dist/types/Components/Button.js.map +1 -0
  44. package/dist/types/Components/ChannelSelectMenu.d.ts.map +1 -0
  45. package/dist/types/Components/ChannelSelectMenu.js.map +1 -0
  46. package/dist/types/Components/MentionableSelectMenu.d.ts.map +1 -0
  47. package/dist/types/Components/MentionableSelectMenu.js.map +1 -0
  48. package/dist/types/Components/Modal.d.ts.map +1 -0
  49. package/dist/types/Components/Modal.js.map +1 -0
  50. package/dist/types/Components/RoleSelectMenu.d.ts.map +1 -0
  51. package/dist/types/Components/RoleSelectMenu.js.map +1 -0
  52. package/dist/types/Components/StringSelectMenu.d.ts.map +1 -0
  53. package/dist/types/Components/StringSelectMenu.js.map +1 -0
  54. package/dist/types/Components/UserSelectMenu.d.ts.map +1 -0
  55. package/dist/types/Components/UserSelectMenu.js.map +1 -0
  56. package/dist/types/Event.d.ts.map +1 -0
  57. package/dist/types/Event.js.map +1 -0
  58. package/dist/{src/types → types}/Interaction.d.ts +5 -1
  59. package/dist/types/Interaction.d.ts.map +1 -0
  60. package/dist/types/Interaction.js.map +1 -0
  61. package/dist/types/other/CustomEvent.d.ts.map +1 -0
  62. package/dist/types/other/CustomEvent.js.map +1 -0
  63. package/dist/types/other/FakeMessageInteraction.d.ts +75 -0
  64. package/dist/types/other/FakeMessageInteraction.d.ts.map +1 -0
  65. package/dist/types/other/FakeMessageInteraction.js +311 -0
  66. package/dist/types/other/FakeMessageInteraction.js.map +1 -0
  67. package/dist/types/other/InteractionLocale.d.ts.map +1 -0
  68. package/dist/types/other/InteractionLocale.js.map +1 -0
  69. package/dist/types/other/Locale.d.ts.map +1 -0
  70. package/dist/types/other/Locale.js.map +1 -0
  71. package/dist/types/other/MessageContextMenu.d.ts.map +1 -0
  72. package/dist/types/other/MessageContextMenu.js.map +1 -0
  73. package/dist/types/other/UserContextMenu.d.ts.map +1 -0
  74. package/dist/types/other/UserContextMenu.js.map +1 -0
  75. package/dist/utils/MemoryStore.d.ts.map +1 -0
  76. package/dist/utils/MemoryStore.js.map +1 -0
  77. package/dist/utils/UtilTypes.d.ts.map +1 -0
  78. package/dist/utils/UtilTypes.js.map +1 -0
  79. package/dist/utils/customId.d.ts.map +1 -0
  80. package/dist/utils/customId.js.map +1 -0
  81. package/dist/utils/permissions.d.ts.map +1 -0
  82. package/dist/utils/permissions.js.map +1 -0
  83. package/dist/utils/recursiveImport.d.ts.map +1 -0
  84. package/dist/utils/recursiveImport.js.map +1 -0
  85. package/dist/utils/recursiveUnload.d.ts.map +1 -0
  86. package/dist/utils/recursiveUnload.js.map +1 -0
  87. package/dist/utils/unloadModule.d.ts.map +1 -0
  88. package/dist/utils/unloadModule.js.map +1 -0
  89. package/package.json +3 -2
  90. package/readme.md +35 -0
  91. package/src/DBI.ts +53 -1
  92. package/src/Events.ts +10 -1
  93. package/src/methods/handleMessageCommands.ts +310 -0
  94. package/src/methods/hookInteractionListeners.ts +1 -2
  95. package/src/types/ChatInput/ChatInputOptions.ts +3 -3
  96. package/src/types/Interaction.ts +1 -1
  97. package/src/types/other/FakeMessageInteraction.ts +294 -0
  98. package/dist/src/DBI.d.ts.map +0 -1
  99. package/dist/src/DBI.js.map +0 -1
  100. package/dist/src/Events.d.ts.map +0 -1
  101. package/dist/src/Events.js.map +0 -1
  102. package/dist/src/index.d.ts.map +0 -1
  103. package/dist/src/index.js.map +0 -1
  104. package/dist/src/methods/hookEventListeners.d.ts.map +0 -1
  105. package/dist/src/methods/hookEventListeners.js.map +0 -1
  106. package/dist/src/methods/hookInteractionListeners.d.ts.map +0 -1
  107. package/dist/src/methods/hookInteractionListeners.js.map +0 -1
  108. package/dist/src/methods/publishInteractions.d.ts.map +0 -1
  109. package/dist/src/methods/publishInteractions.js.map +0 -1
  110. package/dist/src/types/ApplicationRoleConnectionMetadata.d.ts.map +0 -1
  111. package/dist/src/types/ApplicationRoleConnectionMetadata.js.map +0 -1
  112. package/dist/src/types/Builders/ButtonBuilder.d.ts.map +0 -1
  113. package/dist/src/types/Builders/ButtonBuilder.js.map +0 -1
  114. package/dist/src/types/Builders/ChannelSelectMenuBuilder.d.ts.map +0 -1
  115. package/dist/src/types/Builders/ChannelSelectMenuBuilder.js.map +0 -1
  116. package/dist/src/types/Builders/MentionableSelectMenuBuilder.d.ts.map +0 -1
  117. package/dist/src/types/Builders/MentionableSelectMenuBuilder.js.map +0 -1
  118. package/dist/src/types/Builders/ModalBuilder.d.ts.map +0 -1
  119. package/dist/src/types/Builders/ModalBuilder.js.map +0 -1
  120. package/dist/src/types/Builders/RoleSelectMenuBuilder.d.ts.map +0 -1
  121. package/dist/src/types/Builders/RoleSelectMenuBuilder.js.map +0 -1
  122. package/dist/src/types/Builders/StringSelectMenuBuilder.d.ts.map +0 -1
  123. package/dist/src/types/Builders/StringSelectMenuBuilder.js.map +0 -1
  124. package/dist/src/types/Builders/UserSelectMenuBuilder.d.ts.map +0 -1
  125. package/dist/src/types/Builders/UserSelectMenuBuilder.js.map +0 -1
  126. package/dist/src/types/ChatInput/ChatInput.d.ts.map +0 -1
  127. package/dist/src/types/ChatInput/ChatInput.js.map +0 -1
  128. package/dist/src/types/ChatInput/ChatInputOptions.d.ts.map +0 -1
  129. package/dist/src/types/ChatInput/ChatInputOptions.js.map +0 -1
  130. package/dist/src/types/Components/Button.d.ts.map +0 -1
  131. package/dist/src/types/Components/Button.js.map +0 -1
  132. package/dist/src/types/Components/ChannelSelectMenu.d.ts.map +0 -1
  133. package/dist/src/types/Components/ChannelSelectMenu.js.map +0 -1
  134. package/dist/src/types/Components/MentionableSelectMenu.d.ts.map +0 -1
  135. package/dist/src/types/Components/MentionableSelectMenu.js.map +0 -1
  136. package/dist/src/types/Components/Modal.d.ts.map +0 -1
  137. package/dist/src/types/Components/Modal.js.map +0 -1
  138. package/dist/src/types/Components/RoleSelectMenu.d.ts.map +0 -1
  139. package/dist/src/types/Components/RoleSelectMenu.js.map +0 -1
  140. package/dist/src/types/Components/StringSelectMenu.d.ts.map +0 -1
  141. package/dist/src/types/Components/StringSelectMenu.js.map +0 -1
  142. package/dist/src/types/Components/UserSelectMenu.d.ts.map +0 -1
  143. package/dist/src/types/Components/UserSelectMenu.js.map +0 -1
  144. package/dist/src/types/Event.d.ts.map +0 -1
  145. package/dist/src/types/Event.js.map +0 -1
  146. package/dist/src/types/Interaction.d.ts.map +0 -1
  147. package/dist/src/types/Interaction.js.map +0 -1
  148. package/dist/src/types/other/CustomEvent.d.ts.map +0 -1
  149. package/dist/src/types/other/CustomEvent.js.map +0 -1
  150. package/dist/src/types/other/InteractionLocale.d.ts.map +0 -1
  151. package/dist/src/types/other/InteractionLocale.js.map +0 -1
  152. package/dist/src/types/other/Locale.d.ts.map +0 -1
  153. package/dist/src/types/other/Locale.js.map +0 -1
  154. package/dist/src/types/other/MessageContextMenu.d.ts.map +0 -1
  155. package/dist/src/types/other/MessageContextMenu.js.map +0 -1
  156. package/dist/src/types/other/UserContextMenu.d.ts.map +0 -1
  157. package/dist/src/types/other/UserContextMenu.js.map +0 -1
  158. package/dist/src/utils/MemoryStore.d.ts.map +0 -1
  159. package/dist/src/utils/MemoryStore.js.map +0 -1
  160. package/dist/src/utils/UtilTypes.d.ts.map +0 -1
  161. package/dist/src/utils/UtilTypes.js.map +0 -1
  162. package/dist/src/utils/customId.d.ts.map +0 -1
  163. package/dist/src/utils/customId.js.map +0 -1
  164. package/dist/src/utils/permissions.d.ts.map +0 -1
  165. package/dist/src/utils/permissions.js.map +0 -1
  166. package/dist/src/utils/recursiveImport.d.ts.map +0 -1
  167. package/dist/src/utils/recursiveImport.js.map +0 -1
  168. package/dist/src/utils/recursiveUnload.d.ts.map +0 -1
  169. package/dist/src/utils/recursiveUnload.js.map +0 -1
  170. package/dist/src/utils/unloadModule.d.ts.map +0 -1
  171. package/dist/src/utils/unloadModule.js.map +0 -1
  172. package/dist/test.d.ts +0 -2
  173. package/dist/test.d.ts.map +0 -1
  174. package/dist/test.js +0 -27
  175. package/dist/test.js.map +0 -1
  176. /package/dist/{src/Events.js → Events.js} +0 -0
  177. /package/dist/{src/data → data}/eventMap.json +0 -0
  178. /package/dist/{src/index.d.ts → index.d.ts} +0 -0
  179. /package/dist/{src/index.js → index.js} +0 -0
  180. /package/dist/{src/methods → methods}/hookEventListeners.d.ts +0 -0
  181. /package/dist/{src/methods → methods}/hookEventListeners.js +0 -0
  182. /package/dist/{src/methods → methods}/hookInteractionListeners.d.ts +0 -0
  183. /package/dist/{src/methods → methods}/publishInteractions.d.ts +0 -0
  184. /package/dist/{src/methods → methods}/publishInteractions.js +0 -0
  185. /package/dist/{src/types → types}/ApplicationRoleConnectionMetadata.d.ts +0 -0
  186. /package/dist/{src/types → types}/ApplicationRoleConnectionMetadata.js +0 -0
  187. /package/dist/{src/types → types}/Builders/ButtonBuilder.d.ts +0 -0
  188. /package/dist/{src/types → types}/Builders/ButtonBuilder.js +0 -0
  189. /package/dist/{src/types → types}/Builders/ChannelSelectMenuBuilder.d.ts +0 -0
  190. /package/dist/{src/types → types}/Builders/ChannelSelectMenuBuilder.js +0 -0
  191. /package/dist/{src/types → types}/Builders/MentionableSelectMenuBuilder.d.ts +0 -0
  192. /package/dist/{src/types → types}/Builders/MentionableSelectMenuBuilder.js +0 -0
  193. /package/dist/{src/types → types}/Builders/ModalBuilder.d.ts +0 -0
  194. /package/dist/{src/types → types}/Builders/ModalBuilder.js +0 -0
  195. /package/dist/{src/types → types}/Builders/RoleSelectMenuBuilder.d.ts +0 -0
  196. /package/dist/{src/types → types}/Builders/RoleSelectMenuBuilder.js +0 -0
  197. /package/dist/{src/types → types}/Builders/StringSelectMenuBuilder.d.ts +0 -0
  198. /package/dist/{src/types → types}/Builders/StringSelectMenuBuilder.js +0 -0
  199. /package/dist/{src/types → types}/Builders/UserSelectMenuBuilder.d.ts +0 -0
  200. /package/dist/{src/types → types}/Builders/UserSelectMenuBuilder.js +0 -0
  201. /package/dist/{src/types → types}/ChatInput/ChatInput.d.ts +0 -0
  202. /package/dist/{src/types → types}/ChatInput/ChatInput.js +0 -0
  203. /package/dist/{src/types → types}/ChatInput/ChatInputOptions.js +0 -0
  204. /package/dist/{src/types → types}/Components/Button.d.ts +0 -0
  205. /package/dist/{src/types → types}/Components/Button.js +0 -0
  206. /package/dist/{src/types → types}/Components/ChannelSelectMenu.d.ts +0 -0
  207. /package/dist/{src/types → types}/Components/ChannelSelectMenu.js +0 -0
  208. /package/dist/{src/types → types}/Components/MentionableSelectMenu.d.ts +0 -0
  209. /package/dist/{src/types → types}/Components/MentionableSelectMenu.js +0 -0
  210. /package/dist/{src/types → types}/Components/Modal.d.ts +0 -0
  211. /package/dist/{src/types → types}/Components/Modal.js +0 -0
  212. /package/dist/{src/types → types}/Components/RoleSelectMenu.d.ts +0 -0
  213. /package/dist/{src/types → types}/Components/RoleSelectMenu.js +0 -0
  214. /package/dist/{src/types → types}/Components/StringSelectMenu.d.ts +0 -0
  215. /package/dist/{src/types → types}/Components/StringSelectMenu.js +0 -0
  216. /package/dist/{src/types → types}/Components/UserSelectMenu.d.ts +0 -0
  217. /package/dist/{src/types → types}/Components/UserSelectMenu.js +0 -0
  218. /package/dist/{src/types → types}/Event.d.ts +0 -0
  219. /package/dist/{src/types → types}/Event.js +0 -0
  220. /package/dist/{src/types → types}/Interaction.js +0 -0
  221. /package/dist/{src/types → types}/other/CustomEvent.d.ts +0 -0
  222. /package/dist/{src/types → types}/other/CustomEvent.js +0 -0
  223. /package/dist/{src/types → types}/other/InteractionLocale.d.ts +0 -0
  224. /package/dist/{src/types → types}/other/InteractionLocale.js +0 -0
  225. /package/dist/{src/types → types}/other/Locale.d.ts +0 -0
  226. /package/dist/{src/types → types}/other/Locale.js +0 -0
  227. /package/dist/{src/types → types}/other/MessageContextMenu.d.ts +0 -0
  228. /package/dist/{src/types → types}/other/MessageContextMenu.js +0 -0
  229. /package/dist/{src/types → types}/other/UserContextMenu.d.ts +0 -0
  230. /package/dist/{src/types → types}/other/UserContextMenu.js +0 -0
  231. /package/dist/{src/utils → utils}/MemoryStore.d.ts +0 -0
  232. /package/dist/{src/utils → utils}/MemoryStore.js +0 -0
  233. /package/dist/{src/utils → utils}/UtilTypes.d.ts +0 -0
  234. /package/dist/{src/utils → utils}/UtilTypes.js +0 -0
  235. /package/dist/{src/utils → utils}/customId.d.ts +0 -0
  236. /package/dist/{src/utils → utils}/customId.js +0 -0
  237. /package/dist/{src/utils → utils}/permissions.d.ts +0 -0
  238. /package/dist/{src/utils → utils}/permissions.js +0 -0
  239. /package/dist/{src/utils → utils}/recursiveImport.d.ts +0 -0
  240. /package/dist/{src/utils → utils}/recursiveImport.js +0 -0
  241. /package/dist/{src/utils → utils}/recursiveUnload.d.ts +0 -0
  242. /package/dist/{src/utils → utils}/recursiveUnload.js +0 -0
  243. /package/dist/{src/utils → utils}/unloadModule.d.ts +0 -0
  244. /package/dist/{src/utils → utils}/unloadModule.js +0 -0
@@ -53,6 +53,12 @@ export interface DBIConfig {
53
53
  };
54
54
  };
55
55
  strict: boolean;
56
+ messageCommands?: {
57
+ prefixes: string[];
58
+ typeAliases: {
59
+ booleans: Record<string, boolean>;
60
+ };
61
+ };
56
62
  }
57
63
  export interface DBIConfigConstructor {
58
64
  discord: {
@@ -88,6 +94,15 @@ export interface DBIConfigConstructor {
88
94
  }>;
89
95
  };
90
96
  strict?: boolean;
97
+ messageCommands?: {
98
+ prefixes: string[];
99
+ typeAliases?: {
100
+ /**
101
+ * Example: {"yes": true, "no": false}
102
+ */
103
+ booleans?: Record<string, boolean>;
104
+ };
105
+ };
91
106
  }
92
107
  export interface DBIRegisterAPI<TNamespace extends NamespaceEnums> {
93
108
  ChatInput(cfg: TDBIChatInputOmitted<TNamespace>): DBIChatInput<TNamespace>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DBI.d.ts","sourceRoot":"","sources":["../src/DBI.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,7 @@ const UserSelectMenu_1 = require("./types/Components/UserSelectMenu");
27
27
  const MentionableSelectMenu_1 = require("./types/Components/MentionableSelectMenu");
28
28
  const ChannelSelectMenu_1 = require("./types/Components/ChannelSelectMenu");
29
29
  const RoleSelectMenu_1 = require("./types/Components/RoleSelectMenu");
30
+ const handleMessageCommands_1 = require("./methods/handleMessageCommands");
30
31
  class DBI {
31
32
  namespace;
32
33
  config;
@@ -51,6 +52,23 @@ class DBI {
51
52
  autoClear: undefined,
52
53
  ...(config.references || {})
53
54
  };
55
+ if (config.messageCommands) {
56
+ if (config.strict && !config.messageCommands?.prefixes?.length)
57
+ throw new Error("No message command prefixes provided.");
58
+ let { typeAliases } = config.messageCommands;
59
+ config.messageCommands.typeAliases = {
60
+ booleans: typeAliases.booleans ?? {
61
+ "true": true,
62
+ "false": false,
63
+ "yes": true,
64
+ "no": false,
65
+ "y": true,
66
+ "n": false,
67
+ "1": true,
68
+ "0": false
69
+ }
70
+ };
71
+ }
54
72
  // @ts-ignore
55
73
  this.config = config;
56
74
  this.data = {
@@ -113,10 +131,11 @@ class DBI {
113
131
  async _hookListeners() {
114
132
  if (this._hooked)
115
133
  return;
134
+ const self = this;
116
135
  this._hooked = true;
117
136
  this.data.unloaders.add((0, hookInteractionListeners_1.hookInteractionListeners)(this));
118
137
  this.data.unloaders.add((0, hookEventListeners_1.hookEventListeners)(this));
119
- if (typeof this.config.references.autoClear != "undefined") {
138
+ if (typeof this.config.references.autoClear !== "undefined") {
120
139
  this.data.unloaders.add((() => {
121
140
  let interval = setInterval(() => {
122
141
  this.data.refs.forEach(({ at, ttl }, key) => {
@@ -130,6 +149,18 @@ class DBI {
130
149
  };
131
150
  })());
132
151
  }
152
+ if (typeof this.config.messageCommands !== "undefined") {
153
+ this.data.unloaders.add((() => {
154
+ const { client } = this.client();
155
+ function onMessage(message) {
156
+ (0, handleMessageCommands_1.handleMessageCommands)(self, message);
157
+ }
158
+ client.on("messageCreate", onMessage);
159
+ return () => {
160
+ client.off("messageCreate", onMessage);
161
+ };
162
+ })());
163
+ }
133
164
  }
134
165
  async _unhookListeners() {
135
166
  if (!this._hooked)
@@ -318,6 +349,7 @@ class DBI {
318
349
  },
319
350
  });
320
351
  }
352
+ self.data.interactions.sort((a, b) => a.name.length - b.name.length);
321
353
  }
322
354
  emit(name, args) {
323
355
  this.data.clients.forEach((d) => d.client.emit(name, { ...args, _DIRECT_: true }));
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DBI.js","sourceRoot":"","sources":["../src/DBI.ts"],"names":[],"mappings":"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","sourcesContent":["import Discord from \"discord.js\";\r\nimport { DBIChatInput, TDBIChatInputOmitted } from \"./types/ChatInput/ChatInput\";\r\nimport { DBIChatInputOptions } from \"./types/ChatInput/ChatInputOptions\";\r\nimport { publishInteractions } from \"./methods/publishInteractions\";\r\nimport { ClientEvents, DBIEvent, TDBIEventOmitted } from \"./types/Event\";\r\nimport { MemoryStore } from \"./utils/MemoryStore\";\r\nimport { hookInteractionListeners } from \"./methods/hookInteractionListeners\";\r\nimport { Events } from \"./Events\";\r\nimport { DBILocale, TDBILocaleConstructor, TDBILocaleString } from \"./types/other/Locale\";\r\nimport { DBIButton, TDBIButtonOmitted } from \"./types/Components/Button\";\r\nimport { DBIStringSelectMenu, TDBIStringSelectMenuOmitted } from \"./types/Components/StringSelectMenu\";\r\nimport { DBIMessageContextMenu, TDBIMessageContextMenuOmitted } from \"./types/other/MessageContextMenu\";\r\nimport { DBIUserContextMenu, TDBIUserContextMenuOmitted } from \"./types/other/UserContextMenu\";\r\nimport { hookEventListeners } from \"./methods/hookEventListeners\";\r\nimport eventMap from \"./data/eventMap.json\";\r\nimport { DBIModal, TDBIModalOmitted } from \"./types/Components/Modal\";\r\nimport * as Sharding from \"discord-hybrid-sharding\";\r\nimport _ from \"lodash\";\r\nimport { DBIInteractionLocale, TDBIInteractionLocaleOmitted } from \"./types/other/InteractionLocale\";\r\nimport { TDBIInteractions } from \"./types/Interaction\";\r\nimport { NamespaceData, NamespaceEnums } from \"../generated/namespaceData\";\r\nimport { DBICustomEvent, TDBICustomEventOmitted } from \"./types/other/CustomEvent\";\r\nimport aaq from \"async-and-quick\";\r\nimport { DBIUserSelectMenu, TDBIUserSelectMenuOmitted } from \"./types/Components/UserSelectMenu\";\r\nimport { DBIMentionableSelectMenu, TDBIMentionableSelectMenuOmitted } from \"./types/Components/MentionableSelectMenu\";\r\nimport { DBIChannelSelectMenu, TDBIChannelSelectMenuOmitted } from \"./types/Components/ChannelSelectMenu\";\r\nimport { DBIRoleSelectMenu, TDBIRoleSelectMenuOmitted } from \"./types/Components/RoleSelectMenu\";\r\nimport { handleMessageCommands } from \"./methods/handleMessageCommands\";\r\n\r\nexport interface DBIStore {\r\n get(key: string, defaultValue?: any): Promise<any>;\r\n set(key: string, value: any): Promise<void>;\r\n delete(key: string): Promise<void>;\r\n has(key: string): Promise<boolean>;\r\n}\r\n\r\nexport type DBIClientData<TNamespace extends NamespaceEnums> = { namespace: NamespaceData[TNamespace][\"clientNamespaces\"], token: string, options: Discord.ClientOptions, client: Discord.Client<true> };\r\n\r\nexport interface DBIConfig {\r\n discord: {\r\n namespace: string,\r\n token: string,\r\n options: Discord.ClientOptions,\r\n }[];\r\n defaults: {\r\n locale: TDBILocaleString,\r\n directMessages: boolean,\r\n defaultMemberPermissions: Discord.PermissionsString[]\r\n };\r\n\r\n sharding: \"hybrid\" | \"default\" | \"off\";\r\n /**\r\n * Persist store. (Default to MemoryStore thats not persis tho.)\r\n */\r\n store: DBIStore;\r\n\r\n references: {\r\n autoClear?: {\r\n check: number;\r\n ttl: number;\r\n }\r\n };\r\n\r\n strict: boolean;\r\n messageCommands?: {\r\n prefixes: string[];\r\n typeAliases: {\r\n booleans: Record<string, boolean>;\r\n }\r\n }\r\n}\r\n\r\nexport interface DBIConfigConstructor {\r\n discord: {\r\n token: string;\r\n options: Discord.ClientOptions\r\n } | {\r\n namespace: string,\r\n token: string,\r\n options: Discord.ClientOptions,\r\n }[];\r\n\r\n defaults?: {\r\n locale?: TDBILocaleString,\r\n directMessages?: boolean,\r\n defaultMemberPermissions?: Discord.PermissionsString[]\r\n };\r\n\r\n sharding?: \"hybrid\" | \"default\" | \"off\";\r\n /**\r\n * Persist store. (Default to MemoryStore thats not persis tho.)\r\n */\r\n store?: DBIStore;\r\n\r\n references?: {\r\n autoClear?: {\r\n check: number;\r\n ttl: number;\r\n }\r\n };\r\n\r\n data?: {\r\n other?: Record<string, any>;\r\n refs?: Map<string, { at: number, value: any, ttl?: number }>;\r\n }\r\n\r\n strict?: boolean;\r\n\r\n messageCommands?: {\r\n prefixes: string[];\r\n typeAliases?: {\r\n /**\r\n * Example: {\"yes\": true, \"no\": false}\r\n */\r\n booleans?: Record<string, boolean>;\r\n }\r\n }\r\n}\r\n\r\nexport interface DBIRegisterAPI<TNamespace extends NamespaceEnums> {\r\n ChatInput(cfg: TDBIChatInputOmitted<TNamespace>): DBIChatInput<TNamespace>;\r\n ChatInputOptions: DBIChatInputOptions<TNamespace>;\r\n Event(cfg: TDBIEventOmitted<TNamespace>): DBIEvent<TNamespace>;\r\n Locale(cfg: TDBILocaleConstructor<TNamespace>): DBILocale<TNamespace>;\r\n Button(cfg: TDBIButtonOmitted<TNamespace>): DBIButton<TNamespace>;\r\n StringSelectMenu(cfg: TDBIStringSelectMenuOmitted<TNamespace>): DBIStringSelectMenu<TNamespace>;\r\n UserSelectMenu(cfg: TDBIUserSelectMenuOmitted<TNamespace>): DBIUserSelectMenu<TNamespace>;\r\n RoleSelectMenu(cfg: TDBIRoleSelectMenuOmitted<TNamespace>): DBIRoleSelectMenu<TNamespace>;\r\n ChannelSelectMenu(cfg: TDBIChannelSelectMenuOmitted<TNamespace>): DBIChannelSelectMenu<TNamespace>;\r\n MentionableSelectMenu(cfg: TDBIMentionableSelectMenuOmitted<TNamespace>): DBIMentionableSelectMenu<TNamespace>;\r\n MessageContextMenu(cfg: TDBIMessageContextMenuOmitted<TNamespace>): DBIMessageContextMenu<TNamespace>;\r\n UserContextMenu(cfg: TDBIUserContextMenuOmitted<TNamespace>): DBIUserContextMenu<TNamespace>;\r\n InteractionLocale(cfg: TDBIInteractionLocaleOmitted): DBIInteractionLocale;\r\n Modal(cfg: TDBIModalOmitted<TNamespace>): DBIModal<TNamespace>;\r\n CustomEvent<T extends keyof NamespaceData[TNamespace][\"customEvents\"]>(cfg: TDBICustomEventOmitted<TNamespace, T>): DBICustomEvent<TNamespace, T>;\r\n onUnload(cb: () => Promise<any> | any): any;\r\n}\r\n\r\nexport class DBI<TNamespace extends NamespaceEnums, TOtherData = Record<string, any>> {\r\n namespace: TNamespace;\r\n config: DBIConfig;\r\n data: {\r\n interactions: Discord.Collection<string, TDBIInteractions<TNamespace>>;\r\n events: Discord.Collection<string, DBIEvent<TNamespace>>;\r\n locales: Discord.Collection<string, DBILocale<TNamespace>>;\r\n interactionLocales: Discord.Collection<string, DBIInteractionLocale>;\r\n other: TOtherData;\r\n eventMap: Record<string, string[] | { [k: string]: string }>;\r\n customEventNames: Set<string>;\r\n unloaders: Set<() => void>;\r\n registers: Set<(...args: any[]) => any>;\r\n registerUnloaders: Set<(...args: any[]) => any>;\r\n refs: Map<string, { at: number, value: any, ttl?: number }>;\r\n clients:\r\n & DBIClientData<TNamespace>[]\r\n & {\r\n next(key?: string): DBIClientData<TNamespace>,\r\n random(): DBIClientData<TNamespace>,\r\n random(size: number): DBIClientData<TNamespace>[],\r\n first(): DBIClientData<TNamespace>,\r\n get(namespace: NamespaceData[TNamespace][\"clientNamespaces\"]): DBIClientData<TNamespace>,\r\n indexes: Record<string, number>\r\n }\r\n };\r\n events: Events<TNamespace>;\r\n cluster?: Sharding.ClusterClient<Discord.Client>;\r\n private _loaded: boolean;\r\n private _hooked: boolean;\r\n constructor(namespace: TNamespace, config: DBIConfigConstructor) {\r\n this.namespace = namespace as any;\r\n const self = this;\r\n\r\n config.store = config.store as any || new MemoryStore();\r\n config.defaults = {\r\n locale: \"en\",\r\n defaultMemberPermissions: [],\r\n directMessages: false,\r\n ...(config.defaults || {})\r\n };\r\n config.sharding = config.sharding ?? \"off\";\r\n config.strict = config.strict ?? true;\r\n config.references = {\r\n autoClear: undefined,\r\n ...(config.references || {})\r\n }\r\n\r\n if (config.messageCommands) {\r\n if (config.strict && !config.messageCommands?.prefixes?.length) throw new Error(\"No message command prefixes provided.\"); \r\n\r\n let { typeAliases } = config.messageCommands;\r\n\r\n config.messageCommands.typeAliases = {\r\n booleans: typeAliases.booleans ?? {\r\n \"true\": true,\r\n \"false\": false,\r\n \"yes\": true,\r\n \"no\": false,\r\n \"y\": true,\r\n \"n\": false,\r\n \"1\": true,\r\n \"0\": false\r\n }\r\n };\r\n }\r\n\r\n // @ts-ignore\r\n this.config = config;\r\n\r\n this.data = {\r\n interactions: new Discord.Collection(),\r\n events: new Discord.Collection(),\r\n locales: new Discord.Collection(),\r\n interactionLocales: new Discord.Collection(),\r\n other: (config.data?.other as any) ?? ({} as TOtherData),\r\n eventMap: { ...eventMap },\r\n customEventNames: new Set(),\r\n unloaders: new Set(),\r\n registers: new Set(),\r\n registerUnloaders: new Set(),\r\n refs: config.data?.refs ?? new Map(),\r\n clients: Object.assign([], {\r\n next(key = \"global\") {\r\n this.indexes[key] = (((this.indexes[key] ?? -1) + 1) % this.length);\r\n return this[this.indexes[key]];\r\n },\r\n random(size?: number) {\r\n if (typeof size === \"number\") {\r\n return this.sort(() => Math.random() - 0.5).slice(0, size);\r\n } else {\r\n return this[Math.floor(Math.random() * this.length)];\r\n }\r\n },\r\n first() {\r\n return this[0];\r\n },\r\n get(namespace: string) {\r\n return this.find((i: any) => i.namespace === namespace);\r\n },\r\n indexes: {}\r\n }) as any\r\n }\r\n\r\n this.events = new Events(this as any);\r\n\r\n config.discord = Array.isArray(config.discord) ?\r\n config.discord :\r\n [{ token: config.discord.token, options: config.discord.options, namespace: \"default\" }];\r\n \r\n this.data.clients.push(...(\r\n config.discord as any\r\n ));\r\n for (let clientContext of this.data.clients) {\r\n let client = new Discord.Client({\r\n ...(clientContext.options || {}) as any,\r\n ...(config.sharding == \"hybrid\" ? {\r\n shards: Sharding.getInfo().SHARD_LIST,\r\n shardCount: Sharding.getInfo().TOTAL_SHARDS\r\n } : {})\r\n });\r\n clientContext.client = client as Discord.Client<true>;\r\n }\r\n\r\n if (this.data.clients.length === 0) throw new Error(\"No clients provided.\");\r\n if (this.data.clients.length !== 1 && !(config.sharding && config.sharding === \"off\"))\r\n throw new Error(\"Sharding only supports 1 client.\");\r\n\r\n this.cluster = config.sharding == \"hybrid\" ? new Sharding.ClusterClient(this.data.clients[0].client) : undefined;\r\n this._loaded = false;\r\n this._hooked = false;\r\n }\r\n\r\n private async _hookListeners() {\r\n if (this._hooked) return;\r\n const self = this;\r\n this._hooked = true;\r\n this.data.unloaders.add(hookInteractionListeners(this as any));\r\n this.data.unloaders.add(hookEventListeners(this as any));\r\n if (typeof this.config.references.autoClear !== \"undefined\") {\r\n this.data.unloaders.add((() => {\r\n let interval = setInterval(() => {\r\n this.data.refs.forEach(({ at, ttl }, key) => {\r\n if (Date.now() > (at + (ttl || this.config.references.autoClear.ttl))) {\r\n this.data.refs.delete(key);\r\n }\r\n });\r\n }, this.config.references.autoClear.check);\r\n return () => {\r\n clearInterval(interval);\r\n }\r\n })());\r\n }\r\n if (typeof this.config.messageCommands !== \"undefined\") {\r\n this.data.unloaders.add((() => {\r\n const { client } = this.client();\r\n\r\n function onMessage(message: Discord.Message) {\r\n handleMessageCommands(self as any, message);\r\n }\r\n\r\n client.on(\"messageCreate\", onMessage);\r\n return () => {\r\n client.off(\"messageCreate\", onMessage);\r\n }\r\n })());\r\n }\r\n }\r\n\r\n private async _unhookListeners() {\r\n if (!this._hooked) return;\r\n this._hooked = false;\r\n this.data.unloaders.forEach(f => {\r\n f();\r\n });\r\n }\r\n\r\n private async _unregisterAll() {\r\n for await (const cb of this.data.registerUnloaders) {\r\n await cb();\r\n }\r\n this.data.events.clear();\r\n this.data.interactions.clear();\r\n this.data.customEventNames.forEach((value) => {\r\n delete this.data.eventMap[value];\r\n });\r\n this.data.customEventNames.clear();\r\n }\r\n\r\n private async _registerAll() {\r\n const self = this;\r\n const ChatInputOptions = new DBIChatInputOptions(self);\r\n\r\n for await (const cb of this.data.registers) {\r\n let ChatInput = function (cfg: DBIChatInput<TNamespace>) {\r\n let dbiChatInput = new DBIChatInput(self, cfg);\r\n if (self.data.interactions.has(dbiChatInput.name)) throw new Error(`DBIChatInput \"${dbiChatInput.name}\" already loaded as \"${self.data.interactions.get(dbiChatInput.name)?.type}\"!`);\r\n self.data.interactions.set(dbiChatInput.name, dbiChatInput);\r\n return dbiChatInput;\r\n };\r\n ChatInput = Object.assign(ChatInput, class { constructor(...args: any[]) { return ChatInput.apply(this, args as any); } });\r\n\r\n let Event = function (cfg: TDBIEventOmitted<TNamespace>) {\r\n let dbiEvent = new DBIEvent(self as any, cfg);\r\n if (self.config.strict && self.data.events.has(dbiEvent.id || dbiEvent.name)) throw new Error(`DBIEvent \"${dbiEvent.id || dbiEvent.name}\" already loaded!`);\r\n self.data.events.set(dbiEvent.id || dbiEvent.name, dbiEvent);\r\n return dbiEvent;\r\n };\r\n Event = Object.assign(Event, class { constructor(...args: any[]) { return Event.apply(this, args as any); } });\r\n\r\n let Button = function (cfg: TDBIButtonOmitted<TNamespace>) {\r\n let dbiButton = new DBIButton(self as any, cfg);\r\n if (self.config.strict && self.data.interactions.has(dbiButton.name)) throw new Error(`DBIButton \"${dbiButton.name}\" already loaded as \"${self.data.interactions.get(dbiButton.name)?.type}\"!`);\r\n self.data.interactions.set(dbiButton.name, dbiButton as any);\r\n return dbiButton;\r\n };\r\n Button = Object.assign(Button, class { constructor(...args: any[]) { return Button.apply(this, args as any); } });\r\n\r\n let StringSelectMenu = function (cfg: TDBIStringSelectMenuOmitted<TNamespace>) {\r\n let dbiStringSelectMenu = new DBIStringSelectMenu(self as any, cfg);\r\n if (self.config.strict && self.data.interactions.has(dbiStringSelectMenu.name)) throw new Error(`DBIStringSelectMenu \"${dbiStringSelectMenu.name}\" already loaded as \"${self.data.interactions.get(dbiStringSelectMenu.name)?.type}\"!`);\r\n self.data.interactions.set(dbiStringSelectMenu.name, dbiStringSelectMenu as any);\r\n return dbiStringSelectMenu;\r\n };\r\n StringSelectMenu = Object.assign(StringSelectMenu, class { constructor(...args: any[]) { return StringSelectMenu.apply(this, args as any); } });\r\n\r\n let UserSelectMenu = function (cfg: TDBIUserSelectMenuOmitted<TNamespace>) {\r\n let dbiUserSelectMenu = new DBIUserSelectMenu(self as any, cfg);\r\n if (self.config.strict && self.data.interactions.has(dbiUserSelectMenu.name)) throw new Error(`DBIUserSelectMenu \"${dbiUserSelectMenu.name}\" already loaded as \"${self.data.interactions.get(dbiUserSelectMenu.name)?.type}\"!`);\r\n self.data.interactions.set(dbiUserSelectMenu.name, dbiUserSelectMenu as any);\r\n return dbiUserSelectMenu;\r\n };\r\n UserSelectMenu = Object.assign(UserSelectMenu, class { constructor(...args: any[]) { return UserSelectMenu.apply(this, args as any); } });\r\n\r\n let RoleSelectMenu = function (cfg: TDBIRoleSelectMenuOmitted<TNamespace>) {\r\n let dbiRoleSelectMenu = new DBIRoleSelectMenu(self as any, cfg);\r\n if (self.config.strict && self.data.interactions.has(dbiRoleSelectMenu.name)) throw new Error(`DBIRoleSelectMenu \"${dbiRoleSelectMenu.name}\" already loaded as \"${self.data.interactions.get(dbiRoleSelectMenu.name)?.type}\"!`);\r\n self.data.interactions.set(dbiRoleSelectMenu.name, dbiRoleSelectMenu as any);\r\n return dbiRoleSelectMenu;\r\n };\r\n RoleSelectMenu = Object.assign(RoleSelectMenu, class { constructor(...args: any[]) { return RoleSelectMenu.apply(this, args as any); } });\r\n\r\n let ChannelSelectMenu = function (cfg: TDBIChannelSelectMenuOmitted<TNamespace>) {\r\n let dbiChannelSelectMenu = new DBIChannelSelectMenu(self as any, cfg);\r\n if (self.config.strict && self.data.interactions.has(dbiChannelSelectMenu.name)) throw new Error(`DBIChannelSelectMenu \"${dbiChannelSelectMenu.name}\" already loaded as \"${self.data.interactions.get(dbiChannelSelectMenu.name)?.type}\"!`);\r\n self.data.interactions.set(dbiChannelSelectMenu.name, dbiChannelSelectMenu as any);\r\n return dbiChannelSelectMenu;\r\n };\r\n ChannelSelectMenu = Object.assign(ChannelSelectMenu, class { constructor(...args: any[]) { return ChannelSelectMenu.apply(this, args as any); } });\r\n\r\n let MentionableSelectMenu = function (cfg: TDBIMentionableSelectMenuOmitted<TNamespace>) {\r\n let dbiMentionableSelectMenu = new DBIMentionableSelectMenu(self as any, cfg);\r\n if (self.config.strict && self.data.interactions.has(dbiMentionableSelectMenu.name)) throw new Error(`DBIMentionableSelectMenu \"${dbiMentionableSelectMenu.name}\" already loaded as \"${self.data.interactions.get(dbiMentionableSelectMenu.name)?.type}\"!`);\r\n self.data.interactions.set(dbiMentionableSelectMenu.name, dbiMentionableSelectMenu as any);\r\n return dbiMentionableSelectMenu;\r\n };\r\n MentionableSelectMenu = Object.assign(MentionableSelectMenu, class { constructor(...args: any[]) { return MentionableSelectMenu.apply(this, args as any); } });\r\n\r\n let MessageContextMenu = function (cfg: TDBIMessageContextMenuOmitted<TNamespace>) {\r\n let dbiMessageContextMenu = new DBIMessageContextMenu(self as any, cfg);\r\n if (self.config.strict && self.data.interactions.has(dbiMessageContextMenu.name)) throw new Error(`DBIMessageContextMenu \"${dbiMessageContextMenu.name}\" already loaded as \"${self.data.interactions.get(dbiMessageContextMenu.name)?.type}\"!`);\r\n self.data.interactions.set(dbiMessageContextMenu.name, dbiMessageContextMenu as any);\r\n return dbiMessageContextMenu;\r\n };\r\n MessageContextMenu = Object.assign(MessageContextMenu, class { constructor(...args: any[]) { return MessageContextMenu.apply(this, args as any); } });\r\n\r\n let UserContextMenu = function (cfg: TDBIUserContextMenuOmitted<TNamespace>) {\r\n let dbiUserContextMenu = new DBIUserContextMenu(self as any, cfg);\r\n if (self.config.strict && self.data.interactions.has(dbiUserContextMenu.name)) throw new Error(`DBIUserContextMenu \"${dbiUserContextMenu.name}\" already loaded as \"${self.data.interactions.get(dbiUserContextMenu.name)?.type}\"!`);\r\n self.data.interactions.set(dbiUserContextMenu.name, dbiUserContextMenu as any);\r\n return dbiUserContextMenu;\r\n };\r\n UserContextMenu = Object.assign(UserContextMenu, class { constructor(...args: any[]) { return UserContextMenu.apply(this, args as any); } });\r\n\r\n let Modal = function (cfg: TDBIModalOmitted<TNamespace>) {\r\n let dbiModal = new DBIModal(self as any, cfg);\r\n if (self.config.strict && self.data.interactions.has(dbiModal.name)) throw new Error(`DBIModal \"${dbiModal.name}\" already loaded as \"${self.data.interactions.get(dbiModal.name)?.type}\"!`);\r\n self.data.interactions.set(dbiModal.name, dbiModal as any);\r\n return dbiModal;\r\n };\r\n Modal = Object.assign(Modal, class { constructor(...args: any[]) { return Modal.apply(this, args as any); } });\r\n\r\n let Locale = function (cfg: TDBILocaleConstructor<TNamespace>) {\r\n let dbiLocale = new DBILocale(self as any, cfg);\r\n if (self.config.strict && self.data.interactionLocales.has(dbiLocale.name)) throw new Error(`DBILocale \"${dbiLocale.name}\" already loaded!`);\r\n if (self.data.locales.has(dbiLocale.name)) dbiLocale.mergeLocale(self.data.locales.get(dbiLocale.name));\r\n self.data.locales.set(dbiLocale.name, dbiLocale);\r\n return dbiLocale;\r\n };\r\n Locale = Object.assign(Locale, class { constructor(...args: any[]) { return Locale.apply(this, args as any); } });\r\n\r\n let CustomEvent = function (cfg: TDBICustomEventOmitted<TNamespace>) {\r\n let dbiCustomEvent = new DBICustomEvent(self, cfg) as any;\r\n if (self.config.strict && self.data.eventMap[dbiCustomEvent.name]) throw new Error(`DBICustomEvent \"${dbiCustomEvent.name}\" already loaded!`);\r\n self.data.eventMap[dbiCustomEvent.name] = dbiCustomEvent.map;\r\n self.data.customEventNames.add(dbiCustomEvent.name);\r\n return dbiCustomEvent;\r\n };\r\n CustomEvent = Object.assign(CustomEvent, class { constructor(...args: any[]) { return CustomEvent.apply(this, args as any); } });\r\n\r\n let InteractionLocale = function (cfg: TDBIInteractionLocaleOmitted) {\r\n let dbiInteractionLocale = new DBIInteractionLocale(self, cfg);\r\n if (self.config.strict && self.data.interactionLocales.has(dbiInteractionLocale.name)) throw new Error(`DBIInteractionLocale \"${dbiInteractionLocale.name}\" already loaded!`);\r\n self.data.interactionLocales.set(dbiInteractionLocale.name, dbiInteractionLocale);\r\n return dbiInteractionLocale;\r\n };\r\n InteractionLocale = Object.assign(InteractionLocale, class { constructor(...args: any[]) { return InteractionLocale.apply(this, args as any); } });\r\n\r\n await cb({\r\n ChatInput,\r\n Event,\r\n ChatInputOptions,\r\n Locale,\r\n Button,\r\n StringSelectMenu,\r\n UserSelectMenu,\r\n RoleSelectMenu,\r\n ChannelSelectMenu,\r\n MentionableSelectMenu,\r\n MessageContextMenu,\r\n UserContextMenu,\r\n CustomEvent,\r\n Modal,\r\n InteractionLocale,\r\n onUnload(cb: () => Promise<any> | any) {\r\n self.data.registerUnloaders.add(cb);\r\n },\r\n });\r\n }\r\n self.data.interactions.sort((a, b) => a.name.length - b.name.length);\r\n }\r\n\r\n emit<TEventName extends keyof (NamespaceData[TNamespace][\"customEvents\"] & ClientEvents)>(name: TEventName, args: (NamespaceData[TNamespace][\"customEvents\"] & ClientEvents)[TEventName]): void {\r\n this.data.clients.forEach((d) => d.client.emit(name as any, { ...args, _DIRECT_: true } as any));\r\n }\r\n\r\n /**\r\n * this.data.interactions.get(name)\r\n */\r\n interaction<TInteractionName extends keyof NamespaceData[TNamespace][\"interactionMapping\"]>(name: TInteractionName): NamespaceData[TNamespace][\"interactionMapping\"][TInteractionName] {\r\n return this.data.interactions.get(name as any) as any;\r\n }\r\n\r\n client<TClientName extends NamespaceData[TNamespace][\"clientNamespaces\"]>(name?: TClientName): DBIClientData<TNamespace> {\r\n return name ? this.data.clients.get(name) : this.data.clients.first();\r\n }\r\n /**\r\n * this.data.events.get(name)\r\n */\r\n event<TEventName extends NamespaceData[TNamespace][\"eventNames\"]>(name: TEventName): DBIEvent<TNamespace> {\r\n return this.data.events.get(name);\r\n }\r\n\r\n /**\r\n * this.data.locales.get(name)\r\n */\r\n locale<TLocaleName extends NamespaceData[TNamespace][\"localeNames\"]>(name: TLocaleName): DBILocale<TNamespace> {\r\n return this.data.locales.get(name) as any;\r\n }\r\n\r\n /**\r\n * Shorthands for modifying `dbi.data.other`\r\n */\r\n get<K extends keyof TOtherData>(k: K, defaultValue?: TOtherData[K]): TOtherData[K] {\r\n if (defaultValue && !this.has(k as any)) {\r\n this.set(k, defaultValue);\r\n return defaultValue;\r\n }\r\n return _.get(this.data.other, k);\r\n }\r\n\r\n /**\r\n * Shorthands for modifying `dbi.data.other`\r\n */\r\n set<K extends keyof TOtherData>(k: K, v: TOtherData[K]): any {\r\n this.data.other = _.set(this.data.other as any, k, v);\r\n }\r\n\r\n /**\r\n * Shorthands for modifying `dbi.data.other`\r\n */\r\n has(k: string): boolean {\r\n return _.has(this.data.other, k as any);\r\n }\r\n\r\n /**\r\n * Shorthands for modifying `dbi.data.other`\r\n */\r\n delete(k: string): boolean {\r\n return _.unset(this.data.other, k);\r\n }\r\n\r\n async login(): Promise<any> {\r\n await aaq.quickForEach(this.data.clients, async (clientContext) => {\r\n await clientContext.client.login(this.config.sharding == \"default\" ? null : clientContext.token);\r\n });\r\n }\r\n\r\n async register(cb: (api: DBIRegisterAPI<TNamespace>) => void): Promise<any> {\r\n this.data.registers.add(cb);\r\n }\r\n\r\n async load(): Promise<boolean> {\r\n if (this._loaded) return false;\r\n await this._registerAll();\r\n await this._hookListeners();\r\n this._loaded = true;\r\n return true;\r\n }\r\n\r\n async unload(): Promise<boolean> {\r\n if (!this._loaded) return false;\r\n await this._unregisterAll();\r\n await this._unhookListeners();\r\n this._loaded = false;\r\n return true;\r\n }\r\n\r\n get loaded(): boolean {\r\n return this._loaded;\r\n }\r\n\r\n async publish(type: \"Global\", clear?: boolean): Promise<any>;\r\n async publish(type: \"Guild\", guildId: string, clear?: boolean): Promise<any>;\r\n\r\n async publish(...args: any[]) {\r\n let interactions = this.data.interactions.filter(i => i.type == \"ChatInput\" || i.type == \"MessageContextMenu\" || i.type == \"UserContextMenu\") as any;\r\n switch (args[0]) {\r\n case \"Global\": {\r\n return await publishInteractions(\r\n this.data.clients,\r\n args[1] ? new Discord.Collection() : interactions,\r\n this.data.interactionLocales,\r\n args[0]\r\n );\r\n }\r\n case \"Guild\": {\r\n return await publishInteractions(\r\n this.data.clients,\r\n args[2] ? new Discord.Collection() : interactions,\r\n this.data.interactionLocales,\r\n args[0],\r\n args[1]\r\n );\r\n }\r\n }\r\n }\r\n\r\n\r\n}"]}
@@ -1,9 +1,12 @@
1
1
  import { NamespaceEnums, NamespaceData } from "../generated/namespaceData";
2
2
  import { DBI } from "./DBI";
3
+ import { TDBIMessageCommandArgumentErrorTypes } from "./methods/handleMessageCommands";
3
4
  import { ClientEvents } from "./types/Event";
4
5
  import { IDBIBaseExecuteCtx, TDBIRateLimitTypes } from "./types/Interaction";
6
+ import { FakeMessageInteraction } from "./types/other/FakeMessageInteraction";
5
7
  import { DBILocale } from "./types/other/Locale";
6
- export type TDBIEventNames = "beforeInteraction" | "afterInteraction" | "interactionRateLimit" | "beforeEvent" | "afterEvent" | "interactionError" | "eventError";
8
+ import Discord from "discord.js";
9
+ export type TDBIEventNames = "beforeInteraction" | "afterInteraction" | "interactionRateLimit" | "beforeEvent" | "afterEvent" | "interactionError" | "eventError" | "messageCommandArgumentError";
7
10
  export type TDBIEventHandlerCtx<TNamespace extends NamespaceEnums> = {
8
11
  [K in keyof (ClientEvents & NamespaceData[TNamespace]["customEvents"])]: {
9
12
  other: Record<string, any>;
@@ -43,6 +46,19 @@ export declare class Events<TNamespace extends NamespaceEnums> {
43
46
  }) => Promise<boolean> | boolean, options?: {
44
47
  once: boolean;
45
48
  }): (() => any);
49
+ on(eventName: "messageCommandArgumentError", handler: (data: {
50
+ message: Discord.Message;
51
+ interaction: FakeMessageInteraction;
52
+ error: {
53
+ type: TDBIMessageCommandArgumentErrorTypes;
54
+ option: any;
55
+ index: number;
56
+ extra?: any;
57
+ };
58
+ value: any;
59
+ }) => Promise<boolean> | boolean, options?: {
60
+ once: boolean;
61
+ }): (() => any);
46
62
  off(eventName: TDBIEventNames, handler: (data: any) => Promise<boolean> | boolean): ((data: any) => boolean | Promise<boolean>)[];
47
63
  }
48
64
  //# sourceMappingURL=Events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Events.d.ts","sourceRoot":"","sources":["../src/Events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Events.js","sourceRoot":"","sources":["../src/Events.ts"],"names":[],"mappings":";;;AAeA,MAAa,MAAM;IACjB,GAAG,CAAkB;IACrB,QAAQ,CAAmE;IAC3E,YAAY,GAAoB;QAC9B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QAEf,IAAI,CAAC,QAAQ,GAAG;YACd,iBAAiB,EAAE,EAAE;YACrB,gBAAgB,EAAE,EAAE;YACpB,oBAAoB,EAAE,EAAE;YACxB,WAAW,EAAE,EAAE;YACf,UAAU,EAAE,EAAE;YACd,gBAAgB,EAAE,EAAE;YACpB,UAAU,EAAE,EAAE;SACf,CAAA;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAoB,EAAE,IAAS;QAC3C,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,QAAQ,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAC;SACrC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAuCD,EAAE,CAAC,SAAyB,EAAE,OAAkD,EAAE,UAA6B,EAAE,IAAI,EAAE,KAAK,EAAE;QAC5H,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC;YAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;QAC5E,IAAI,OAAO,CAAC,IAAI,EAAE;YAChB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE;gBACf,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;gBACvB,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC,CAAC;YACF,IAAI,CAAC,EAAE,CAAC,SAAgB,EAAE,CAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACrD,OAAO,GAAG,EAAE;gBACV,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YACzB,CAAC,CAAA;SACF;aAAM;YACL,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvC,OAAO,GAAG,EAAE;gBACV,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC/B,CAAC,CAAA;SACF;IACH,CAAC;IAED,GAAG,CAAC,SAAyB,EAAE,OAAkD;QAC/E,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC;YAAE,OAAO,EAAE,CAAC;QAClB,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC;CACF;AAzFD,wBAyFC","sourcesContent":["import { NamespaceEnums, NamespaceData } from \"../generated/namespaceData\";\r\nimport { DBI } from \"./DBI\";\r\nimport { TDBIMessageCommandArgumentErrorTypes } from \"./methods/handleMessageCommands\";\r\nimport { ClientEvents } from \"./types/Event\";\r\nimport { IDBIBaseExecuteCtx, TDBIRateLimitTypes } from \"./types/Interaction\";\r\nimport { FakeMessageInteraction } from \"./types/other/FakeMessageInteraction\";\r\nimport { DBILocale } from \"./types/other/Locale\";\r\nimport Discord from \"discord.js\";\r\n\r\nexport type TDBIEventNames = \"beforeInteraction\" | \"afterInteraction\" | \"interactionRateLimit\" | \"beforeEvent\" | \"afterEvent\" | \"interactionError\" | \"eventError\" | \"messageCommandArgumentError\";\r\n\r\nexport type TDBIEventHandlerCtx<TNamespace extends NamespaceEnums> = {\r\n [K in keyof (ClientEvents & NamespaceData[TNamespace][\"customEvents\"])]: { other: Record<string, any>, locale?: { guild: DBILocale<TNamespace> }, eventName: K } & (ClientEvents & NamespaceData[TNamespace][\"customEvents\"])[K]\r\n}[keyof (ClientEvents & NamespaceData[TNamespace][\"customEvents\"])];\r\n\r\nexport class Events<TNamespace extends NamespaceEnums> {\r\n DBI: DBI<TNamespace>;\r\n handlers: Record<string, Array<(data: any) => boolean | Promise<boolean>>>;\r\n constructor(DBI: DBI<TNamespace>) {\r\n this.DBI = DBI;\r\n\r\n this.handlers = {\r\n beforeInteraction: [],\r\n afterInteraction: [],\r\n interactionRateLimit: [],\r\n beforeEvent: [],\r\n afterEvent: [],\r\n interactionError: [],\r\n eventError: []\r\n }\r\n }\r\n \r\n async trigger(name: TDBIEventNames, data: any): Promise<boolean> {\r\n let handlers = this.handlers[name];\r\n if (!handlers) return true;\r\n for (let i = 0; i < handlers.length; i++) {\r\n const handler = handlers[i];\r\n let returned = await handler(data);\r\n if (returned !== true) return false;\r\n }\r\n return true;\r\n }\r\n \r\n\r\n on(\r\n eventName: \"beforeInteraction\" | \"afterInteraction\",\r\n handler: (data: IDBIBaseExecuteCtx<TNamespace>) => Promise<boolean> | boolean,\r\n options?: { once: boolean }\r\n ): (() => any);\r\n\r\n on(\r\n eventName: \"interactionError\",\r\n handler: (data: IDBIBaseExecuteCtx<TNamespace> & { error: any }) => Promise<boolean> | boolean,\r\n options?: { once: boolean }\r\n ): (() => any);\r\n\r\n on(\r\n eventName: \"beforeEvent\" | \"afterEvent\",\r\n handler: (data: TDBIEventHandlerCtx<TNamespace>) => Promise<boolean> | boolean,\r\n options?: { once: boolean }\r\n ): (() => any);\r\n\r\n on(\r\n eventName: \"eventError\",\r\n handler: (data: TDBIEventHandlerCtx<TNamespace> & { error: any }) => Promise<boolean> | boolean,\r\n options?: { once: boolean }\r\n ): (() => any);\r\n\r\n on(\r\n eventName: \"interactionRateLimit\",\r\n handler: (data: Omit<IDBIBaseExecuteCtx<TNamespace>, \"other\" | \"setRateLimit\"> & { rateLimit: { type: TDBIRateLimitTypes, duration: number, at: number } }) => Promise<boolean> | boolean,\r\n options?: { once: boolean }\r\n ): (() => any);\r\n\r\n on(\r\n eventName: \"messageCommandArgumentError\",\r\n handler: (data: { message: Discord.Message, interaction: FakeMessageInteraction, error: { type: TDBIMessageCommandArgumentErrorTypes, option: any, index: number, extra?: any }, value: any }) => Promise<boolean> | boolean,\r\n options?: { once: boolean }\r\n ): (() => any);\r\n\r\n on(eventName: TDBIEventNames, handler: (data: any) => Promise<boolean> | boolean, options: { once: boolean } = { once: false }): (() => any) {\r\n if (!this.handlers.hasOwnProperty(eventName)) this.handlers[eventName] = [];\r\n if (options.once) {\r\n let h = (data) => {\r\n this.off(eventName, h);\r\n return handler(data);\r\n };\r\n this.on(eventName as any, h as any, { once: false });\r\n return () => {\r\n this.off(eventName, h);\r\n }\r\n } else {\r\n this.handlers[eventName].push(handler);\r\n return () => {\r\n this.off(eventName, handler);\r\n }\r\n }\r\n }\r\n\r\n off(eventName: TDBIEventNames, handler: (data: any) => Promise<boolean> | boolean) {\r\n let l = this.handlers[eventName];\r\n if (!l) return [];\r\n return l.splice(l.indexOf(handler), 1);\r\n }\r\n}"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,GAAG,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGlD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,eAAO,MAAM,aAAa,QAA0C,CAAC;AAErE,wBAAgB,SAAS,CAAC,UAAU,SAAS,cAAc,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,oBAAoB,GAAG,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAE5K;AAED,eAAO,MAAM,KAAK;;;;;;CAMjB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AACA,+BAAkD;AAClD,6DAA0D;AAC1D,mDAAkD;AAAzC,0GAAA,WAAW,OAAA;AAEpB,wDAAwB;AACxB,+CAAgE;AAChE,uDAAoD;AACpD,6DAA0D;AAE7C,QAAA,aAAa,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;AAErE,SAAgB,SAAS,CAAsE,SAAqB,EAAE,GAAyB;IAC7I,OAAO,IAAI,SAAG,CAAyB,SAAS,EAAE,GAAG,CAAC,CAAC;AACzD,CAAC;AAFD,8BAEC;AAAA,CAAC;AAEW,QAAA,KAAK,GAAG;IACnB,aAAa,EAAb,wBAAa;IACb,aAAa,EAAb,wBAAa;IACb,eAAe,EAAf,iCAAe;IACf,YAAY,EAAZ,2BAAY;IACZ,eAAe,EAAf,iCAAe;CAChB,CAAC","sourcesContent":["import { NamespaceEnums } from \"../generated/namespaceData\";\r\nimport { DBI, DBIConfigConstructor } from \"./DBI\";\r\nimport { recursiveImport } from \"./utils/recursiveImport\";\r\nexport { MemoryStore } from \"./utils/MemoryStore\";\r\n\r\nimport path from \"path\";\r\nimport { parseCustomId, buildCustomId } from \"./utils/customId\";\r\nimport { unloadModule } from \"./utils/unloadModule\";\r\nimport { recursiveUnload } from \"./utils/recursiveUnload\";\r\n\r\nexport const generatedPath = path.resolve(__dirname, \"../generated\");\r\n\r\nexport function createDBI<TNamespace extends NamespaceEnums, TOtherType = Record<string, any>>(namespace: TNamespace, cfg: DBIConfigConstructor): DBI<TNamespace, TOtherType> {\r\n return new DBI<TNamespace, TOtherType>(namespace, cfg);\r\n};\r\n\r\nexport const Utils = {\r\n parseCustomId,\r\n buildCustomId,\r\n recursiveImport,\r\n unloadModule,\r\n recursiveUnload\r\n};"]}
@@ -0,0 +1,6 @@
1
+ import { Message } from "discord.js";
2
+ import { NamespaceEnums } from "../../generated/namespaceData";
3
+ import { DBI } from "../DBI";
4
+ export type TDBIMessageCommandArgumentErrorTypes = "MissingRequiredOption" | "MinLength" | "MaxLength" | "InvalidChoice" | "InvalidInteger" | "MinInteger" | "MaxInteger" | "InvalidNumber" | "MinNumber" | "MaxNumber" | "InvalidBoolean" | "InvalidUser" | "InvalidChannel" | "InvalidRole" | "InvalidMentionable" | "InvalidCompleteChoice";
5
+ export declare function handleMessageCommands(dbi: DBI<NamespaceEnums>, message: Message): Promise<void>;
6
+ //# sourceMappingURL=handleMessageCommands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleMessageCommands.d.ts","sourceRoot":"","sources":["../../src/methods/handleMessageCommands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuD,OAAO,EAAgD,MAAM,YAAY,CAAC;AACxI,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAO7B,MAAM,MAAM,oCAAoC,GAAG,uBAAuB,GAAG,WAAW,GAAG,WAAW,GAAG,eAAe,GAAG,gBAAgB,GAAG,YAAY,GAAG,YAAY,GAAG,eAAe,GAAG,WAAW,GAAG,WAAW,GAAG,gBAAgB,GAAG,aAAa,GAAG,gBAAgB,GAAG,aAAa,GAAG,oBAAoB,GAAG,uBAAuB,CAAC;AAE/U,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,OAAO,iBA0SrF"}
@@ -0,0 +1,301 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleMessageCommands = void 0;
4
+ const discord_js_1 = require("discord.js");
5
+ const FakeMessageInteraction_1 = require("../types/other/FakeMessageInteraction");
6
+ const INTEGER_REGEX = /^-?\d+$/;
7
+ const NUMBER_REGEX = /^-?\d+(?:\.\d+)?$/;
8
+ async function handleMessageCommands(dbi, message) {
9
+ const chatInputs = dbi.data.interactions.filter(i => i.type === "ChatInput");
10
+ const prefixes = dbi.config.messageCommands.prefixes ?? [];
11
+ if (!prefixes.length)
12
+ return;
13
+ const content = message.content;
14
+ const usedPrefix = prefixes.find(p => content.startsWith(p));
15
+ if (!usedPrefix)
16
+ return;
17
+ const contentWithoutPrefix = content.slice(usedPrefix?.length ?? 0);
18
+ const contentLower = contentWithoutPrefix.toLowerCase();
19
+ let locale = message.guild.preferredLocale?.split("-")?.at(0) || dbi.config.defaults.locale;
20
+ let usedAlias;
21
+ let chatInput = chatInputs.find(i => {
22
+ let found = contentLower.startsWith(i.name);
23
+ if (found)
24
+ return true;
25
+ let alias = i.other?.messageCommand?.aliases?.find(a => contentLower.startsWith(a));
26
+ if (alias) {
27
+ usedAlias = alias;
28
+ return true;
29
+ }
30
+ return false;
31
+ });
32
+ let commandName = usedAlias ?? chatInput?.name;
33
+ if (!chatInput) {
34
+ fLoop: for (const [localeInterName, localeData] of dbi.data.interactionLocales) {
35
+ for (const [localeName, translation] of Object.entries(localeData.data || {})) {
36
+ if (contentLower.startsWith(translation.name)) {
37
+ commandName = translation.name;
38
+ locale = localeName;
39
+ chatInput = chatInputs.find(i => i.name === localeData.name);
40
+ break fLoop;
41
+ }
42
+ }
43
+ }
44
+ }
45
+ if (!chatInput)
46
+ return;
47
+ const interaction = new FakeMessageInteraction_1.FakeMessageInteraction(dbi, message, chatInput, locale, commandName, usedPrefix);
48
+ if (chatInput.options.length) {
49
+ let errorType;
50
+ let lastOption;
51
+ let lastValue;
52
+ let lastExtra;
53
+ let lastIndex;
54
+ for (let i = 0; i < chatInput.options.length; i++) {
55
+ lastIndex = i;
56
+ const option = interaction.dbiChatInputOptions[i];
57
+ const value = interaction.parsedArgs.get(option.name)?.value;
58
+ lastOption = option;
59
+ lastValue = value;
60
+ switch (option.type) {
61
+ case discord_js_1.ApplicationCommandOptionType.String: {
62
+ if (option.autocomplete && option.onComplete) {
63
+ let choices = await option.onComplete({
64
+ interaction,
65
+ value
66
+ });
67
+ if (!choices.length)
68
+ choices = await option.onComplete({
69
+ interaction,
70
+ value: ""
71
+ });
72
+ if (choices.length > 20)
73
+ throw new Error("Autocomplete returned more than 20 choices.");
74
+ lastExtra = choices;
75
+ if (!choices.find(c => c.name === value || c.value === value)) {
76
+ if (value) {
77
+ errorType = "InvalidCompleteChoice";
78
+ break;
79
+ }
80
+ else if (option.required && !value) {
81
+ errorType = "MissingRequiredOption";
82
+ break;
83
+ }
84
+ }
85
+ option._choices = choices;
86
+ }
87
+ if (option.choices) {
88
+ const localeData = dbi.data.interactionLocales.get(chatInput.name)?.data;
89
+ const choicesLocaleData = localeData?.[locale]?.options?.[option.name]?.choices;
90
+ if (!option.choices.find(c => c.name === value || c.value === value || (choicesLocaleData?.[c.value] && choicesLocaleData?.[c.value] === value))) {
91
+ lastExtra = option.choices.map(c => ({ name: choicesLocaleData?.[c.value] ?? c.name, value: c.value }));
92
+ if (value) {
93
+ errorType = "InvalidChoice";
94
+ break;
95
+ }
96
+ else if (option.required && !value) {
97
+ errorType = "MissingRequiredOption";
98
+ break;
99
+ }
100
+ }
101
+ break;
102
+ }
103
+ if (option.minLength && value.length < option.minLength) {
104
+ errorType = "MinLength";
105
+ break;
106
+ }
107
+ if (option.maxLength && value.length > option.maxLength) {
108
+ errorType = "MaxLength";
109
+ break;
110
+ }
111
+ break;
112
+ }
113
+ case discord_js_1.ApplicationCommandOptionType.Integer: {
114
+ let parsedInt = parseInt(value);
115
+ if (option.autocomplete && option.onComplete) {
116
+ let choices = await option.onComplete({
117
+ interaction,
118
+ value
119
+ });
120
+ if (!choices.length)
121
+ choices = await option.onComplete({
122
+ interaction,
123
+ value: ""
124
+ });
125
+ if (choices.length > 20)
126
+ throw new Error("Autocomplete returned more than 20 choices.");
127
+ lastExtra = choices;
128
+ if (!choices.find(c => c.value === parsedInt || c.name === value)) {
129
+ if (value) {
130
+ errorType = "InvalidCompleteChoice";
131
+ break;
132
+ }
133
+ else if (option.required && !value) {
134
+ errorType = "MissingRequiredOption";
135
+ break;
136
+ }
137
+ }
138
+ option._choices = choices;
139
+ break;
140
+ }
141
+ if (option.choices) {
142
+ const localeData = dbi.data.interactionLocales.get(chatInput.name)?.data;
143
+ const choicesLocaleData = localeData?.[locale]?.options?.[option.name]?.choices;
144
+ if (!option.choices.find(c => c.value === parsedInt || c.name === value || (choicesLocaleData?.[c.value] && choicesLocaleData?.[c.value] === value))) {
145
+ lastExtra = option.choices.map(c => ({ name: choicesLocaleData?.[c.value] ?? c.name, value: c.value }));
146
+ if (value) {
147
+ errorType = "InvalidChoice";
148
+ break;
149
+ }
150
+ else if (option.required && !value) {
151
+ errorType = "MissingRequiredOption";
152
+ break;
153
+ }
154
+ }
155
+ break;
156
+ }
157
+ if (!INTEGER_REGEX.test(value)) {
158
+ errorType = "InvalidInteger";
159
+ break;
160
+ }
161
+ if (option.minValue && parsedInt < option.minValue) {
162
+ errorType = "MinInteger";
163
+ break;
164
+ }
165
+ if (option.maxValue && parsedInt > option.maxValue) {
166
+ errorType = "MaxInteger";
167
+ break;
168
+ }
169
+ break;
170
+ }
171
+ case discord_js_1.ApplicationCommandOptionType.Number: {
172
+ let parsedFloat = parseFloat(value);
173
+ if (option.autocomplete && option.onComplete) {
174
+ let choices = await option.onComplete({
175
+ interaction,
176
+ value
177
+ });
178
+ if (!choices.length)
179
+ choices = await option.onComplete({
180
+ interaction,
181
+ value: ""
182
+ });
183
+ if (choices.length > 20)
184
+ throw new Error("Autocomplete returned more than 20 choices.");
185
+ lastExtra = choices;
186
+ if (!choices.find(c => c.value === parsedFloat || c.name === value)) {
187
+ if (value) {
188
+ errorType = "InvalidCompleteChoice";
189
+ break;
190
+ }
191
+ else if (option.required && !value) {
192
+ errorType = "MissingRequiredOption";
193
+ break;
194
+ }
195
+ }
196
+ option._choices = choices;
197
+ break;
198
+ }
199
+ if (option.choices) {
200
+ const localeData = dbi.data.interactionLocales.get(chatInput.name)?.data;
201
+ const choicesLocaleData = localeData?.[locale]?.options?.[option.name]?.choices;
202
+ if (!option.choices.find(c => c.value === parsedFloat || c.name === value || (choicesLocaleData?.[c.value] && choicesLocaleData?.[c.value] === value))) {
203
+ lastExtra = option.choices.map(c => ({ name: choicesLocaleData?.[c.value] ?? c.name, value: c.value }));
204
+ if (value) {
205
+ errorType = "InvalidChoice";
206
+ break;
207
+ }
208
+ else if (option.required && !value) {
209
+ errorType = "MissingRequiredOption";
210
+ break;
211
+ }
212
+ }
213
+ break;
214
+ }
215
+ if (!NUMBER_REGEX.test(value)) {
216
+ errorType = "InvalidNumber";
217
+ break;
218
+ }
219
+ if (option.minValue && parsedFloat < option.minValue) {
220
+ errorType = "MinNumber";
221
+ break;
222
+ }
223
+ if (option.maxValue && parsedFloat > option.maxValue) {
224
+ errorType = "MaxNumber";
225
+ break;
226
+ }
227
+ break;
228
+ }
229
+ case discord_js_1.ApplicationCommandOptionType.Boolean: {
230
+ let boolKeys = Object.keys(dbi.config.messageCommands.typeAliases.booleans);
231
+ if (!boolKeys.includes(value.toLowerCase())) {
232
+ errorType = "InvalidBoolean";
233
+ break;
234
+ }
235
+ break;
236
+ }
237
+ case discord_js_1.ApplicationCommandOptionType.User: {
238
+ if (!interaction.options.getUser(option.name)) {
239
+ errorType = "InvalidUser";
240
+ break;
241
+ }
242
+ break;
243
+ }
244
+ case discord_js_1.ApplicationCommandOptionType.Channel: {
245
+ if (!interaction.options.getChannel(option.name, null, option.channelTypes)) {
246
+ errorType = "InvalidChannel";
247
+ break;
248
+ }
249
+ break;
250
+ }
251
+ case discord_js_1.ApplicationCommandOptionType.Role: {
252
+ if (!interaction.options.getRole(option.name)) {
253
+ errorType = "InvalidRole";
254
+ break;
255
+ }
256
+ break;
257
+ }
258
+ case discord_js_1.ApplicationCommandOptionType.Mentionable: {
259
+ if (!interaction.options.getMentionable(option.name)) {
260
+ errorType = "InvalidMentionable";
261
+ break;
262
+ }
263
+ break;
264
+ }
265
+ case discord_js_1.ApplicationCommandOptionType.Attachment: {
266
+ if (option.required && !value) {
267
+ errorType = "MissingRequiredOption";
268
+ }
269
+ break;
270
+ }
271
+ }
272
+ if (errorType) {
273
+ break;
274
+ }
275
+ else {
276
+ lastExtra = null;
277
+ lastIndex = null;
278
+ lastOption = null;
279
+ lastValue = null;
280
+ }
281
+ }
282
+ if (errorType) {
283
+ let res = await dbi.events.trigger("messageCommandArgumentError", {
284
+ interaction,
285
+ message,
286
+ error: {
287
+ type: errorType,
288
+ option: lastOption,
289
+ extra: lastExtra,
290
+ index: lastIndex
291
+ },
292
+ value: lastValue
293
+ });
294
+ if (!res)
295
+ return;
296
+ }
297
+ }
298
+ dbi.data.clients.first().client.emit("interactionCreate", interaction);
299
+ }
300
+ exports.handleMessageCommands = handleMessageCommands;
301
+ //# sourceMappingURL=handleMessageCommands.js.map