@sapphire/plugin-subcommands 5.1.1-next.f01b974.0 → 6.0.0-next.37591c8.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 (120) hide show
  1. package/dist/cjs/index.cjs +74 -0
  2. package/dist/cjs/index.cjs.map +1 -0
  3. package/dist/cjs/index.d.ts +395 -0
  4. package/dist/cjs/lib/Subcommand.cjs +421 -0
  5. package/dist/cjs/lib/Subcommand.cjs.map +1 -0
  6. package/dist/cjs/lib/precondition-resolvers/subcommandCooldown.cjs +39 -0
  7. package/dist/cjs/lib/precondition-resolvers/subcommandCooldown.cjs.map +1 -0
  8. package/dist/cjs/lib/types/Enums.cjs +16 -0
  9. package/dist/cjs/lib/types/Enums.cjs.map +1 -0
  10. package/dist/cjs/lib/types/Events.cjs +26 -0
  11. package/dist/cjs/lib/types/Events.cjs.map +1 -0
  12. package/dist/cjs/lib/types/SubcommandMappings.cjs +4 -0
  13. package/dist/cjs/lib/types/SubcommandMappings.cjs.map +1 -0
  14. package/dist/cjs/listeners/PluginChatInputSubcommandError.cjs +22 -0
  15. package/dist/cjs/listeners/PluginChatInputSubcommandError.cjs.map +1 -0
  16. package/dist/cjs/listeners/PluginMessageSubcommandError.cjs +22 -0
  17. package/dist/cjs/listeners/PluginMessageSubcommandError.cjs.map +1 -0
  18. package/dist/cjs/listeners/PluginSubcommandMappingIsMissingChatInputCommandHandler.cjs +22 -0
  19. package/dist/cjs/listeners/PluginSubcommandMappingIsMissingChatInputCommandHandler.cjs.map +1 -0
  20. package/dist/cjs/listeners/PluginSubcommandMappingIsMissingMessageCommandHandler.cjs +22 -0
  21. package/dist/cjs/listeners/PluginSubcommandMappingIsMissingMessageCommandHandler.cjs.map +1 -0
  22. package/dist/cjs/listeners/_load.cjs +30 -0
  23. package/dist/cjs/listeners/_load.cjs.map +1 -0
  24. package/dist/cjs/preconditions/PluginSubcommandCooldown.cjs +96 -0
  25. package/dist/cjs/preconditions/PluginSubcommandCooldown.cjs.map +1 -0
  26. package/dist/cjs/preconditions/_load.cjs +16 -0
  27. package/dist/cjs/preconditions/_load.cjs.map +1 -0
  28. package/dist/cjs/register.cjs +25 -0
  29. package/dist/cjs/register.cjs.map +1 -0
  30. package/dist/{register.d.ts → cjs/register.d.ts} +5 -4
  31. package/dist/esm/chunk-K3DKV2RO.mjs +24 -0
  32. package/dist/esm/chunk-K3DKV2RO.mjs.map +1 -0
  33. package/dist/esm/index.d.mts +395 -0
  34. package/dist/esm/index.mjs +19 -0
  35. package/dist/esm/index.mjs.map +1 -0
  36. package/dist/esm/lib/Subcommand.mjs +400 -0
  37. package/dist/esm/lib/Subcommand.mjs.map +1 -0
  38. package/dist/esm/lib/precondition-resolvers/subcommandCooldown.mjs +36 -0
  39. package/dist/esm/lib/precondition-resolvers/subcommandCooldown.mjs.map +1 -0
  40. package/dist/esm/lib/types/Enums.mjs +15 -0
  41. package/dist/esm/lib/types/Enums.mjs.map +1 -0
  42. package/dist/esm/lib/types/Events.mjs +25 -0
  43. package/dist/esm/lib/types/Events.mjs.map +1 -0
  44. package/dist/esm/lib/types/SubcommandMappings.mjs +3 -0
  45. package/dist/esm/lib/types/SubcommandMappings.mjs.map +1 -0
  46. package/dist/esm/listeners/PluginChatInputSubcommandError.mjs +19 -0
  47. package/dist/esm/listeners/PluginChatInputSubcommandError.mjs.map +1 -0
  48. package/dist/esm/listeners/PluginMessageSubcommandError.mjs +19 -0
  49. package/dist/esm/listeners/PluginMessageSubcommandError.mjs.map +1 -0
  50. package/dist/esm/listeners/PluginSubcommandMappingIsMissingChatInputCommandHandler.mjs +19 -0
  51. package/dist/esm/listeners/PluginSubcommandMappingIsMissingChatInputCommandHandler.mjs.map +1 -0
  52. package/dist/esm/listeners/PluginSubcommandMappingIsMissingMessageCommandHandler.mjs +19 -0
  53. package/dist/esm/listeners/PluginSubcommandMappingIsMissingMessageCommandHandler.mjs.map +1 -0
  54. package/dist/esm/listeners/_load.mjs +27 -0
  55. package/dist/esm/listeners/_load.mjs.map +1 -0
  56. package/dist/esm/preconditions/PluginSubcommandCooldown.mjs +88 -0
  57. package/dist/esm/preconditions/PluginSubcommandCooldown.mjs.map +1 -0
  58. package/dist/esm/preconditions/_load.mjs +13 -0
  59. package/dist/esm/preconditions/_load.mjs.map +1 -0
  60. package/dist/esm/register.d.mts +14 -0
  61. package/dist/esm/register.mjs +22 -0
  62. package/dist/esm/register.mjs.map +1 -0
  63. package/package.json +34 -19
  64. package/dist/index.d.ts +0 -48
  65. package/dist/index.d.ts.map +0 -1
  66. package/dist/index.js +0 -43
  67. package/dist/index.js.map +0 -1
  68. package/dist/index.mjs +0 -10
  69. package/dist/lib/Subcommand.d.ts +0 -81
  70. package/dist/lib/Subcommand.d.ts.map +0 -1
  71. package/dist/lib/Subcommand.js +0 -440
  72. package/dist/lib/Subcommand.js.map +0 -1
  73. package/dist/lib/precondition-resolvers/subcommandCooldown.d.ts +0 -29
  74. package/dist/lib/precondition-resolvers/subcommandCooldown.d.ts.map +0 -1
  75. package/dist/lib/precondition-resolvers/subcommandCooldown.js +0 -31
  76. package/dist/lib/precondition-resolvers/subcommandCooldown.js.map +0 -1
  77. package/dist/lib/types/Enums.d.ts +0 -16
  78. package/dist/lib/types/Enums.d.ts.map +0 -1
  79. package/dist/lib/types/Enums.js +0 -21
  80. package/dist/lib/types/Enums.js.map +0 -1
  81. package/dist/lib/types/Events.d.ts +0 -99
  82. package/dist/lib/types/Events.d.ts.map +0 -1
  83. package/dist/lib/types/Events.js +0 -22
  84. package/dist/lib/types/Events.js.map +0 -1
  85. package/dist/lib/types/SubcommandMappings.d.ts +0 -90
  86. package/dist/lib/types/SubcommandMappings.d.ts.map +0 -1
  87. package/dist/lib/types/SubcommandMappings.js +0 -3
  88. package/dist/lib/types/SubcommandMappings.js.map +0 -1
  89. package/dist/listeners/PluginChatInputSubcommandError.d.ts +0 -7
  90. package/dist/listeners/PluginChatInputSubcommandError.d.ts.map +0 -1
  91. package/dist/listeners/PluginChatInputSubcommandError.js +0 -16
  92. package/dist/listeners/PluginChatInputSubcommandError.js.map +0 -1
  93. package/dist/listeners/PluginMessageSubcommandError.d.ts +0 -7
  94. package/dist/listeners/PluginMessageSubcommandError.d.ts.map +0 -1
  95. package/dist/listeners/PluginMessageSubcommandError.js +0 -16
  96. package/dist/listeners/PluginMessageSubcommandError.js.map +0 -1
  97. package/dist/listeners/PluginSubcommandMappingIsMissingChatInputCommandHandler.d.ts +0 -8
  98. package/dist/listeners/PluginSubcommandMappingIsMissingChatInputCommandHandler.d.ts.map +0 -1
  99. package/dist/listeners/PluginSubcommandMappingIsMissingChatInputCommandHandler.js +0 -16
  100. package/dist/listeners/PluginSubcommandMappingIsMissingChatInputCommandHandler.js.map +0 -1
  101. package/dist/listeners/PluginSubcommandMappingIsMissingMessageCommandHandler.d.ts +0 -9
  102. package/dist/listeners/PluginSubcommandMappingIsMissingMessageCommandHandler.d.ts.map +0 -1
  103. package/dist/listeners/PluginSubcommandMappingIsMissingMessageCommandHandler.js +0 -16
  104. package/dist/listeners/PluginSubcommandMappingIsMissingMessageCommandHandler.js.map +0 -1
  105. package/dist/listeners/_load.d.ts +0 -2
  106. package/dist/listeners/_load.d.ts.map +0 -1
  107. package/dist/listeners/_load.js +0 -25
  108. package/dist/listeners/_load.js.map +0 -1
  109. package/dist/preconditions/PluginSubcommandCooldown.d.ts +0 -31
  110. package/dist/preconditions/PluginSubcommandCooldown.d.ts.map +0 -1
  111. package/dist/preconditions/PluginSubcommandCooldown.js +0 -97
  112. package/dist/preconditions/PluginSubcommandCooldown.js.map +0 -1
  113. package/dist/preconditions/_load.d.ts +0 -2
  114. package/dist/preconditions/_load.d.ts.map +0 -1
  115. package/dist/preconditions/_load.js +0 -11
  116. package/dist/preconditions/_load.js.map +0 -1
  117. package/dist/register.d.ts.map +0 -1
  118. package/dist/register.js +0 -24
  119. package/dist/register.js.map +0 -1
  120. package/dist/register.mjs +0 -4
