@buape/carbon 0.9.0 → 0.11.0

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 (207) hide show
  1. package/dist/package.json +5 -5
  2. package/dist/src/abstracts/AnySelectMenu.d.ts +1 -0
  3. package/dist/src/abstracts/AnySelectMenu.d.ts.map +1 -1
  4. package/dist/src/abstracts/AnySelectMenu.js +11 -3
  5. package/dist/src/abstracts/AnySelectMenu.js.map +1 -1
  6. package/dist/src/abstracts/BaseChannel.d.ts +7 -1
  7. package/dist/src/abstracts/BaseChannel.d.ts.map +1 -1
  8. package/dist/src/abstracts/BaseChannel.js +18 -10
  9. package/dist/src/abstracts/BaseChannel.js.map +1 -1
  10. package/dist/src/abstracts/BaseCommand.d.ts +7 -5
  11. package/dist/src/abstracts/BaseCommand.d.ts.map +1 -1
  12. package/dist/src/abstracts/BaseCommand.js +4 -2
  13. package/dist/src/abstracts/BaseCommand.js.map +1 -1
  14. package/dist/src/abstracts/BaseComponent.d.ts +1 -1
  15. package/dist/src/abstracts/BaseComponent.d.ts.map +1 -1
  16. package/dist/src/abstracts/BaseComponentInteraction.d.ts.map +1 -1
  17. package/dist/src/abstracts/BaseComponentInteraction.js +2 -0
  18. package/dist/src/abstracts/BaseComponentInteraction.js.map +1 -1
  19. package/dist/src/abstracts/BaseGuildChannel.d.ts +0 -9
  20. package/dist/src/abstracts/BaseGuildChannel.d.ts.map +1 -1
  21. package/dist/src/abstracts/BaseGuildChannel.js +0 -20
  22. package/dist/src/abstracts/BaseGuildChannel.js.map +1 -1
  23. package/dist/src/abstracts/BaseGuildTextChannel.d.ts +10 -3
  24. package/dist/src/abstracts/BaseGuildTextChannel.d.ts.map +1 -1
  25. package/dist/src/abstracts/BaseGuildTextChannel.js +16 -4
  26. package/dist/src/abstracts/BaseGuildTextChannel.js.map +1 -1
  27. package/dist/src/abstracts/BaseInteraction.d.ts +13 -4
  28. package/dist/src/abstracts/BaseInteraction.d.ts.map +1 -1
  29. package/dist/src/abstracts/BaseInteraction.js +36 -23
  30. package/dist/src/abstracts/BaseInteraction.js.map +1 -1
  31. package/dist/src/abstracts/BaseMessageInteractiveComponent.d.ts +7 -5
  32. package/dist/src/abstracts/BaseMessageInteractiveComponent.d.ts.map +1 -1
  33. package/dist/src/abstracts/BaseMessageInteractiveComponent.js +4 -2
  34. package/dist/src/abstracts/BaseMessageInteractiveComponent.js.map +1 -1
  35. package/dist/src/abstracts/BaseModalComponent.d.ts +3 -24
  36. package/dist/src/abstracts/BaseModalComponent.d.ts.map +1 -1
  37. package/dist/src/abstracts/BaseModalComponent.js +0 -28
  38. package/dist/src/abstracts/BaseModalComponent.js.map +1 -1
  39. package/dist/src/abstracts/GuildThreadOnlyChannel.d.ts +16 -1
  40. package/dist/src/abstracts/GuildThreadOnlyChannel.d.ts.map +1 -1
  41. package/dist/src/abstracts/GuildThreadOnlyChannel.js +33 -0
  42. package/dist/src/abstracts/GuildThreadOnlyChannel.js.map +1 -1
  43. package/dist/src/classes/Client.d.ts +7 -4
  44. package/dist/src/classes/Client.d.ts.map +1 -1
  45. package/dist/src/classes/Client.js +15 -4
  46. package/dist/src/classes/Client.js.map +1 -1
  47. package/dist/src/classes/ClientWithCaching.d.ts +51 -0
  48. package/dist/src/classes/ClientWithCaching.d.ts.map +1 -0
  49. package/dist/src/classes/ClientWithCaching.js +108 -0
  50. package/dist/src/classes/ClientWithCaching.js.map +1 -0
  51. package/dist/src/classes/Command.d.ts +4 -1
  52. package/dist/src/classes/Command.d.ts.map +1 -1
  53. package/dist/src/classes/Command.js +12 -1
  54. package/dist/src/classes/Command.js.map +1 -1
  55. package/dist/src/classes/Listener.d.ts.map +1 -1
  56. package/dist/src/classes/Listener.js +1 -1
  57. package/dist/src/classes/Listener.js.map +1 -1
  58. package/dist/src/classes/Modal.d.ts +2 -3
  59. package/dist/src/classes/Modal.d.ts.map +1 -1
  60. package/dist/src/classes/Modal.js +1 -1
  61. package/dist/src/classes/Modal.js.map +1 -1
  62. package/dist/src/classes/components/Container.d.ts +2 -1
  63. package/dist/src/classes/components/Container.d.ts.map +1 -1
  64. package/dist/src/classes/components/Container.js.map +1 -1
  65. package/dist/src/classes/components/Label.d.ts +27 -0
  66. package/dist/src/classes/components/Label.d.ts.map +1 -0
  67. package/dist/src/classes/components/Label.js +32 -0
  68. package/dist/src/classes/components/Label.js.map +1 -0
  69. package/dist/src/classes/components/ModalStringSelectMenu.d.ts +10 -0
  70. package/dist/src/classes/components/ModalStringSelectMenu.d.ts.map +1 -0
  71. package/dist/src/classes/components/ModalStringSelectMenu.js +15 -0
  72. package/dist/src/classes/components/ModalStringSelectMenu.js.map +1 -0
  73. package/dist/src/classes/components/Row.d.ts +3 -4
  74. package/dist/src/classes/components/Row.d.ts.map +1 -1
  75. package/dist/src/classes/components/Row.js +0 -1
  76. package/dist/src/classes/components/Row.js.map +1 -1
  77. package/dist/src/classes/components/TextInput.d.ts +17 -4
  78. package/dist/src/classes/components/TextInput.d.ts.map +1 -1
  79. package/dist/src/classes/components/TextInput.js +14 -1
  80. package/dist/src/classes/components/TextInput.js.map +1 -1
  81. package/dist/src/functions/channelFactory.d.ts +2 -2
  82. package/dist/src/functions/channelFactory.d.ts.map +1 -1
  83. package/dist/src/index.d.ts +5 -0
  84. package/dist/src/index.d.ts.map +1 -1
  85. package/dist/src/index.js +6 -0
  86. package/dist/src/index.js.map +1 -1
  87. package/dist/src/internals/Cache.d.ts +76 -0
  88. package/dist/src/internals/Cache.d.ts.map +1 -0
  89. package/dist/src/internals/Cache.js +122 -0
  90. package/dist/src/internals/Cache.js.map +1 -0
  91. package/dist/src/internals/CommandHandler.d.ts +1 -0
  92. package/dist/src/internals/CommandHandler.d.ts.map +1 -1
  93. package/dist/src/internals/CommandHandler.js +45 -13
  94. package/dist/src/internals/CommandHandler.js.map +1 -1
  95. package/dist/src/internals/ComponentHandler.d.ts.map +1 -1
  96. package/dist/src/internals/ComponentHandler.js +84 -12
  97. package/dist/src/internals/ComponentHandler.js.map +1 -1
  98. package/dist/src/internals/FieldsHandler.d.ts +10 -2
  99. package/dist/src/internals/FieldsHandler.d.ts.map +1 -1
  100. package/dist/src/internals/FieldsHandler.js +32 -7
  101. package/dist/src/internals/FieldsHandler.js.map +1 -1
  102. package/dist/src/internals/OptionsHandler.d.ts.map +1 -1
  103. package/dist/src/internals/OptionsHandler.js +12 -4
  104. package/dist/src/internals/OptionsHandler.js.map +1 -1
  105. package/dist/src/permissions.d.ts +1 -0
  106. package/dist/src/permissions.d.ts.map +1 -1
  107. package/dist/src/plugins/gateway/GatewayPlugin.d.ts +46 -2
  108. package/dist/src/plugins/gateway/GatewayPlugin.d.ts.map +1 -1
  109. package/dist/src/plugins/gateway/GatewayPlugin.js +120 -6
  110. package/dist/src/plugins/gateway/GatewayPlugin.js.map +1 -1
  111. package/dist/src/plugins/gateway/types.d.ts +58 -0
  112. package/dist/src/plugins/gateway/types.d.ts.map +1 -1
  113. package/dist/src/plugins/gateway/types.js.map +1 -1
  114. package/dist/src/plugins/gateway/utils/payload.d.ts +7 -5
  115. package/dist/src/plugins/gateway/utils/payload.d.ts.map +1 -1
  116. package/dist/src/plugins/gateway/utils/payload.js +18 -0
  117. package/dist/src/plugins/gateway/utils/payload.js.map +1 -1
  118. package/dist/src/plugins/gateway/utils/rateLimit.d.ts +41 -0
  119. package/dist/src/plugins/gateway/utils/rateLimit.d.ts.map +1 -0
  120. package/dist/src/plugins/gateway/utils/rateLimit.js +61 -0
  121. package/dist/src/plugins/gateway/utils/rateLimit.js.map +1 -0
  122. package/dist/src/plugins/gateway-forwarder/ShardedGatewayForwarderPlugin.d.ts +1 -0
  123. package/dist/src/plugins/gateway-forwarder/ShardedGatewayForwarderPlugin.d.ts.map +1 -1
  124. package/dist/src/plugins/gateway-forwarder/ShardedGatewayForwarderPlugin.js +1 -0
  125. package/dist/src/plugins/gateway-forwarder/ShardedGatewayForwarderPlugin.js.map +1 -1
  126. package/dist/src/plugins/paginator/GoToPageModal.d.ts +18 -0
  127. package/dist/src/plugins/paginator/GoToPageModal.d.ts.map +1 -0
  128. package/dist/src/plugins/paginator/GoToPageModal.js +56 -0
  129. package/dist/src/plugins/paginator/GoToPageModal.js.map +1 -0
  130. package/dist/src/plugins/paginator/Paginator.d.ts +2 -0
  131. package/dist/src/plugins/paginator/Paginator.d.ts.map +1 -1
  132. package/dist/src/plugins/paginator/Paginator.js +40 -12
  133. package/dist/src/plugins/paginator/Paginator.js.map +1 -1
  134. package/dist/src/plugins/paginator/index.d.ts +2 -1
  135. package/dist/src/plugins/paginator/index.d.ts.map +1 -1
  136. package/dist/src/plugins/paginator/index.js +2 -1
  137. package/dist/src/plugins/paginator/index.js.map +1 -1
  138. package/dist/src/plugins/sharding/ShardingPlugin.d.ts +2 -1
  139. package/dist/src/plugins/sharding/ShardingPlugin.d.ts.map +1 -1
  140. package/dist/src/plugins/sharding/ShardingPlugin.js +9 -1
  141. package/dist/src/plugins/sharding/ShardingPlugin.js.map +1 -1
  142. package/dist/src/structures/DmChannel.d.ts +1 -2
  143. package/dist/src/structures/DmChannel.d.ts.map +1 -1
  144. package/dist/src/structures/DmChannel.js.map +1 -1
  145. package/dist/src/structures/GroupDmChannel.d.ts +1 -2
  146. package/dist/src/structures/GroupDmChannel.d.ts.map +1 -1
  147. package/dist/src/structures/GroupDmChannel.js.map +1 -1
  148. package/dist/src/structures/Guild.d.ts +6 -2
  149. package/dist/src/structures/Guild.d.ts.map +1 -1
  150. package/dist/src/structures/Guild.js +102 -94
  151. package/dist/src/structures/Guild.js.map +1 -1
  152. package/dist/src/structures/GuildAnnouncementChannel.d.ts +10 -0
  153. package/dist/src/structures/GuildAnnouncementChannel.d.ts.map +1 -1
  154. package/dist/src/structures/GuildAnnouncementChannel.js +20 -0
  155. package/dist/src/structures/GuildAnnouncementChannel.js.map +1 -1
  156. package/dist/src/structures/GuildCategoryChannel.d.ts +11 -1
  157. package/dist/src/structures/GuildCategoryChannel.d.ts.map +1 -1
  158. package/dist/src/structures/GuildCategoryChannel.js +21 -0
  159. package/dist/src/structures/GuildCategoryChannel.js.map +1 -1
  160. package/dist/src/structures/GuildMember.d.ts +6 -2
  161. package/dist/src/structures/GuildMember.d.ts.map +1 -1
  162. package/dist/src/structures/GuildMember.js +35 -27
  163. package/dist/src/structures/GuildMember.js.map +1 -1
  164. package/dist/src/structures/GuildStageOrVoiceChannel.d.ts +9 -0
  165. package/dist/src/structures/GuildStageOrVoiceChannel.d.ts.map +1 -1
  166. package/dist/src/structures/GuildStageOrVoiceChannel.js +21 -1
  167. package/dist/src/structures/GuildStageOrVoiceChannel.js.map +1 -1
  168. package/dist/src/structures/GuildTextChannel.d.ts +10 -1
  169. package/dist/src/structures/GuildTextChannel.d.ts.map +1 -1
  170. package/dist/src/structures/GuildTextChannel.js +21 -0
  171. package/dist/src/structures/GuildTextChannel.js.map +1 -1
  172. package/dist/src/structures/Message.d.ts +9 -5
  173. package/dist/src/structures/Message.d.ts.map +1 -1
  174. package/dist/src/structures/Message.js +77 -65
  175. package/dist/src/structures/Message.js.map +1 -1
  176. package/dist/src/structures/Poll.d.ts +5 -1
  177. package/dist/src/structures/Poll.d.ts.map +1 -1
  178. package/dist/src/structures/Poll.js +15 -9
  179. package/dist/src/structures/Poll.js.map +1 -1
  180. package/dist/src/structures/Role.d.ts +5 -1
  181. package/dist/src/structures/Role.d.ts.map +1 -1
  182. package/dist/src/structures/Role.js +37 -29
  183. package/dist/src/structures/Role.js.map +1 -1
  184. package/dist/src/structures/ThreadMember.d.ts +5 -1
  185. package/dist/src/structures/ThreadMember.d.ts.map +1 -1
  186. package/dist/src/structures/ThreadMember.js +21 -13
  187. package/dist/src/structures/ThreadMember.js.map +1 -1
  188. package/dist/src/structures/User.d.ts +5 -1
  189. package/dist/src/structures/User.d.ts.map +1 -1
  190. package/dist/src/structures/User.js +32 -24
  191. package/dist/src/structures/User.js.map +1 -1
  192. package/dist/src/structures/Webhook.d.ts +5 -1
  193. package/dist/src/structures/Webhook.d.ts.map +1 -1
  194. package/dist/src/structures/Webhook.js +32 -24
  195. package/dist/src/structures/Webhook.js.map +1 -1
  196. package/dist/src/types/index.d.ts +10 -0
  197. package/dist/src/types/index.d.ts.map +1 -1
  198. package/dist/src/types/index.js.map +1 -1
  199. package/dist/src/types/listeners.d.ts +25 -19
  200. package/dist/src/types/listeners.d.ts.map +1 -1
  201. package/dist/src/types/listeners.js +1 -1
  202. package/dist/src/types/listeners.js.map +1 -1
  203. package/dist/src/utils/customIdParser.d.ts.map +1 -1
  204. package/dist/src/utils/customIdParser.js +21 -4
  205. package/dist/src/utils/customIdParser.js.map +1 -1
  206. package/dist/tsconfig.tsbuildinfo +1 -1
  207. package/package.json +5 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Label.js","sourceRoot":"","sources":["../../../../src/classes/components/Label.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,aAAa,EACb,MAAM,uBAAuB,CAAA;AAC9B,yEAAyE;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAI1E,MAAM,OAAgB,KAAM,SAAQ,kBAAkB;IAC5C,IAAI,GAAG,aAAa,CAAC,KAAK,CAAA;IAC1B,IAAI,GAAG,KAAK,CAAA;IAOrB;;OAEG;IACH,WAAW,CAAS;IAEpB;;OAEG;IACH,SAAS,CAA8B;IAEvC;;OAEG;IACH,QAAQ,GAAG,OAAO,CAAA;IAElB,YAAY,SAAuC;QAClD,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC3B,CAAC;IAED,SAAS,GAAG,GAAsB,EAAE;QACnC,OAAO;YACN,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAA8B;SACjE,CAAA;IACF,CAAC,CAAA;CACD"}
@@ -0,0 +1,10 @@
1
+ import { StringSelectMenu } from "./StringSelectMenu.js";
2
+ export declare abstract class ModalStringSelectMenu extends StringSelectMenu {
3
+ required: boolean;
4
+ disabled: false;
5
+ serializeExtra(): {
6
+ required: boolean;
7
+ };
8
+ protected get serializeDeleteKeys(): string[];
9
+ }
10
+ //# sourceMappingURL=ModalStringSelectMenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModalStringSelectMenu.d.ts","sourceRoot":"","sources":["../../../../src/classes/components/ModalStringSelectMenu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAExD,8BAAsB,qBAAsB,SAAQ,gBAAgB;IACnE,QAAQ,UAAQ;IACP,QAAQ,EAAE,KAAK,CAAQ;IAEhC,cAAc;;;IAOd,SAAS,KAAK,mBAAmB,IAAI,MAAM,EAAE,CAE5C;CACD"}
@@ -0,0 +1,15 @@
1
+ import { StringSelectMenu } from "./StringSelectMenu.js";
2
+ export class ModalStringSelectMenu extends StringSelectMenu {
3
+ required = false;
4
+ disabled = false;
5
+ serializeExtra() {
6
+ return {
7
+ required: this.required
8
+ };
9
+ }
10
+ // Discord will give an error if this key is in the payload
11
+ get serializeDeleteKeys() {
12
+ return ["disabled"];
13
+ }
14
+ }
15
+ //# sourceMappingURL=ModalStringSelectMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModalStringSelectMenu.js","sourceRoot":"","sources":["../../../../src/classes/components/ModalStringSelectMenu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAExD,MAAM,OAAgB,qBAAsB,SAAQ,gBAAgB;IACnE,QAAQ,GAAG,KAAK,CAAA;IACP,QAAQ,GAAU,KAAK,CAAA;IAEhC,cAAc;QACb,OAAO;YACN,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACvB,CAAA;IACF,CAAC;IAED,2DAA2D;IAC3D,IAAc,mBAAmB;QAChC,OAAO,CAAC,UAAU,CAAC,CAAA;IACpB,CAAC;CACD"}
@@ -1,8 +1,7 @@
1
- import { ComponentType } from "discord-api-types/v10";
1
+ import { type APIActionRowComponent, type APIComponentInMessageActionRow, ComponentType } from "discord-api-types/v10";
2
2
  import { BaseComponent } from "../../abstracts/BaseComponent.js";