@@ -0,0 +1,19 @@
1
+ import { __name } from '../chunk-K3DKV2RO.mjs';
2
+ import { Listener } from '@sapphire/framework';
3
+ import { SubcommandPluginEvents } from '../lib/types/Events.mjs';
4
+
5
+ var _PluginListener = class _PluginListener extends Listener {
6
+ constructor(context) {
7
+ super(context, { event: SubcommandPluginEvents.SubcommandMappingIsMissingChatInputCommandHandler });
8
+ }
9
+ run(_, subcommand, context) {
10
+ const { name, location } = context.command;
11
+ this.container.logger.error(`Encountered a missing mapping on chat input subcommand "${name}" at "${location.full}"`, subcommand);
12
+ }
13
+ };
14
+ __name(_PluginListener, "PluginListener");
15
+ var PluginListener = _PluginListener;
16
+
17
+ export { PluginListener };
18
+ //# sourceMappingURL=out.js.map
19
+ //# sourceMappingURL=PluginSubcommandMappingIsMissingChatInputCommandHandler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/listeners/PluginSubcommandMappingIsMissingChatInputCommandHandler.ts"],"names":[],"mappings":";;;;;AAAA,SAAS,gBAAuC;AAChD,SAAS,8BAAoE;AAGtE,IAAM,kBAAN,MAAM,wBAAuB,SAA0F;AAAA,EACtH,YAAY,SAAiC;AACnD,UAAM,SAAS,EAAE,OAAO,uBAAuB,kDAAkD,CAAC;AAAA,EACnG;AAAA,EAEgB,IAAI,GAAiC,YAAqC,SAA0C;AACnI,UAAM,EAAE,MAAM,SAAS,IAAI,QAAQ;AACnC,SAAK,UAAU,OAAO,MAAM,2DAA2D,IAAI,SAAS,SAAS,IAAI,KAAK,UAAU;AAAA,EACjI;AACD;AAT8H;AAAvH,IAAM,iBAAN","sourcesContent":["import { Listener, type ChatInputCommand } from '@sapphire/framework';\nimport { SubcommandPluginEvents, type ChatInputSubcommandErrorPayload } from '../lib/types/Events';\nimport type { SubcommandMappingMethod } from '../lib/types/SubcommandMappings';\n\nexport class PluginListener extends Listener<typeof SubcommandPluginEvents.SubcommandMappingIsMissingChatInputCommandHandler> {\n\tpublic constructor(context: Listener.LoaderContext) {\n\t\tsuper(context, { event: SubcommandPluginEvents.SubcommandMappingIsMissingChatInputCommandHandler });\n\t}\n\n\tpublic override run(_: ChatInputCommand.Interaction, subcommand: SubcommandMappingMethod, context: ChatInputSubcommandErrorPayload) {\n\t\tconst { name, location } = context.command;\n\t\tthis.container.logger.error(`Encountered a missing mapping on chat input subcommand \"${name}\" at \"${location.full}\"`, subcommand);\n\t}\n}\n"]}
@@ -0,0 +1,19 @@
1
+ import { __name } from '../chunk-K3DKV2RO.mjs';
2
+ import { Listener } from '@sapphire/framework';
3
+ import { SubcommandPluginEvents } from '../lib/types/Events.mjs';
4
+
5
+ var _PluginListener = class _PluginListener extends Listener {
6
+ constructor(context) {
7
+ super(context, { event: SubcommandPluginEvents.SubcommandMappingIsMissingMessageCommandHandler });
8
+ }
9
+ run(_, subcommand, context) {
10
+ const { name, location } = context.command;
11
+ this.container.logger.error(`Encountered a missing mapping on message subcommand "${name}" at "${location.full}"`, subcommand);
12
+ }
13
+ };
14
+ __name(_PluginListener, "PluginListener");
15
+ var PluginListener = _PluginListener;
16
+
17
+ export { PluginListener };
18
+ //# sourceMappingURL=out.js.map
19
+ //# sourceMappingURL=PluginSubcommandMappingIsMissingMessageCommandHandler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/listeners/PluginSubcommandMappingIsMissingMessageCommandHandler.ts"],"names":[],"mappings":";;;;;AAAA,SAAS,gBAAgB;AAEzB,SAAS,8BAAkE;AAGpE,IAAM,kBAAN,MAAM,wBAAuB,SAAwF;AAAA,EACpH,YAAY,SAAiC;AACnD,UAAM,SAAS,EAAE,OAAO,uBAAuB,gDAAgD,CAAC;AAAA,EACjG;AAAA,EAEgB,IAAI,GAAY,YAAqC,SAAwC;AAC5G,UAAM,EAAE,MAAM,SAAS,IAAI,QAAQ;AACnC,SAAK,UAAU,OAAO,MAAM,wDAAwD,IAAI,SAAS,SAAS,IAAI,KAAK,UAAU;AAAA,EAC9H;AACD;AAT4H;AAArH,IAAM,iBAAN","sourcesContent":["import { Listener } from '@sapphire/framework';\nimport type { Message } from 'discord.js';\nimport { SubcommandPluginEvents, type MessageSubcommandErrorPayload } from '../lib/types/Events';\nimport type { SubcommandMappingMethod } from '../lib/types/SubcommandMappings';\n\nexport class PluginListener extends Listener<typeof SubcommandPluginEvents.SubcommandMappingIsMissingMessageCommandHandler> {\n\tpublic constructor(context: Listener.LoaderContext) {\n\t\tsuper(context, { event: SubcommandPluginEvents.SubcommandMappingIsMissingMessageCommandHandler });\n\t}\n\n\tpublic override run(_: Message, subcommand: SubcommandMappingMethod, context: MessageSubcommandErrorPayload) {\n\t\tconst { name, location } = context.command;\n\t\tthis.container.logger.error(`Encountered a missing mapping on message subcommand \"${name}\" at \"${location.full}\"`, subcommand);\n\t}\n}\n"]}
@@ -0,0 +1,27 @@
1
+ import { __name } from '../chunk-K3DKV2RO.mjs';
2
+ import { container } from '@sapphire/pieces';
3
+ import { PluginListener } from './PluginChatInputSubcommandError.mjs';
4
+ import { PluginListener as PluginListener$1 } from './PluginMessageSubcommandError.mjs';
5
+ import { PluginListener as PluginListener$2 } from './PluginSubcommandMappingIsMissingChatInputCommandHandler.mjs';
6
+ import { PluginListener as PluginListener$3 } from './PluginSubcommandMappingIsMissingMessageCommandHandler.mjs';
7
+
8
+ function loadListeners() {
9
+ const store = "listeners";
10
+ void container.stores.loadPiece({ name: "PluginChatInputSubcommandError", piece: PluginListener, store });
11
+ void container.stores.loadPiece({ name: "PluginMessageSubcommandError", piece: PluginListener$1, store });
12
+ void container.stores.loadPiece({
13
+ name: "PluginSubcommandMappingIsMissingChatInputCommandHandler",
14
+ piece: PluginListener$2,
15
+ store
16
+ });
17
+ void container.stores.loadPiece({
18
+ name: "PluginSubcommandMappingIsMissingMessageCommandHandler",
19
+ piece: PluginListener$3,
20
+ store
21
+ });
22
+ }
23
+ __name(loadListeners, "loadListeners");
24
+
25
+ export { loadListeners };
26
+ //# sourceMappingURL=out.js.map
27
+ //# sourceMappingURL=_load.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/listeners/_load.ts"],"names":[],"mappings":";;;;;AAAA,SAAS,iBAAiB;AAC1B,SAAS,kBAAkB,sCAAsC;AACjE,SAAS,kBAAkB,oCAAoC;AAC/D,SAAS,kBAAkB,+DAA+D;AAC1F,SAAS,kBAAkB,6DAA6D;AAEjF,SAAS,gBAAgB;AAC/B,QAAM,QAAQ;AACd,OAAK,UAAU,OAAO,UAAU,EAAE,MAAM,kCAAkC,OAAO,gCAAgC,MAAM,CAAC;AACxH,OAAK,UAAU,OAAO,UAAU,EAAE,MAAM,gCAAgC,OAAO,8BAA8B,MAAM,CAAC;AACpH,OAAK,UAAU,OAAO,UAAU;AAAA,IAC/B,MAAM;AAAA,IACN,OAAO;AAAA,IACP;AAAA,EACD,CAAC;AACD,OAAK,UAAU,OAAO,UAAU;AAAA,IAC/B,MAAM;AAAA,IACN,OAAO;AAAA,IACP;AAAA,EACD,CAAC;AACF;AAdgB","sourcesContent":["import { container } from '@sapphire/pieces';\nimport { PluginListener as PluginChatInputSubcommandError } from './PluginChatInputSubcommandError';\nimport { PluginListener as PluginMessageSubcommandError } from './PluginMessageSubcommandError';\nimport { PluginListener as PluginSubcommandMappingIsMissingChatInputCommandHandler } from './PluginSubcommandMappingIsMissingChatInputCommandHandler';\nimport { PluginListener as PluginSubcommandMappingIsMissingMessageCommandHandler } from './PluginSubcommandMappingIsMissingMessageCommandHandler';\n\nexport function loadListeners() {\n\tconst store = 'listeners' as const;\n\tvoid container.stores.loadPiece({ name: 'PluginChatInputSubcommandError', piece: PluginChatInputSubcommandError, store });\n\tvoid container.stores.loadPiece({ name: 'PluginMessageSubcommandError', piece: PluginMessageSubcommandError, store });\n\tvoid container.stores.loadPiece({\n\t\tname: 'PluginSubcommandMappingIsMissingChatInputCommandHandler',\n\t\tpiece: PluginSubcommandMappingIsMissingChatInputCommandHandler,\n\t\tstore\n\t});\n\tvoid container.stores.loadPiece({\n\t\tname: 'PluginSubcommandMappingIsMissingMessageCommandHandler',\n\t\tpiece: PluginSubcommandMappingIsMissingMessageCommandHandler,\n\t\tstore\n\t});\n}\n"]}
@@ -0,0 +1,88 @@
1
+ import { __name, __publicField } from '../chunk-K3DKV2RO.mjs';
2
+ import { AllFlowsPrecondition, BucketScope } from '@sapphire/framework';
3
+ import { RateLimitManager } from '@sapphire/ratelimits';
4
+ import { time, TimestampStyles } from 'discord.js';
5
+ import '../lib/Subcommand.mjs';
6
+ import { SubcommandIdentifiers } from '../lib/types/Enums.mjs';
7
+
8
+ var _PluginPrecondition = class _PluginPrecondition extends AllFlowsPrecondition {
9
+ constructor() {
10
+ super(...arguments);
11
+ __publicField(this, "subcommandBuckets", /* @__PURE__ */ new WeakMap());
12
+ }
13
+ messageRun(message, subcommand, context) {
14
+ const cooldownId = this.getIdFromMessage(message, context);
15
+ return this.sharedRun(message.author.id, subcommand, context, cooldownId, "message");
16
+ }
17
+ chatInputRun(interaction, subcommand, context) {
18
+ const cooldownId = this.getIdFromInteraction(interaction, context);
19
+ return this.sharedRun(interaction.user.id, subcommand, context, cooldownId, "chat input");
20
+ }
21
+ contextMenuRun(interaction, subcommand, context) {
22
+ const cooldownId = this.getIdFromInteraction(interaction, context);
23
+ return this.sharedRun(interaction.user.id, subcommand, context, cooldownId, "context menu");
24
+ }
25
+ sharedRun(authorId, subcommand, context, cooldownId, commandType) {
26
+ if (context.external)
27
+ return this.ok();
28
+ if (!context.delay)
29
+ return this.ok();
30
+ if (context.filteredUsers?.includes(authorId))
31
+ return this.ok();
32
+ const rateLimit = this.getManager(subcommand, context).acquire(cooldownId);
33
+ if (rateLimit.limited) {
34
+ const remaining = rateLimit.remainingTime;
35
+ const nextAvailable = time(Math.floor(rateLimit.expires / 1e3), TimestampStyles.RelativeTime);
36
+ return this.error({
37
+ identifier: SubcommandIdentifiers.SubcommandPreconditionCooldown,
38
+ message: `There is a cooldown in effect for this ${commandType} subcommand. It'll be available ${nextAvailable}.`,
39
+ context: { remaining }
40
+ });
41
+ }
42
+ rateLimit.consume();
43
+ return this.ok();
44
+ }
45
+ getIdFromMessage(message, context) {
46
+ const subcommandIdentifier = this.getSubcommandMappingName(context);
47
+ switch (context.scope) {
48
+ case BucketScope.Global:
49
+ return `global.${subcommandIdentifier}`;
50
+ case BucketScope.Channel:
51
+ return `${message.channelId}.${subcommandIdentifier}`;
52
+ case BucketScope.Guild:
53
+ return `${message.guildId}.${subcommandIdentifier}` ?? `${message.channelId}.${subcommandIdentifier}`;
54
+ default:
55
+ return `${message.author.id}.${subcommandIdentifier}`;
56
+ }
57
+ }
58
+ getIdFromInteraction(interaction, context) {
59
+ const subcommandIdentifier = this.getSubcommandMappingName(context);
60
+ switch (context.scope) {
61
+ case BucketScope.Global:
62
+ return `global.${subcommandIdentifier}`;
63
+ case BucketScope.Channel:
64
+ return `${interaction.channelId}.${subcommandIdentifier}`;
65
+ case BucketScope.Guild:
66
+ return `${interaction.guildId}.${subcommandIdentifier}` ?? `${interaction.channelId}.${subcommandIdentifier}`;
67
+ default:
68
+ return `${interaction.user.id}.${subcommandIdentifier}`;
69
+ }
70
+ }
71
+ getSubcommandMappingName(context) {
72
+ return context.subcommandGroupName ? `${context.subcommandGroupName}.${context.subcommandMethodName}` : context.subcommandMethodName;
73
+ }
74
+ getManager(subcommand, context) {
75
+ let manager = this.subcommandBuckets.get(subcommand);
76
+ if (!manager) {
77
+ manager = new RateLimitManager(context.delay, context.limit);
78
+ this.subcommandBuckets.set(subcommand, manager);
79
+ }
80
+ return manager;
81
+ }
82
+ };
83
+ __name(_PluginPrecondition, "PluginPrecondition");
84
+ var PluginPrecondition = _PluginPrecondition;
85
+
86
+ export { PluginPrecondition };
87
+ //# sourceMappingURL=out.js.map
88
+ //# sourceMappingURL=PluginSubcommandCooldown.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/preconditions/PluginSubcommandCooldown.ts"],"names":[],"mappings":"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","sourcesContent":["import { AllFlowsPrecondition, BucketScope, Command, CorePreconditions } from '@sapphire/framework';\nimport { RateLimitManager } from '@sapphire/ratelimits';\nimport {\n\tTimestampStyles,\n\ttime,\n\ttype ChatInputCommandInteraction,\n\ttype CommandInteraction,\n\ttype ContextMenuCommandInteraction,\n\ttype Message\n} from 'discord.js';\nimport { Subcommand } from '../lib/Subcommand';\nimport { SubcommandIdentifiers } from '../lib/types/Enums';\n\n/**\n * The context for the subcommand cooldown precondition\n * @since 5.1.0\n */\nexport interface SubcommandCooldownPreconditionContext extends CorePreconditions.CooldownContext {\n\t/** The name of the subcommand */\n\tsubcommandMethodName: string;\n\t/** The name of the subcommand group, if any */\n\tsubcommandGroupName?: string;\n}\n\n/**\n * The subcommand cooldown precondition. This differs from the cooldown precondition in framework by using a separate\n * bucket as well as resolving the id differently to ensure it is specific to a subcommand.\n * @since 5.1.0\n */\nexport class PluginPrecondition extends AllFlowsPrecondition {\n\tpublic subcommandBuckets = new WeakMap<Subcommand, RateLimitManager<string>>();\n\n\tpublic override messageRun(\n\t\tmessage: Message,\n\t\tsubcommand: Subcommand,\n\t\tcontext: SubcommandCooldownPreconditionContext\n\t): AllFlowsPrecondition.Result {\n\t\tconst cooldownId = this.getIdFromMessage(message, context);\n\n\t\treturn this.sharedRun(message.author.id, subcommand, context, cooldownId, 'message');\n\t}\n\n\tpublic override chatInputRun(\n\t\tinteraction: ChatInputCommandInteraction,\n\t\tsubcommand: Subcommand,\n\t\tcontext: SubcommandCooldownPreconditionContext\n\t): AllFlowsPrecondition.Result {\n\t\tconst cooldownId = this.getIdFromInteraction(interaction, context);\n\n\t\treturn this.sharedRun(interaction.user.id, subcommand, context, cooldownId, 'chat input');\n\t}\n\n\tpublic override contextMenuRun(\n\t\tinteraction: ContextMenuCommandInteraction,\n\t\tsubcommand: Command,\n\t\tcontext: SubcommandCooldownPreconditionContext\n\t): AllFlowsPrecondition.Result {\n\t\tconst cooldownId = this.getIdFromInteraction(interaction, context);\n\n\t\treturn this.sharedRun(interaction.user.id, subcommand as Subcommand, context, cooldownId, 'context menu');\n\t}\n\n\tprivate sharedRun(\n\t\tauthorId: string,\n\t\tsubcommand: Subcommand,\n\t\tcontext: SubcommandCooldownPreconditionContext,\n\t\tcooldownId: string,\n\t\tcommandType: string\n\t): AllFlowsPrecondition.Result {\n\t\t// If the subcommand it is testing for is not this one, return ok:\n\t\tif (context.external) return this.ok();\n\n\t\t// If there is no delay (undefined, null, 0), return ok:\n\t\tif (!context.delay) return this.ok();\n\n\t\t// If the user has provided any filtered users and the authorId is in that array, return ok:\n\t\tif (context.filteredUsers?.includes(authorId)) return this.ok();\n\n\t\tconst rateLimit = this.getManager(subcommand, context).acquire(cooldownId);\n\n\t\tif (rateLimit.limited) {\n\t\t\tconst remaining = rateLimit.remainingTime;\n\n\t\t\tconst nextAvailable = time(Math.floor(rateLimit.expires / 1000), TimestampStyles.RelativeTime);\n\t\t\treturn this.error({\n\t\t\t\tidentifier: SubcommandIdentifiers.SubcommandPreconditionCooldown,\n\t\t\t\tmessage: `There is a cooldown in effect for this ${commandType} subcommand. It'll be available ${nextAvailable}.`,\n\t\t\t\tcontext: { remaining }\n\t\t\t});\n\t\t}\n\n\t\trateLimit.consume();\n\t\treturn this.ok();\n\t}\n\n\tprivate getIdFromMessage(message: Message, context: SubcommandCooldownPreconditionContext) {\n\t\tconst subcommandIdentifier = this.getSubcommandMappingName(context);\n\t\tswitch (context.scope) {\n\t\t\tcase BucketScope.Global:\n\t\t\t\treturn `global.${subcommandIdentifier}`;\n\t\t\tcase BucketScope.Channel:\n\t\t\t\treturn `${message.channelId}.${subcommandIdentifier}`;\n\t\t\tcase BucketScope.Guild:\n\t\t\t\treturn `${message.guildId}.${subcommandIdentifier}` ?? `${message.channelId}.${subcommandIdentifier}`;\n\t\t\tdefault:\n\t\t\t\treturn `${message.author.id}.${subcommandIdentifier}`;\n\t\t}\n\t}\n\n\tprivate getIdFromInteraction(interaction: CommandInteraction, context: SubcommandCooldownPreconditionContext) {\n\t\tconst subcommandIdentifier = this.getSubcommandMappingName(context);\n\t\tswitch (context.scope) {\n\t\t\tcase BucketScope.Global:\n\t\t\t\treturn `global.${subcommandIdentifier}`;\n\t\t\tcase BucketScope.Channel:\n\t\t\t\treturn `${interaction.channelId}.${subcommandIdentifier}`;\n\t\t\tcase BucketScope.Guild:\n\t\t\t\treturn `${interaction.guildId}.${subcommandIdentifier}` ?? `${interaction.channelId}.${subcommandIdentifier}`;\n\t\t\tdefault:\n\t\t\t\treturn `${interaction.user.id}.${subcommandIdentifier}`;\n\t\t}\n\t}\n\n\tprivate getSubcommandMappingName(context: SubcommandCooldownPreconditionContext) {\n\t\treturn context.subcommandGroupName ? `${context.subcommandGroupName}.${context.subcommandMethodName}` : context.subcommandMethodName;\n\t}\n\n\tprivate getManager(subcommand: Subcommand, context: SubcommandCooldownPreconditionContext) {\n\t\tlet manager = this.subcommandBuckets.get(subcommand);\n\t\tif (!manager) {\n\t\t\tmanager = new RateLimitManager(context.delay, context.limit);\n\t\t\tthis.subcommandBuckets.set(subcommand, manager);\n\t\t}\n\t\treturn manager;\n\t}\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import { __name } from '../chunk-K3DKV2RO.mjs';
2
+ import { container } from '@sapphire/pieces';
3
+ import { PluginPrecondition } from './PluginSubcommandCooldown.mjs';
4
+
5
+ function loadPreconditions() {
6
+ const store = "preconditions";
7
+ void container.stores.loadPiece({ name: "PluginSubcommandCooldown", piece: PluginPrecondition, store });
8
+ }
9
+ __name(loadPreconditions, "loadPreconditions");
10
+
11
+ export { loadPreconditions };
12
+ //# sourceMappingURL=out.js.map
13
+ //# sourceMappingURL=_load.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/preconditions/_load.ts"],"names":[],"mappings":";;;;;AAAA,SAAS,iBAAiB;AAC1B,SAAS,sBAAsB,gCAAgC;AAExD,SAAS,oBAAoB;AACnC,QAAM,QAAQ;AACd,OAAK,UAAU,OAAO,UAAU,EAAE,MAAM,4BAA4B,OAAO,0BAA0B,MAAM,CAAC;AAC7G;AAHgB","sourcesContent":["import { container } from '@sapphire/pieces';\nimport { PluginPrecondition as PluginSubcommandCooldown } from './PluginSubcommandCooldown';\n\nexport function loadPreconditions() {\n\tconst store = 'preconditions' as const;\n\tvoid container.stores.loadPiece({ name: 'PluginSubcommandCooldown', piece: PluginSubcommandCooldown, store });\n}\n"]}
@@ -0,0 +1,14 @@
1
+ import { Plugin, postInitialization, SapphireClient } from '@sapphire/framework';
2
+ import { ClientOptions } from 'discord.js';
3
+
4
+ /**
5
+ * @since 3.1.2
6
+ */
7
+ declare class SubcommandsPlugin extends Plugin {
8
+ /**
9
+ * @since 3.1.2
10
+ */
11
+ static [postInitialization](this: SapphireClient, options: ClientOptions): void;
12
+ }
13
+
14
+ export { SubcommandsPlugin };
@@ -0,0 +1,22 @@
1
+ import { __name } from './chunk-K3DKV2RO.mjs';
2
+ import { SapphireClient, postInitialization, Plugin } from '@sapphire/framework';
3
+ import { loadPreconditions, loadListeners } from './index.mjs';
4
+
5
+ var _SubcommandsPlugin = class _SubcommandsPlugin extends Plugin {
6
+ /**
7
+ * @since 3.1.2
8
+ */
9
+ static [postInitialization](options) {
10
+ loadPreconditions();
11
+ if (options.loadSubcommandErrorListeners !== false) {
12
+ loadListeners();
13
+ }
14
+ }
15
+ };
16
+ __name(_SubcommandsPlugin, "SubcommandsPlugin");
17
+ var SubcommandsPlugin = _SubcommandsPlugin;
18
+ SapphireClient.plugins.registerPostInitializationHook(SubcommandsPlugin[postInitialization], "Subcommand-PostInitialization");
19
+
20
+ export { SubcommandsPlugin };
21
+ //# sourceMappingURL=out.js.map
22
+ //# sourceMappingURL=register.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/register.ts"],"names":[],"mappings":";;;;;AAAA,SAAS,QAAQ,oBAAoB,sBAAsB;AAE3D,SAAS,eAAe,yBAAyB;AAK1C,IAAM,qBAAN,MAAM,2BAA0B,OAAO;AAAA;AAAA;AAAA;AAAA,EAI7C,QAAe,kBAAkB,EAAwB,SAA8B;AACtF,sBAAkB;AAElB,QAAI,QAAQ,iCAAiC,OAAO;AACnD,oBAAc;AAAA,IACf;AAAA,EACD;AACD;AAX8C;AAAvC,IAAM,oBAAN;AAaP,eAAe,QAAQ,+BAA+B,kBAAkB,kBAAkB,GAAG,+BAA+B","sourcesContent":["import { Plugin, postInitialization, SapphireClient } from '@sapphire/framework';\nimport type { ClientOptions } from 'discord.js';\nimport { loadListeners, loadPreconditions } from './index';\n\n/**\n * @since 3.1.2\n */\nexport class SubcommandsPlugin extends Plugin {\n\t/**\n\t * @since 3.1.2\n\t */\n\tpublic static [postInitialization](this: SapphireClient, options: ClientOptions): void {\n\t\tloadPreconditions();\n\n\t\tif (options.loadSubcommandErrorListeners !== false) {\n\t\t\tloadListeners();\n\t\t}\n\t}\n}\n\nSapphireClient.plugins.registerPostInitializationHook(SubcommandsPlugin[postInitialization], 'Subcommand-PostInitialization');\n"]}
package/package.json CHANGED
@@ -1,41 +1,54 @@
1
1
  {
2
2
  "name": "@sapphire/plugin-subcommands",
3
- "version": "5.1.1-next.f01b974.0",
3
+ "version": "6.0.0-next.37591c8.0",
4
4
  "description": "Plugin for @sapphire/framework that adds support for subcommands.",
5
5
  "author": "@sapphire",
6
6
  "license": "MIT",
7
- "main": "dist/index.js",
8
- "module": "dist/index.mjs",
9
- "types": "dist/index.d.ts",
7
+ "main": "dist/cjs/index.cjs",
8
+ "module": "dist/esm/index.mjs",
9
+ "types": "dist/cjs/index.d.ts",
10
10
  "exports": {
11
11
  ".": {
12
- "types": "./dist/index.d.ts",
13
- "import": "./dist/index.mjs",
14
- "require": "./dist/index.js"
12
+ "import": {
13
+ "types": "./dist/esm/index.d.mts",
14
+ "default": "./dist/esm/index.mjs"
15
+ },
16
+ "require": {
17
+ "types": "./dist/cjs/index.d.ts",
18
+ "default": "./dist/cjs/index.cjs"
19
+ }
15
20
  },
16
21
  "./register": {
17
- "types": "./dist/register.d.ts",
18
- "import": "./dist/register.mjs",
19
- "require": "./dist/register.js"
22
+ "import": {
23
+ "types": "./dist/esm/register.d.mts",
24
+ "default": "./dist/esm/register.mjs"
25
+ },
26
+ "require": {
27
+ "types": "./dist/cjs/register.d.ts",
28
+ "default": "./dist/cjs/register.cjs"
29
+ }
20
30
  }
21
31
  },
22
32
  "sideEffects": [
23
- "./dist/register.js",
24
- "./dist/register.mjs"
33
+ "./dist/cjs/register.cjs",
34
+ "./dist/esm/register.mjs"
25
35
  ],
26
36
  "homepage": "https://github.com/sapphiredev/plugins/tree/main/packages/subcommands",
27
37
  "scripts": {
28
38
  "lint": "eslint src --ext ts --fix",
29
- "build": "tsc -b src && yarn esm:register && yarn esm:default",
30
- "esm:register": "gen-esm-wrapper dist/register.js dist/register.mjs",
31
- "esm:default": "gen-esm-wrapper dist/index.js dist/index.mjs",
39
+ "build": "tsup && yarn build:types",
40
+ "build:types": "concurrently \"yarn:build:types:*\"",
41
+ "build:types:cjs": "rollup-type-bundler -d dist/cjs",
42
+ "build:types:esm": "rollup-type-bundler -d dist/esm -t .mts",
43
+ "build:types:cleanup": "tsx ../../scripts/clean-register-imports.mts",
44
+ "typecheck": "tsc -b src",
32
45
  "docs": "typedoc-json-parser",
33
46
  "prepack": "yarn build",
34
47
  "bump": "cliff-jumper",
35
48
  "check-update": "cliff-jumper --dry-run"
36
49
  },
37
50
  "dependencies": {
38
- "@sapphire/utilities": "^3.13.0",
51
+ "@sapphire/utilities": "^3.14.0",
39
52
  "tslib": "^2.6.2"
40
53
  },
41
54
  "repository": {
@@ -44,8 +57,7 @@
44
57
  "directory": "packages/subcommands"
45
58
  },
46
59
  "files": [
47
- "dist/",
48
- "!dist/.tsbuildinfo"
60
+ "dist/"
49
61
  ],
50
62
  "engines": {
51
63
  "node": ">=v18",
@@ -70,7 +82,10 @@
70
82
  },
71
83
  "devDependencies": {
72
84
  "@favware/cliff-jumper": "^2.2.3",
73
- "gen-esm-wrapper": "^1.1.3",
85
+ "@favware/rollup-type-bundler": "^3.2.1",
86
+ "concurrently": "^8.2.2",
87
+ "tsup": "^8.0.1",
88
+ "tsx": "^4.6.2",
74
89
  "typedoc": "^0.25.4",
75
90
  "typedoc-json-parser": "^9.0.1",
76
91
  "typescript": "^5.3.2"
package/dist/index.d.ts DELETED
@@ -1,48 +0,0 @@
1
- import { CooldownOptions } from '@sapphire/framework';
2
- import { PluginPrecondition as SubcommandCooldown, type SubcommandCooldownPreconditionContext } from './preconditions/PluginSubcommandCooldown';
3
- export * from './lib/Subcommand';
4
- export * as SubcommandPreconditionResolvers from './lib/precondition-resolvers/subcommandCooldown';
5
- export * from './lib/types/Enums';
6
- export * from './lib/types/Events';
7
- export * from './lib/types/SubcommandMappings';
8
- declare module 'discord.js' {
9
- interface ClientOptions {
10
- /**
11
- * If Plugin-subcommand to load pre-included subcommand error event listeners that log any encountered errors to the {@link SapphireClient.logger} instance
12
- * @since 3.1.2
13
- * @default true
14
- */
15
- loadSubcommandErrorListeners?: boolean;
16
- /**
17
- * Sets the default cooldown time for all subcommands.
18
- * @remark This is separate from {@link ClientOptions.defaultCooldown} as it is only used for subcommands
19
- * @remark Note that for the `filteredCommands` option you have to provide it as
20
- * - For a subcommand without a group: `commandName.subcommandName` (e.g. `config.show`).
21
- * - For a subcommand with a group: `commandName.groupName.subcommandName` (e.g. `config.set.prefix`).
22
- * @since 5.1.0
23
- * @default "No cooldown options"
24
- */
25
- subcommandDefaultCooldown?: CooldownOptions;
26
- }
27
- }
28
- declare module '@sapphire/framework' {
29
- interface Preconditions {
30
- SubcommandCooldown: SubcommandPreconditions.SubcommandCooldownContext;
31
- }
32
- }
33
- /**
34
- * The preconditions specific to subcommands
35
- * @since 5.1.0
36
- */
37
- export declare const SubcommandPreconditions: {
38
- SubcommandCooldown: typeof SubcommandCooldown;
39
- };
40
- /**
41
- * The preconditions specific to subcommands
42
- * @since 5.1.0
43
- */
44
- export declare namespace SubcommandPreconditions {
45
- /** The context for the subcommand cooldown precondition */
46
- type SubcommandCooldownContext = SubcommandCooldownPreconditionContext;
47
- }
48
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,kBAAkB,IAAI,kBAAkB,EAAE,KAAK,qCAAqC,EAAE,MAAM,0CAA0C,CAAC;AAEhJ,cAAc,kBAAkB,CAAC;AACjC,OAAO,KAAK,+BAA+B,MAAM,iDAAiD,CAAC;AACnG,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gCAAgC,CAAC;AAE/C,OAAO,QAAQ,YAAY,CAAC;IAC3B,UAAU,aAAa;QACtB;;;;WAIG;QACH,4BAA4B,CAAC,EAAE,OAAO,CAAC;QACvC;;;;;;;;WAQG;QACH,yBAAyB,CAAC,EAAE,eAAe,CAAC;KAC5C;CACD;AAED,OAAO,QAAQ,qBAAqB,CAAC;IACpC,UAAU,aAAa;QACtB,kBAAkB,EAAE,uBAAuB,CAAC,yBAAyB,CAAC;KACtE;CACD;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB;;CAEnC,CAAC;AAEF;;;GAGG;AACH,yBAAiB,uBAAuB,CAAC;IACxC,2DAA2D;IAC3D,KAAY,yBAAyB,GAAG,qCAAqC,CAAC;CAC9E"}
package/dist/index.js DELETED
@@ -1,43 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
19
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
20
- };
21
- var __importStar = (this && this.__importStar) || function (mod) {
22
- if (mod && mod.__esModule) return mod;
23
- var result = {};
24
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
25
- __setModuleDefault(result, mod);
26
- return result;
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.SubcommandPreconditions = exports.SubcommandPreconditionResolvers = void 0;
30
- const PluginSubcommandCooldown_1 = require("./preconditions/PluginSubcommandCooldown");
31
- __exportStar(require("./lib/Subcommand"), exports);
32
- exports.SubcommandPreconditionResolvers = __importStar(require("./lib/precondition-resolvers/subcommandCooldown"));
33
- __exportStar(require("./lib/types/Enums"), exports);
34
- __exportStar(require("./lib/types/Events"), exports);
35
- __exportStar(require("./lib/types/SubcommandMappings"), exports);
36
- /**
37
- * The preconditions specific to subcommands
38
- * @since 5.1.0
39
- */
40
- exports.SubcommandPreconditions = {
41
- SubcommandCooldown: PluginSubcommandCooldown_1.PluginPrecondition
42
- };
43
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uFAAgJ;AAEhJ,mDAAiC;AACjC,mHAAmG;AACnG,oDAAkC;AAClC,qDAAmC;AACnC,iEAA+C;AA6B/C;;;GAGG;AACU,QAAA,uBAAuB,GAAG;IACtC,kBAAkB,EAAlB,6CAAkB;CAClB,CAAC"}
package/dist/index.mjs DELETED
@@ -1,10 +0,0 @@
1
- import mod from "./index.js";
2
-
3
- export default mod;
4
- export const Subcommand = mod.Subcommand;
5
- export const SubcommandCommandPreConditions = mod.SubcommandCommandPreConditions;
6
- export const SubcommandIdentifiers = mod.SubcommandIdentifiers;
7
- export const SubcommandPluginEvents = mod.SubcommandPluginEvents;
8
- export const SubcommandPluginIdentifiers = mod.SubcommandPluginIdentifiers;
9
- export const SubcommandPreconditionResolvers = mod.SubcommandPreconditionResolvers;
10
- export const SubcommandPreconditions = mod.SubcommandPreconditions;
@@ -1,81 +0,0 @@
1
- import { Command, PreconditionContainerArray, type Args, type ChatInputCommand, type MessageCommand } from '@sapphire/framework';
2
- import type { CacheType, Message } from 'discord.js';
3
- import type { SubcommandMappingArray } from './types/SubcommandMappings';
4
- /**
5
- * The class to extends for commands that have subcommands.
6
- * Specify the subcommands through the {@link Subcommand.Options.subcommands} option.
7
- *
8
- * Note that you should not make **all** your commands extend this class, _only_ the ones that have subcommands.
9
- * The reason for this is that this class implements {@link Command.messageRun} and {@link Command.chatInputRun}
10
- * which you wouldn't necessarily want to do for commands that don't have subcommands.
11
- * Furthermore, it also just adds general unnecessary memory overhead.
12
- */
13
- export declare class Subcommand<PreParseReturn extends Args = Args, Options extends Subcommand.Options = Subcommand.Options> extends Command<PreParseReturn, Options> {
14
- #private;
15
- /**
16
- * The preconditions to be run for each specified subcommand.
17
- * @since 4.1.0
18
- */
19
- readonly subcommandPreconditions: Map<string, PreconditionContainerArray>;
20
- /**
21
- * The parsed subcommand mappings that were provided with the {@link SubcommandOptions.subcommands} option.
22
- * This is built at construction time and is used to determine which subcommand to run.
23
- */
24
- parsedSubcommandMappings: SubcommandMappingArray;
25
- /**
26
- * Whether to use case insensitive subcommands. This is only relevant for message-command styled commands as
27
- * chat input commands are always lowercase. This can be enabled through `clientOptions.caseInsensitiveCommands`.
28
- */
29
- caseInsensitiveSubcommands: boolean;
30
- constructor(context: Subcommand.LoaderContext, options: Options);
31
- onLoad(): void;
32
- /**
33
- * Whether this command has message-based subcommands or not
34
- * @returns `true` if this command has message-based subcommands, otherwise `false`
35
- */
36
- supportsMessageCommands(): boolean;
37
- /**
38
- * Whether this command has chat input subcommands or not
39
- * @returns `true` if this command has chat input subcommands, otherwise `false`
40
- */
41
- supportsChatInputCommands(): this is ChatInputCommand;
42
- /**
43
- * The method that is ran when a message-based subcommand is ran.
44
- *
45
- * **DO NOT** override this in your implementation of a subcommand!
46
- */
47
- messageRun(message: Message, args: PreParseReturn, context: MessageCommand.RunContext): Promise<void>;
48
- /**
49
- * The method that is ran when a chat input based subcommand is ran.
50
- *
51
- * **DO NOT** override this in your implementation of a subcommand!
52
- */
53
- chatInputRun(interaction: ChatInputCommand.Interaction, context: ChatInputCommand.RunContext): Promise<void>;
54
- }
55
- export interface SubcommandOptions extends Command.Options {
56
- subcommands?: SubcommandMappingArray;
57
- /**
58
- * Whether to add aliases for subcommands with dashes in them
59
- *
60
- * When this option is enabled *and* the subcommand implements `messageRun`, dashless aliases will be added.
61
- *
62
- * For subcommands groups both the group itself and all subcommands within the group will have dashless aliases added.
63
- *
64
- * @since 3.0.0
65
- * @default false
66
- */
67
- generateDashLessAliases?: boolean;
68
- }
69
- export declare namespace Subcommand {
70
- type Options = SubcommandOptions;
71
- type JSON = Command.JSON;
72
- /** @deprecated Use {@linkcode LoaderContext} instead. */
73
- type Context = LoaderContext;
74
- type LoaderContext = Command.LoaderContext;
75
- type RunInTypes = Command.RunInTypes;
76
- type ChatInputCommandInteraction<Cached extends CacheType = CacheType> = Command.ChatInputCommandInteraction<Cached>;
77
- type ContextMenuCommandInteraction<Cached extends CacheType = CacheType> = Command.ContextMenuCommandInteraction<Cached>;
78
- type AutocompleteInteraction<Cached extends CacheType = CacheType> = Command.AutocompleteInteraction<Cached>;
79
- type Registry = Command.Registry;
80
- }
81
- //# sourceMappingURL=Subcommand.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Subcommand.d.ts","sourceRoot":"","sources":["../../src/lib/Subcommand.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,OAAO,EACP,0BAA0B,EAI1B,KAAK,IAAI,EACT,KAAK,gBAAgB,EACrB,KAAK,cAAc,EAEnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAQrD,OAAO,KAAK,EAGX,sBAAsB,EAEtB,MAAM,4BAA4B,CAAC;AAEpC;;;;;;;;GAQG;AACH,qBAAa,UAAU,CAAC,cAAc,SAAS,IAAI,GAAG,IAAI,EAAE,OAAO,SAAS,UAAU,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAE,SAAQ,OAAO,CACnI,cAAc,EACd,OAAO,CACP;;IACA;;;OAGG;IACH,SAAgB,uBAAuB,0CAAiD;IAExF;;;OAGG;IACI,wBAAwB,EAAE,sBAAsB,CAAC;IAExD;;;OAGG;IACI,0BAA0B,UAAS;gBAEvB,OAAO,EAAE,UAAU,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO;IAkKtD,MAAM;IAWtB;;;OAGG;IACa,uBAAuB,IAAI,OAAO;IAIlD;;;OAGG;IACa,yBAAyB,IAAI,IAAI,IAAI,gBAAgB;IAIrE;;;;OAIG;IACmB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,CAAC,UAAU;IA4F3G;;;;OAIG;IACmB,YAAY,CAAC,WAAW,EAAE,gBAAgB,CAAC,WAAW,EAAE,OAAO,EAAE,gBAAgB,CAAC,UAAU;CA8MlH;AAED,MAAM,WAAW,iBAAkB,SAAQ,OAAO,CAAC,OAAO;IACzD,WAAW,CAAC,EAAE,sBAAsB,CAAC;IACrC;;;;;;;;;OASG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,yBAAiB,UAAU,CAAC;IAC3B,KAAY,OAAO,GAAG,iBAAiB,CAAC;IACxC,KAAY,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAChC,yDAAyD;IACzD,KAAY,OAAO,GAAG,aAAa,CAAC;IACpC,KAAY,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAClD,KAAY,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAC5C,KAAY,2BAA2B,CAAC,MAAM,SAAS,SAAS,GAAG,SAAS,IAAI,OAAO,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAC5H,KAAY,6BAA6B,CAAC,MAAM,SAAS,SAAS,GAAG,SAAS,IAAI,OAAO,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC;IAChI,KAAY,uBAAuB,CAAC,MAAM,SAAS,SAAS,GAAG,SAAS,IAAI,OAAO,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACpH,KAAY,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;CACxC"}