3
3
  import type { BaseMessageInteractiveComponent } from "../../abstracts/BaseMessageInteractiveComponent.js";
4
- import type { BaseModalComponent } from "../../abstracts/BaseModalComponent.js";
5
- export declare class Row<T extends BaseMessageInteractiveComponent | BaseModalComponent = BaseMessageInteractiveComponent> extends BaseComponent {
4
+ export declare class Row<T extends BaseMessageInteractiveComponent> extends BaseComponent {
6
5
  readonly type: ComponentType.ActionRow;
7
6
  readonly isV2 = false;
8
7
  /**
@@ -24,6 +23,6 @@ export declare class Row<T extends BaseMessageInteractiveComponent | BaseModalCo
24
23
  * Remove all components from the action row
25
24
  */
26
25
  removeAllComponents(): void;
27
- serialize: () => ReturnType<BaseComponent["serialize"]>;
26
+ serialize: () => APIActionRowComponent<APIComponentInMessageActionRow>;
28
27
  }
29
28
  //# sourceMappingURL=Row.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Row.d.ts","sourceRoot":"","sources":["../../../../src/classes/components/Row.ts"],"names":[],"mappings":"AAAA,OAAO,EAIN,aAAa,EACb,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAA;AAChE,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,oDAAoD,CAAA;AACzG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAE/E,qBAAa,GAAG,CACf,CAAC,SACE,+BAA+B,GAC/B,kBAAkB,GAAG,+BAA+B,CACtD,SAAQ,aAAa;IACtB,QAAQ,CAAC,IAAI,0BAAmC;IAChD,QAAQ,CAAC,IAAI,SAAQ;IAErB;;OAEG;IACH,UAAU,EAAE,CAAC,EAAE,CAAK;gBAER,UAAU,CAAC,EAAE,CAAC,EAAE;IAK5B;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,CAAC;IAIzB;;;OAGG;IACH,eAAe,CAAC,SAAS,EAAE,CAAC;IAM5B;;OAEG;IACH,mBAAmB;IAInB,SAAS,QAAO,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAQrD;CACD"}
1
+ {"version":3,"file":"Row.d.ts","sourceRoot":"","sources":["../../../../src/classes/components/Row.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,qBAAqB,EAC1B,KAAK,8BAA8B,EACnC,aAAa,EACb,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAA;AAChE,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,oDAAoD,CAAA;AAEzG,qBAAa,GAAG,CACf,CAAC,SAAS,+BAA+B,CACxC,SAAQ,aAAa;IACtB,QAAQ,CAAC,IAAI,0BAAmC;IAChD,QAAQ,CAAC,IAAI,SAAQ;IAErB;;OAEG;IACH,UAAU,EAAE,CAAC,EAAE,CAAK;gBAER,UAAU,CAAC,EAAE,CAAC,EAAE;IAK5B;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,CAAC;IAIzB;;;OAGG;IACH,eAAe,CAAC,SAAS,EAAE,CAAC;IAM5B;;OAEG;IACH,mBAAmB;IAInB,SAAS,QAAO,qBAAqB,CAAC,8BAA8B,CAAC,CAKpE;CACD"}
@@ -40,7 +40,6 @@ export class Row extends BaseComponent {
40
40
  type: ComponentType.ActionRow,
41
41
  components: this.components.map((component) => component.serialize())
42
42
  };
43
- // god i hate these types
44
43
  };
45
44
  }
46
45
  //# sourceMappingURL=Row.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Row.js","sourceRoot":"","sources":["../../../../src/classes/components/Row.ts"],"names":[],"mappings":"AAAA,OAAO,EAIN,aAAa,EACb,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAA;AAIhE,MAAM,OAAO,GAIX,SAAQ,aAAa;IACb,IAAI,GAAG,aAAa,CAAC,SAAkB,CAAA;IACvC,IAAI,GAAG,KAAK,CAAA;IAErB;;OAEG;IACH,UAAU,GAAQ,EAAE,CAAA;IAEpB,YAAY,UAAgB;QAC3B,KAAK,EAAE,CAAA;QACP,IAAI,UAAU;YAAE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC7C,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,SAAY;QACxB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAChC,CAAC;IAED;;;OAGG;IACH,eAAe,CAAC,SAAY;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAChD,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,OAAM;QACxB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IACjC,CAAC;IAED;;OAEG;IACH,mBAAmB;QAClB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAA;IACrB,CAAC;IAED,SAAS,GAAG,GAA2C,EAAE;QACxD,OAAO;YACN,IAAI,EAAE,aAAa,CAAC,SAAS;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;SAGhB,CAAA;QACtD,yBAAyB;IAC1B,CAAC,CAAA;CACD"}
1
+ {"version":3,"file":"Row.js","sourceRoot":"","sources":["../../../../src/classes/components/Row.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,aAAa,EACb,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAA;AAGhE,MAAM,OAAO,GAEX,SAAQ,aAAa;IACb,IAAI,GAAG,aAAa,CAAC,SAAkB,CAAA;IACvC,IAAI,GAAG,KAAK,CAAA;IAErB;;OAEG;IACH,UAAU,GAAQ,EAAE,CAAA;IAEpB,YAAY,UAAgB;QAC3B,KAAK,EAAE,CAAA;QACP,IAAI,UAAU;YAAE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC7C,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,SAAY;QACxB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAChC,CAAC;IAED;;;OAGG;IACH,eAAe,CAAC,SAAY;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAChD,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,OAAM;QACxB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IACjC,CAAC;IAED;;OAEG;IACH,mBAAmB;QAClB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAA;IACrB,CAAC;IAED,SAAS,GAAG,GAA0D,EAAE;QACvE,OAAO;YACN,IAAI,EAAE,aAAa,CAAC,SAAS;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;SACrE,CAAA;IACF,CAAC,CAAA;CACD"}
@@ -1,16 +1,29 @@
1
1
  import { type APITextInputComponent, ComponentType, TextInputStyle } from "discord-api-types/v10";
2
2
  import { BaseModalComponent } from "../../abstracts/BaseModalComponent.js";
3
+ import type { ComponentParserResult } from "../../types/index.js";
3
4
  export declare abstract class TextInput extends BaseModalComponent {
4
5
  readonly type: ComponentType.TextInput;
5
6
  readonly isV2 = false;
6
7
  /**
7
- * The custom ID of the text input
8
+ * The custom ID of the component.
9
+ * If you want to provide a custom ID with additional data, you should either follow the default parser's format or implement your own custom parser.
10
+ *
11
+ * @see {@link customIdParser}
8
12
  */
9
13
  abstract customId: string;
10
14
  /**
11
- * The label of the text input
12
- */
13
- abstract label: string;
15
+ * This function is called by the handler when a component is received, and is used to parse the custom ID into a key and data object.
16
+ * By default, the ID is parsed in this format: `key:arg1=true;arg2=2;arg3=cheese`, where `arg1`, `arg2`, and `arg3` are the data arguments.
17
+ * It will also automatically parse `true` and `false` as booleans, and will parse numbers as numbers.
18
+ *
19
+ * You can override this to parse the ID in a different format as you see fit, but it must follow these rules:
20
+ * - The ID must have a `key` somewhere in the ID that can be returned by the parser. This key is what Carbon's component handler will use to identify the component and pass an interaction to the correct component.
21
+ * - The data must be able to be arbitrary as far as Carbon's handler is concerned, meaning that any component with the same base key can be treated as the same component with logic within the component's logic methods to handle the data.
22
+ *
23
+ * @param id - The custom ID of the component as received from an interaction event
24
+ * @returns The base key and the data object
25
+ */
26
+ customIdParser: (id: string) => ComponentParserResult;
14
27
  /**
15
28
  * The style of the text input
16
29
  * @default TextInputStyle.Short
@@ -1 +1 @@
1
- {"version":3,"file":"TextInput.d.ts","sourceRoot":"","sources":["../../../../src/classes/components/TextInput.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,qBAAqB,EAC1B,aAAa,EACb,cAAc,EACd,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAE1E,8BAAsB,SAAU,SAAQ,kBAAkB;IACzD,QAAQ,CAAC,IAAI,0BAAmC;IAChD,QAAQ,CAAC,IAAI,SAAQ;IAErB;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IAEzB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IAEtB;;;OAGG;IACH,KAAK,EAAE,cAAc,CAAuB;IAE5C;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,SAAS,QAAO,qBAAqB,CAYpC;CACD"}
1
+ {"version":3,"file":"TextInput.d.ts","sourceRoot":"","sources":["../../../../src/classes/components/TextInput.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,qBAAqB,EAC1B,aAAa,EACb,cAAc,EACd,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAC1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAGjE,8BAAsB,SAAU,SAAQ,kBAAkB;IACzD,QAAQ,CAAC,IAAI,0BAAmC;IAChD,QAAQ,CAAC,IAAI,SAAQ;IAErB;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IAEzB;;;;;;;;;;;OAWG;IACH,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,qBAAqB,CAAgB;IAErE;;;OAGG;IACH,KAAK,EAAE,cAAc,CAAuB;IAE5C;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,SAAS,QAAO,qBAAqB,CAWpC;CACD"}
@@ -1,8 +1,22 @@
1
1
  import { ComponentType, TextInputStyle } from "discord-api-types/v10";
2
2
  import { BaseModalComponent } from "../../abstracts/BaseModalComponent.js";
3
+ import { parseCustomId } from "../../utils/customIdParser.js";
3
4
  export class TextInput extends BaseModalComponent {
4
5
  type = ComponentType.TextInput;
5
6
  isV2 = false;
7
+ /**
8
+ * This function is called by the handler when a component is received, and is used to parse the custom ID into a key and data object.
9
+ * By default, the ID is parsed in this format: `key:arg1=true;arg2=2;arg3=cheese`, where `arg1`, `arg2`, and `arg3` are the data arguments.
10
+ * It will also automatically parse `true` and `false` as booleans, and will parse numbers as numbers.
11
+ *
12
+ * You can override this to parse the ID in a different format as you see fit, but it must follow these rules:
13
+ * - The ID must have a `key` somewhere in the ID that can be returned by the parser. This key is what Carbon's component handler will use to identify the component and pass an interaction to the correct component.
14
+ * - The data must be able to be arbitrary as far as Carbon's handler is concerned, meaning that any component with the same base key can be treated as the same component with logic within the component's logic methods to handle the data.
15
+ *
16
+ * @param id - The custom ID of the component as received from an interaction event
17
+ * @returns The base key and the data object
18
+ */
19
+ customIdParser = parseCustomId;
6
20
  /**
7
21
  * The style of the text input
8
22
  * @default TextInputStyle.Short
@@ -33,7 +47,6 @@ export class TextInput extends BaseModalComponent {
33
47
  type: ComponentType.TextInput,
34
48
  custom_id: this.customId,
35
49
  style: this.style,
36
- label: this.label,
37
50
  min_length: this.minLength,
38
51
  max_length: this.maxLength,
39
52
  required: this.required,
@@ -1 +1 @@
1
- {"version":3,"file":"TextInput.js","sourceRoot":"","sources":["../../../../src/classes/components/TextInput.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,aAAa,EACb,cAAc,EACd,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAE1E,MAAM,OAAgB,SAAU,SAAQ,kBAAkB;IAChD,IAAI,GAAG,aAAa,CAAC,SAAkB,CAAA;IACvC,IAAI,GAAG,KAAK,CAAA;IAYrB;;;OAGG;IACH,KAAK,GAAmB,cAAc,CAAC,KAAK,CAAA;IAE5C;;OAEG;IACH,SAAS,CAAS;IAElB;;OAEG;IACH,SAAS,CAAS;IAElB;;OAEG;IACH,QAAQ,CAAU;IAElB;;OAEG;IACH,KAAK,CAAS;IAEd;;OAEG;IACH,WAAW,CAAS;IAEpB,SAAS,GAAG,GAA0B,EAAE;QACvC,OAAO;YACN,IAAI,EAAE,aAAa,CAAC,SAAS;YAC7B,SAAS,EAAE,IAAI,CAAC,QAAQ;YACxB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAI,CAAC,SAAS;YAC1B,UAAU,EAAE,IAAI,CAAC,SAAS;YAC1B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,WAAW;SAC7B,CAAA;IACF,CAAC,CAAA;CACD"}
1
+ {"version":3,"file":"TextInput.js","sourceRoot":"","sources":["../../../../src/classes/components/TextInput.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,aAAa,EACb,cAAc,EACd,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAE7D,MAAM,OAAgB,SAAU,SAAQ,kBAAkB;IAChD,IAAI,GAAG,aAAa,CAAC,SAAkB,CAAA;IACvC,IAAI,GAAG,KAAK,CAAA;IAUrB;;;;;;;;;;;OAWG;IACH,cAAc,GAA0C,aAAa,CAAA;IAErE;;;OAGG;IACH,KAAK,GAAmB,cAAc,CAAC,KAAK,CAAA;IAE5C;;OAEG;IACH,SAAS,CAAS;IAElB;;OAEG;IACH,SAAS,CAAS;IAElB;;OAEG;IACH,QAAQ,CAAU;IAElB;;OAEG;IACH,KAAK,CAAS;IAEd;;OAEG;IACH,WAAW,CAAS;IAEpB,SAAS,GAAG,GAA0B,EAAE;QACvC,OAAO;YACN,IAAI,EAAE,aAAa,CAAC,SAAS;YAC7B,SAAS,EAAE,IAAI,CAAC,QAAQ;YACxB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAI,CAAC,SAAS;YAC1B,UAAU,EAAE,IAAI,CAAC,SAAS;YAC1B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,WAAW;SAC7B,CAAA;IACF,CAAC,CAAA;CACD"}
@@ -1,4 +1,4 @@
1
- import { type APIChannel, type ThreadChannelType } from "discord-api-types/v10";
1
+ import { type APIChannel, ChannelType, type ThreadChannelType } from "discord-api-types/v10";
2
2
  import type { Client } from "../classes/Client.js";
3
3
  import { DmChannel } from "../structures/DmChannel.js";
4
4
  import { GroupDmChannel } from "../structures/GroupDmChannel.js";
@@ -10,5 +10,5 @@ import { GuildStageChannel, GuildVoiceChannel } from "../structures/GuildStageOr
10
10
  import { GuildTextChannel } from "../structures/GuildTextChannel.js";
11
11
  import { GuildThreadChannel } from "../structures/GuildThreadChannel.js";
12
12
  export type AnyChannel = DmChannel | GroupDmChannel | GuildTextChannel | GuildVoiceChannel | GuildStageChannel | GuildCategoryChannel | GuildAnnouncementChannel | GuildThreadChannel<ThreadChannelType> | GuildForumChannel | GuildMediaChannel;
13
- export declare const channelFactory: (client: Client, channelData: APIChannel) => DmChannel<false> | GroupDmChannel<false> | GuildTextChannel<false> | GuildVoiceChannel<false> | GuildCategoryChannel<false> | GuildAnnouncementChannel<false> | GuildThreadChannel<ThreadChannelType, false> | GuildStageChannel<false> | GuildForumChannel<false> | GuildMediaChannel | null;
13
+ export declare const channelFactory: (client: Client, channelData: APIChannel) => DmChannel<false> | GroupDmChannel<false> | GuildTextChannel<false> | GuildVoiceChannel<false> | GuildCategoryChannel<false> | GuildAnnouncementChannel<false> | GuildThreadChannel<ChannelType.AnnouncementThread | ChannelType.PublicThread | ChannelType.PrivateThread, false> | GuildStageChannel<false> | GuildForumChannel<false> | GuildMediaChannel | null;
14
14
  //# sourceMappingURL=channelFactory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"channelFactory.d.ts","sourceRoot":"","sources":["../../../src/functions/channelFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,UAAU,EAEf,KAAK,iBAAiB,EACtB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAA;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AACtE,OAAO,EACN,iBAAiB,EACjB,iBAAiB,EACjB,MAAM,2CAA2C,CAAA;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAA;AAExE,MAAM,MAAM,UAAU,GACnB,SAAS,GACT,cAAc,GACd,gBAAgB,GAChB,iBAAiB,GACjB,iBAAiB,GACjB,oBAAoB,GACpB,wBAAwB,GACxB,kBAAkB,CAAC,iBAAiB,CAAC,GACrC,iBAAiB,GACjB,iBAAiB,CAAA;AAEpB,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,EAAE,aAAa,UAAU,kSA2BrE,CAAA"}
1
+ {"version":3,"file":"channelFactory.d.ts","sourceRoot":"","sources":["../../../src/functions/channelFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,UAAU,EACf,WAAW,EACX,KAAK,iBAAiB,EACtB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAA;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AACtE,OAAO,EACN,iBAAiB,EACjB,iBAAiB,EACjB,MAAM,2CAA2C,CAAA;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAA;AAExE,MAAM,MAAM,UAAU,GACnB,SAAS,GACT,cAAc,GACd,gBAAgB,GAChB,iBAAiB,GACjB,iBAAiB,GACjB,oBAAoB,GACpB,wBAAwB,GACxB,kBAAkB,CAAC,iBAAiB,CAAC,GACrC,iBAAiB,GACjB,iBAAiB,CAAA;AAEpB,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,EAAE,aAAa,UAAU,sWA2BrE,CAAA"}
@@ -27,7 +27,9 @@ export * from "./classes/RequestClient.js";
27
27
  export * from "./classes/components/RoleSelectMenu.js";
28
28
  export * from "./classes/components/Row.js";
29
29
  export * from "./classes/components/StringSelectMenu.js";
30
+ export * from "./classes/components/StringSelectMenu.js";
30
31
  export * from "./classes/components/TextInput.js";
32
+ export * from "./classes/components/Label.js";
31
33
  export * from "./classes/components/UserSelectMenu.js";
32
34
  export * from "./classes/components/Container.js";
33
35
  export * from "./classes/components/MediaGallery.js";
@@ -47,6 +49,7 @@ export * from "./internals/ChannelSelectMenuInteraction.js";
47
49
  export * from "./internals/CommandHandler.js";
48
50
  export * from "./internals/CommandInteraction.js";
49
51
  export * from "./internals/ComponentHandler.js";
52
+ export * from "./internals/EventHandler.js";
50
53
  export * from "./internals/FieldsHandler.js";
51
54
  export * from "./internals/MentionableSelectMenuInteraction.js";
52
55
  export * from "./internals/ModalHandler.js";
@@ -67,10 +70,12 @@ export * from "./structures/GuildStageOrVoiceChannel.js";
67
70
  export * from "./structures/GuildTextChannel.js";
68
71
  export * from "./structures/GuildThreadChannel.js";
69
72
  export * from "./structures/Message.js";
73
+ export * from "./structures/Poll.js";
70
74
  export * from "./structures/Role.js";
71
75
  export * from "./structures/ThreadMember.js";
72
76
  export * from "./structures/User.js";
73
77
  export * from "./structures/Webhook.js";
78
+ export * from "./plugins/paginator/index.js";
74
79
  export * from "discord-api-types/v10";
75
80
  export * from "./types/index.js";
76
81
  export * from "./permissions.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yCAAyC,CAAA;AACvD,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yCAAyC,CAAA;AACvD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,qCAAqC,CAAA;AACnD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,uCAAuC,CAAA;AACrD,cAAc,uBAAuB,CAAA;AACrC,cAAc,mCAAmC,CAAA;AACjD,cAAc,gDAAgD,CAAA;AAG9D,cAAc,gCAAgC,CAAA;AAC9C,cAAc,2CAA2C,CAAA;AACzD,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,0CAA0C,CAAA;AACxD,cAAc,qCAAqC,CAAA;AACnD,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,+CAA+C,CAAA;AAC7D,cAAc,oBAAoB,CAAA;AAClC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,wCAAwC,CAAA;AACtD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,0CAA0C,CAAA;AACxD,cAAc,mCAAmC,CAAA;AACjD,cAAc,wCAAwC,CAAA;AACtD,cAAc,mCAAmC,CAAA;AACjD,cAAc,sCAAsC,CAAA;AACpD,cAAc,qCAAqC,CAAA;AACnD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,mCAAmC,CAAA;AACjD,cAAc,8BAA8B,CAAA;AAC5C,cAAc,mCAAmC,CAAA;AAGjD,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAG1C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,6BAA6B,CAAA;AAG3C,cAAc,wCAAwC,CAAA;AACtD,cAAc,kCAAkC,CAAA;AAChD,cAAc,6CAA6C,CAAA;AAC3D,cAAc,+BAA+B,CAAA;AAC7C,cAAc,mCAAmC,CAAA;AACjD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,iDAAiD,CAAA;AAC/D,cAAc,6BAA6B,CAAA;AAC3C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,0CAA0C,CAAA;AACxD,cAAc,4CAA4C,CAAA;AAC1D,cAAc,0CAA0C,CAAA;AAGxD,cAAc,2BAA2B,CAAA;AACzC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,uBAAuB,CAAA;AACrC,cAAc,0CAA0C,CAAA;AACxD,cAAc,sCAAsC,CAAA;AACpD,cAAc,mCAAmC,CAAA;AACjD,cAAc,mCAAmC,CAAA;AACjD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,0CAA0C,CAAA;AACxD,cAAc,kCAAkC,CAAA;AAChD,cAAc,oCAAoC,CAAA;AAClD,cAAc,yBAAyB,CAAA;AACvC,cAAc,sBAAsB,CAAA;AACpC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,sBAAsB,CAAA;AACpC,cAAc,yBAAyB,CAAA;AAGvC,cAAc,uBAAuB,CAAA;AACrC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yCAAyC,CAAA;AACvD,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yCAAyC,CAAA;AACvD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,qCAAqC,CAAA;AACnD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,uCAAuC,CAAA;AACrD,cAAc,uBAAuB,CAAA;AACrC,cAAc,mCAAmC,CAAA;AACjD,cAAc,gDAAgD,CAAA;AAG9D,cAAc,gCAAgC,CAAA;AAC9C,cAAc,2CAA2C,CAAA;AACzD,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,0CAA0C,CAAA;AACxD,cAAc,qCAAqC,CAAA;AACnD,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,+CAA+C,CAAA;AAC7D,cAAc,oBAAoB,CAAA;AAClC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,wCAAwC,CAAA;AACtD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,0CAA0C,CAAA;AACxD,cAAc,0CAA0C,CAAA;AACxD,cAAc,mCAAmC,CAAA;AACjD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,wCAAwC,CAAA;AACtD,cAAc,mCAAmC,CAAA;AACjD,cAAc,sCAAsC,CAAA;AACpD,cAAc,qCAAqC,CAAA;AACnD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,mCAAmC,CAAA;AACjD,cAAc,8BAA8B,CAAA;AAC5C,cAAc,mCAAmC,CAAA;AAGjD,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAG1C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,6BAA6B,CAAA;AAG3C,cAAc,wCAAwC,CAAA;AACtD,cAAc,kCAAkC,CAAA;AAChD,cAAc,6CAA6C,CAAA;AAC3D,cAAc,+BAA+B,CAAA;AAC7C,cAAc,mCAAmC,CAAA;AACjD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,iDAAiD,CAAA;AAC/D,cAAc,6BAA6B,CAAA;AAC3C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,0CAA0C,CAAA;AACxD,cAAc,4CAA4C,CAAA;AAC1D,cAAc,0CAA0C,CAAA;AAGxD,cAAc,2BAA2B,CAAA;AACzC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,uBAAuB,CAAA;AACrC,cAAc,0CAA0C,CAAA;AACxD,cAAc,sCAAsC,CAAA;AACpD,cAAc,mCAAmC,CAAA;AACjD,cAAc,mCAAmC,CAAA;AACjD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,0CAA0C,CAAA;AACxD,cAAc,kCAAkC,CAAA;AAChD,cAAc,oCAAoC,CAAA;AAClD,cAAc,yBAAyB,CAAA;AACvC,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,sBAAsB,CAAA;AACpC,cAAc,yBAAyB,CAAA;AAGvC,cAAc,8BAA8B,CAAA;AAG5C,cAAc,uBAAuB,CAAA;AACrC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA"}
package/dist/src/index.js CHANGED
@@ -29,7 +29,9 @@ export * from "./classes/RequestClient.js";
29
29
  export * from "./classes/components/RoleSelectMenu.js";
30
30
  export * from "./classes/components/Row.js";
31
31
  export * from "./classes/components/StringSelectMenu.js";
32
+ export * from "./classes/components/StringSelectMenu.js";
32
33
  export * from "./classes/components/TextInput.js";
34
+ export * from "./classes/components/Label.js";
33
35
  export * from "./classes/components/UserSelectMenu.js";
34
36
  export * from "./classes/components/Container.js";
35
37
  export * from "./classes/components/MediaGallery.js";
@@ -52,6 +54,7 @@ export * from "./internals/ChannelSelectMenuInteraction.js";
52
54
  export * from "./internals/CommandHandler.js";
53
55
  export * from "./internals/CommandInteraction.js";
54
56
  export * from "./internals/ComponentHandler.js";
57
+ export * from "./internals/EventHandler.js";
55
58
  export * from "./internals/FieldsHandler.js";
56
59
  export * from "./internals/MentionableSelectMenuInteraction.js";
57
60
  export * from "./internals/ModalHandler.js";
@@ -73,10 +76,13 @@ export * from "./structures/GuildStageOrVoiceChannel.js";
73
76
  export * from "./structures/GuildTextChannel.js";
74
77
  export * from "./structures/GuildThreadChannel.js";
75
78
  export * from "./structures/Message.js";
79
+ export * from "./structures/Poll.js";
76
80
  export * from "./structures/Role.js";
77
81
  export * from "./structures/ThreadMember.js";
78
82
  export * from "./structures/User.js";
79
83
  export * from "./structures/Webhook.js";
84
+ // ----- Plugins -----
85
+ export * from "./plugins/paginator/index.js";
80
86
  // ----- Misc -----
81
87
  export * from "discord-api-types/v10";
82
88
  export * from "./types/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yCAAyC,CAAA;AACvD,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yCAAyC,CAAA;AACvD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,qCAAqC,CAAA;AACnD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,uCAAuC,CAAA;AACrD,cAAc,uBAAuB,CAAA;AACrC,cAAc,mCAAmC,CAAA;AACjD,cAAc,gDAAgD,CAAA;AAE9D,sBAAsB;AACtB,cAAc,gCAAgC,CAAA;AAC9C,cAAc,2CAA2C,CAAA;AACzD,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,0CAA0C,CAAA;AACxD,cAAc,qCAAqC,CAAA;AACnD,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,+CAA+C,CAAA;AAC7D,cAAc,oBAAoB,CAAA;AAClC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,wCAAwC,CAAA;AACtD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,0CAA0C,CAAA;AACxD,cAAc,mCAAmC,CAAA;AACjD,cAAc,wCAAwC,CAAA;AACtD,cAAc,mCAAmC,CAAA;AACjD,cAAc,sCAAsC,CAAA;AACpD,cAAc,qCAAqC,CAAA;AACnD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,mCAAmC,CAAA;AACjD,cAAc,8BAA8B,CAAA;AAC5C,cAAc,mCAAmC,CAAA;AAEjD,qBAAqB;AACrB,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAE1C,wBAAwB;AACxB,cAAc,+BAA+B,CAAA;AAC7C,cAAc,6BAA6B,CAAA;AAE3C,wBAAwB;AACxB,cAAc,wCAAwC,CAAA;AACtD,cAAc,kCAAkC,CAAA;AAChD,cAAc,6CAA6C,CAAA;AAC3D,cAAc,+BAA+B,CAAA;AAC7C,cAAc,mCAAmC,CAAA;AACjD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,iDAAiD,CAAA;AAC/D,cAAc,6BAA6B,CAAA;AAC3C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,0CAA0C,CAAA;AACxD,cAAc,4CAA4C,CAAA;AAC1D,cAAc,0CAA0C,CAAA;AAExD,yBAAyB;AACzB,cAAc,2BAA2B,CAAA;AACzC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,uBAAuB,CAAA;AACrC,cAAc,0CAA0C,CAAA;AACxD,cAAc,sCAAsC,CAAA;AACpD,cAAc,mCAAmC,CAAA;AACjD,cAAc,mCAAmC,CAAA;AACjD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,0CAA0C,CAAA;AACxD,cAAc,kCAAkC,CAAA;AAChD,cAAc,oCAAoC,CAAA;AAClD,cAAc,yBAAyB,CAAA;AACvC,cAAc,sBAAsB,CAAA;AACpC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,sBAAsB,CAAA;AACpC,cAAc,yBAAyB,CAAA;AAEvC,mBAAmB;AACnB,cAAc,uBAAuB,CAAA;AACrC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yCAAyC,CAAA;AACvD,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yCAAyC,CAAA;AACvD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,qCAAqC,CAAA;AACnD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,uCAAuC,CAAA;AACrD,cAAc,uBAAuB,CAAA;AACrC,cAAc,mCAAmC,CAAA;AACjD,cAAc,gDAAgD,CAAA;AAE9D,sBAAsB;AACtB,cAAc,gCAAgC,CAAA;AAC9C,cAAc,2CAA2C,CAAA;AACzD,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,0CAA0C,CAAA;AACxD,cAAc,qCAAqC,CAAA;AACnD,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,+CAA+C,CAAA;AAC7D,cAAc,oBAAoB,CAAA;AAClC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,wCAAwC,CAAA;AACtD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,0CAA0C,CAAA;AACxD,cAAc,0CAA0C,CAAA;AACxD,cAAc,mCAAmC,CAAA;AACjD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,wCAAwC,CAAA;AACtD,cAAc,mCAAmC,CAAA;AACjD,cAAc,sCAAsC,CAAA;AACpD,cAAc,qCAAqC,CAAA;AACnD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,mCAAmC,CAAA;AACjD,cAAc,8BAA8B,CAAA;AAC5C,cAAc,mCAAmC,CAAA;AAEjD,qBAAqB;AACrB,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAE1C,wBAAwB;AACxB,cAAc,+BAA+B,CAAA;AAC7C,cAAc,6BAA6B,CAAA;AAE3C,wBAAwB;AACxB,cAAc,wCAAwC,CAAA;AACtD,cAAc,kCAAkC,CAAA;AAChD,cAAc,6CAA6C,CAAA;AAC3D,cAAc,+BAA+B,CAAA;AAC7C,cAAc,mCAAmC,CAAA;AACjD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,iDAAiD,CAAA;AAC/D,cAAc,6BAA6B,CAAA;AAC3C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,0CAA0C,CAAA;AACxD,cAAc,4CAA4C,CAAA;AAC1D,cAAc,0CAA0C,CAAA;AAExD,yBAAyB;AACzB,cAAc,2BAA2B,CAAA;AACzC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,uBAAuB,CAAA;AACrC,cAAc,0CAA0C,CAAA;AACxD,cAAc,sCAAsC,CAAA;AACpD,cAAc,mCAAmC,CAAA;AACjD,cAAc,mCAAmC,CAAA;AACjD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,0CAA0C,CAAA;AACxD,cAAc,kCAAkC,CAAA;AAChD,cAAc,oCAAoC,CAAA;AAClD,cAAc,yBAAyB,CAAA;AACvC,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,sBAAsB,CAAA;AACpC,cAAc,yBAAyB,CAAA;AAEvC,sBAAsB;AACtB,cAAc,8BAA8B,CAAA;AAE5C,mBAAmB;AACnB,cAAc,uBAAuB,CAAA;AACrC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA"}
@@ -0,0 +1,76 @@
1
+ import type { Client } from "../classes/Client.js";
2
+ import type { GuildMember } from "../structures/GuildMember.js";
3
+ import type { Webhook } from "../structures/Webhook.js";
4
+ export type CacheTypes = {
5
+ user: Awaited<ReturnType<typeof Client.prototype.fetchUser>>;
6
+ guild: Awaited<ReturnType<typeof Client.prototype.fetchGuild>>;
7
+ channel: Awaited<ReturnType<typeof Client.prototype.fetchChannel>>;
8
+ role: Awaited<ReturnType<typeof Client.prototype.fetchRole>>;
9
+ member: Awaited<ReturnType<typeof Client.prototype.fetchMember>>;
10
+ message: Awaited<ReturnType<typeof Client.prototype.fetchMessage>>;
11
+ voiceState: Awaited<ReturnType<typeof GuildMember.prototype.getVoiceState>>;
12
+ permissions: bigint[];
13
+ webhook: Webhook<false>;
14
+ };
15
+ export interface CacheEntry<V> {
16
+ value: V;
17
+ expiresAt?: number;
18
+ }
19
+ export interface CacheOptions {
20
+ defaultExpiry?: number;
21
+ }
22
+ export declare class Cache<K extends keyof CacheTypes | string, V = K extends keyof CacheTypes ? CacheTypes[K] : unknown> {
23
+ private cache;
24
+ private defaultExpiry;
25
+ constructor(options?: CacheOptions);
26
+ /**
27
+ * Get a value from the cache
28
+ * @param key The key to get
29
+ * @returns The value if it exists and hasn't expired, undefined otherwise
30
+ */
31
+ get(key: K): V | undefined;
32
+ /**
33
+ * Set a value in the cache
34
+ * @param key The key to set
35
+ * @param value The value to set
36
+ * @param expiresIn Optional time in milliseconds until the entry expires
37
+ */
38
+ set(key: K, value: V, expiresIn?: number): void;
39
+ /**
40
+ * Delete a value from the cache
41
+ * @param key The key to delete
42
+ * @returns Whether the key was deleted
43
+ */
44
+ delete(key: K): boolean;
45
+ /**
46
+ * Clear all values of a specific type from the cache
47
+ * @param type The type to clear
48
+ */
49
+ clearType(type: K): void;
50
+ /**
51
+ * Clear all values from the cache
52
+ */
53
+ clear(): void;
54
+ /**
55
+ * Get the size of the cache
56
+ */
57
+ get size(): number;
58
+ /**
59
+ * Check if a key exists in the cache and hasn't expired
60
+ * @param key The key to check
61
+ */
62
+ has(key: K): boolean;
63
+ /**
64
+ * Get all keys in the cache that haven't expired
65
+ */
66
+ keys(): K[];
67
+ /**
68
+ * Get all values in the cache that haven't expired
69
+ */
70
+ values(): V[];
71
+ /**
72
+ * Get all entries in the cache that haven't expired
73
+ */
74
+ entries(): [K, V][];
75
+ }
76
+ //# sourceMappingURL=Cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Cache.d.ts","sourceRoot":"","sources":["../../../src/internals/Cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAEvD,MAAM,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAA;IAC5D,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAA;IAC9D,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAA;IAClE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAA;IAC5D,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAA;IAChE,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAA;IAClE,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAA;IAC3E,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;CACvB,CAAA;AAED,MAAM,WAAW,UAAU,CAAC,CAAC;IAC5B,KAAK,EAAE,CAAC,CAAA;IACR,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,qBAAa,KAAK,CACjB,CAAC,SAAS,MAAM,UAAU,GAAG,MAAM,EACnC,CAAC,GAAG,CAAC,SAAS,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO;IAExD,OAAO,CAAC,KAAK,CAAmC;IAChD,OAAO,CAAC,aAAa,CAA8B;gBAEvC,OAAO,GAAE,YAAiB;IAMtC;;;;OAIG;IACI,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAYjC;;;;;OAKG;IACI,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAKtD;;;;OAIG;IACI,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAI9B;;;OAGG;IACI,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAQ/B;;OAEG;IACI,KAAK,IAAI,IAAI;IAIpB;;OAEG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;;OAGG;IACI,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAY3B;;OAEG;IACI,IAAI,IAAI,CAAC,EAAE;IAYlB;;OAEG;IACI,MAAM,IAAI,CAAC,EAAE;IAYpB;;OAEG;IACI,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;CAW1B"}
@@ -0,0 +1,122 @@
1
+ export class Cache {
2
+ cache = new Map();
3
+ defaultExpiry = 1000 * 60 * 60 * 24; // 1 day
4
+ constructor(options = {}) {
5
+ if (options.defaultExpiry) {
6
+ this.defaultExpiry = options.defaultExpiry;
7
+ }
8
+ }
9
+ /**
10
+ * Get a value from the cache
11
+ * @param key The key to get
12
+ * @returns The value if it exists and hasn't expired, undefined otherwise
13
+ */
14
+ get(key) {
15
+ const entry = this.cache.get(key);
16
+ if (!entry)
17
+ return undefined;
18
+ if (entry.expiresAt && entry.expiresAt < Date.now()) {
19
+ this.delete(key);
20
+ return undefined;
21
+ }
22
+ return entry.value;
23
+ }
24
+ /**
25
+ * Set a value in the cache
26
+ * @param key The key to set
27
+ * @param value The value to set
28
+ * @param expiresIn Optional time in milliseconds until the entry expires
29
+ */
30
+ set(key, value, expiresIn) {
31
+ const expiresAt = expiresIn ? Date.now() + expiresIn : this.defaultExpiry;
32
+ this.cache.set(key, { value, expiresAt });
33
+ }
34
+ /**
35
+ * Delete a value from the cache
36
+ * @param key The key to delete
37
+ * @returns Whether the key was deleted
38
+ */
39
+ delete(key) {
40
+ return this.cache.delete(key);
41
+ }
42
+ /**
43
+ * Clear all values of a specific type from the cache
44
+ * @param type The type to clear
45
+ */
46
+ clearType(type) {
47
+ for (const [key] of this.cache) {
48
+ if (key === type) {
49
+ this.delete(key);
50
+ }
51
+ }
52
+ }
53
+ /**
54
+ * Clear all values from the cache
55
+ */
56
+ clear() {
57
+ this.cache.clear();
58
+ }
59
+ /**
60
+ * Get the size of the cache
61
+ */
62
+ get size() {
63
+ return this.cache.size;
64
+ }
65
+ /**
66
+ * Check if a key exists in the cache and hasn't expired
67
+ * @param key The key to check
68
+ */
69
+ has(key) {
70
+ const entry = this.cache.get(key);
71
+ if (!entry)
72
+ return false;
73
+ if (entry.expiresAt && entry.expiresAt < Date.now()) {
74
+ this.delete(key);
75
+ return false;
76
+ }
77
+ return true;
78
+ }
79
+ /**
80
+ * Get all keys in the cache that haven't expired
81
+ */
82
+ keys() {
83
+ const keys = [];
84
+ for (const [key, entry] of this.cache) {
85
+ if (entry.expiresAt && entry.expiresAt < Date.now()) {
86
+ this.delete(key);
87
+ continue;
88
+ }
89
+ keys.push(key);
90
+ }
91
+ return keys;
92
+ }
93
+ /**
94
+ * Get all values in the cache that haven't expired
95
+ */
96
+ values() {
97
+ const values = [];
98
+ for (const [key, entry] of this.cache) {
99
+ if (entry.expiresAt && entry.expiresAt < Date.now()) {
100
+ this.delete(key);
101
+ continue;
102
+ }
103
+ values.push(entry.value);
104
+ }
105
+ return values;
106
+ }
107
+ /**
108
+ * Get all entries in the cache that haven't expired
109
+ */
110
+ entries() {
111
+ const entries = [];
112
+ for (const [key, entry] of this.cache) {
113
+ if (entry.expiresAt && entry.expiresAt < Date.now()) {
114
+ this.delete(key);
115
+ continue;
116
+ }
117
+ entries.push([key, entry.value]);
118
+ }
119
+ return entries;
120
+ }
121
+ }
122
+ //# sourceMappingURL=Cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../../src/internals/Cache.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { type APIApplicationCommandAutocompleteInteraction, type APIApplicationCommandInteraction } from "discord-api-types/v10";
2
2
  import { Base } from "../abstracts/Base.js";
3
3
  export declare class CommandHandler extends Base {
4
+ private getSubcommand;
4
5
  private getCommand;
5
6
  /**
6
7
  * Handle a command interaction
@@ -1 +1 @@
1
- {"version":3,"file":"CommandHandler.d.ts","sourceRoot":"","sources":["../../../src/internals/CommandHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,4CAA4C,EACjD,KAAK,gCAAgC,EAIrC,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAQ3C,qBAAa,cAAe,SAAQ,IAAI;IACvC,OAAO,CAAC,UAAU;IAgElB;;;OAGG;IACG,wBAAwB,CAC7B,cAAc,EAAE,gCAAgC;IAoC3C,6BAA6B,CAClC,cAAc,EAAE,4CAA4C;CAsB7D"}
1
+ {"version":3,"file":"CommandHandler.d.ts","sourceRoot":"","sources":["../../../src/internals/CommandHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,4CAA4C,EACjD,KAAK,gCAAgC,EAIrC,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAQ3C,qBAAa,cAAe,SAAQ,IAAI;IACvC,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,UAAU;IA6DlB;;;OAGG;IACG,wBAAwB,CAC7B,cAAc,EAAE,gCAAgC;IAkD3C,6BAA6B,CAClC,cAAc,EAAE,4CAA4C;CA0C7D"}
@@ -6,6 +6,16 @@ import { CommandWithSubcommands } from "../classes/CommandWithSubcommands.js";
6
6
  import { AutocompleteInteraction } from "./AutocompleteInteraction.js";
7
7
  import { CommandInteraction } from "./CommandInteraction.js";
8
8
  export class CommandHandler extends Base {
9
+ getSubcommand(command, rawInteraction) {
10
+ if (rawInteraction.data.type !== ApplicationCommandType.ChatInput) {
11
+ throw new Error("Subcommands must be used with ChatInput");
12
+ }
13
+ const data = rawInteraction.data;
14
+ const subcommand = command.subcommands.find((x) => x.name === data.options?.[0]?.name);
15
+ if (!subcommand)
16
+ throw new Error("Subcommand not found");
17
+ return subcommand;
18
+ }
9
19
  getCommand(rawInteraction) {
10
20
  let command = this.client.commands.find((x) => x.name === rawInteraction.data.name);
11
21
  if (!command)
@@ -18,8 +28,14 @@ export class CommandHandler extends Base {
18
28
  }
19
29
  const data = rawInteraction.data;
20
30
  const subcommandGroupName = data.options?.find((x) => x.type === ApplicationCommandOptionType.SubcommandGroup)?.name;
21
- if (!subcommandGroupName)
22
- throw new Error("No subcommand group name");
31
+ if (!subcommandGroupName) {
32
+ try {
33
+ return this.getSubcommand(command, rawInteraction);
34
+ }
35
+ catch {
36
+ throw new Error("No subcommand group name or subcommand found");
37
+ }
38
+ }
23
39
  const subcommandGroup = command.subcommandGroups.find((x) => x.name === subcommandGroupName);
24
40
  if (!subcommandGroup)
25
41
  throw new Error("Subcommand group not found");
@@ -32,14 +48,7 @@ export class CommandHandler extends Base {
32
48
  return subcommand;
33
49
  }
34
50
  if (command instanceof CommandWithSubcommands) {
35
- if (rawInteraction.data.type !== ApplicationCommandType.ChatInput) {
36
- throw new Error("Subcommands must be used with ChatInput");
37
- }
38
- const data = rawInteraction.data;
39
- const subcommand = command.subcommands.find((x) => x.name === data.options?.[0]?.name);
40
- if (!subcommand)
41
- throw new Error("Subcommand not found");
42
- return subcommand;
51
+ return this.getSubcommand(command, rawInteraction);
43
52
  }
44
53
  if (command instanceof Command) {
45
54
  return command;
@@ -63,13 +72,23 @@ export class CommandHandler extends Base {
63
72
  client: this.client,
64
73
  data: rawInteraction,
65
74
  defaults: {
66
- ephemeral: command.ephemeral
75
+ ephemeral: typeof command.ephemeral === "function"
76
+ ? false // Will be resolved later after interaction is created
77
+ : command.ephemeral
67
78
  },
68
79
  processingCommand: command
69
80
  });
70
81
  try {
71
82
  const command = this.getCommand(rawInteraction);
72
- if (command.defer) {
83
+ // Resolve ephemeral setting if it's a function
84
+ if (typeof command.ephemeral === "function") {
85
+ interaction.setDefaultEphemeral(command.ephemeral(interaction));
86
+ }
87
+ // Resolve defer setting if it's a function
88
+ const shouldDefer = typeof command.defer === "function"
89
+ ? command.defer(interaction)
90
+ : command.defer;
91
+ if (shouldDefer) {
73
92
  await interaction.defer();
74
93
  }
75
94
  if (command.preCheck) {
@@ -93,12 +112,25 @@ export class CommandHandler extends Base {
93
112
  client: this.client,
94
113
  data: rawInteraction,
95
114
  defaults: {
96
- ephemeral: command.ephemeral
115
+ ephemeral: typeof command.ephemeral === "function"
116
+ ? false // Autocomplete interactions don't use ephemeral typically, but resolve for consistency
117
+ : command.ephemeral
97
118
  },
98
119
  processingCommand: command
99
120
  });
100
121
  try {
101
122
  const command = this.getCommand(rawInteraction);
123
+ // Check if the focused option has its own autocomplete function
124
+ const focusedOption = interaction.options.getFocused();
125
+ if (focusedOption && command.options) {
126
+ const optionDefinition = command.options.find((opt) => opt.name === focusedOption.name);
127
+ if (optionDefinition &&
128
+ "autocomplete" in optionDefinition &&
129
+ typeof optionDefinition.autocomplete === "function") {
130
+ return await optionDefinition.autocomplete(interaction);
131
+ }
132
+ }
133
+ // Fall back to command-level autocomplete
102
134
  return await command.autocomplete(interaction);
103
135
  }
104
136
  catch (e) {