meocord 4.1.2 → 4.2.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.
- package/CHANGELOG.md +98 -0
- package/dist/cjs/_shared/{controller.decorator-BywwkU9O.cjs → controller.decorator-CRn9kWob.cjs} +295 -87
- package/dist/cjs/_shared/{providers-BMMLp2SN.cjs → providers-ChvMqnLd.cjs} +74 -40
- package/dist/cjs/_shared/{sharded-cooldown-store-B65iaiAy.cjs → sharded-cooldown-store-BdAUTdYs.cjs} +1 -1
- package/dist/cjs/_shared/{startup-roots-lFc69AxC.cjs → startup-roots-CQo8mSP8.cjs} +158 -72
- package/dist/cjs/_shared/{translate-error-BnM8FbSH.cjs → translate-error-DhDVbT5M.cjs} +12 -3
- package/dist/cjs/common/index.cjs +4 -4
- package/dist/cjs/core/index.cjs +195 -157
- package/dist/cjs/decorator/index.cjs +66 -57
- package/dist/cjs/testing/index.cjs +733 -301
- package/dist/cli.json +1 -1
- package/dist/esm/bin/app-template/README.md.template +3 -1
- package/dist/esm/bin/app-template/src/controllers/button/sample.button.controller.spec.ts.template +8 -4
- package/dist/esm/bin/app-template/src/controllers/button/sample.button.controller.ts.template +2 -2
- package/dist/esm/bin/app-template/src/guards/owner.guard.spec.ts.template +8 -4
- package/dist/esm/bin/app-template/src/guards/owner.guard.ts.template +1 -1
- package/dist/esm/bin/app-template/vitest.config.ts.template +1 -1
- package/dist/esm/bin/app-template/vitest.setup.ts.template +7 -3
- package/dist/esm/build/load-config.pre-entry.js +4 -1
- package/dist/esm/common/decorator.js +6 -6
- package/dist/esm/common/deprecation.js +2 -2
- package/dist/esm/common/errors.js +2 -2
- package/dist/esm/common/execution-context.js +1 -1
- package/dist/esm/common/metadata.js +1 -1
- package/dist/esm/common/route.js +10 -1
- package/dist/esm/common/translate-error.js +1 -1
- package/dist/esm/core/command-conflicts.js +34 -34
- package/dist/esm/core/component-routes.js +74 -31
- package/dist/esm/core/dispatcher.js +51 -7
- package/dist/esm/core/filter-runner.js +2 -2
- package/dist/esm/core/handler-pipeline.js +27 -14
- package/dist/esm/core/handler-registry.js +1 -1
- package/dist/esm/core/interceptor-runner.js +2 -2
- package/dist/esm/core/meocord-factory.js +196 -157
- package/dist/esm/core/message-routes.js +4 -3
- package/dist/esm/core/observer-runner.js +4 -3
- package/dist/esm/core/providers.js +38 -21
- package/dist/esm/core/route-specificity.js +4 -4
- package/dist/esm/core/scalar-types.js +15 -3
- package/dist/esm/core/shard-context.js +1 -1
- package/dist/esm/core/startup-roots.js +2 -3
- package/dist/esm/core/theme-runtime.js +2 -2
- package/dist/esm/decorator/app.decorator.js +12 -7
- package/dist/esm/decorator/command-builder.decorator.js +4 -4
- package/dist/esm/decorator/controller-class.decorator.js +9 -4
- package/dist/esm/decorator/controller.decorator.js +110 -67
- package/dist/esm/decorator/cooldown.decorator.js +3 -3
- package/dist/esm/decorator/defer.decorator.js +4 -4
- package/dist/esm/decorator/event.decorator.js +5 -5
- package/dist/esm/decorator/filter.decorator.js +7 -7
- package/dist/esm/decorator/guard.decorator.js +8 -8
- package/dist/esm/decorator/inject.decorator.js +4 -4
- package/dist/esm/decorator/interceptor.decorator.js +7 -7
- package/dist/esm/decorator/observer.decorator.js +4 -4
- package/dist/esm/decorator/service.decorator.js +4 -4
- package/dist/esm/decorator/theme.decorator.js +3 -3
- package/dist/esm/decorator/validation.decorator.js +10 -10
- package/dist/esm/package.json.js +1 -1
- package/dist/esm/testing/catalog.js +1 -1
- package/dist/esm/testing/cooldown-store-suite.js +18 -10
- package/dist/esm/testing/discord-defaults.js +60 -7
- package/dist/esm/testing/index.js +4 -2
- package/dist/esm/testing/inspect-handler.js +20 -3
- package/dist/esm/testing/meocord-testing-module.js +229 -188
- package/dist/esm/testing/mock-fn.js +80 -10
- package/dist/esm/testing/mock-interaction.js +223 -72
- package/dist/esm/testing/response.js +1 -1
- package/dist/esm/testing/routing.js +39 -14
- package/dist/esm/testing/startup-errors.js +26 -0
- package/dist/esm/testing/strict-mocks.js +45 -0
- package/dist/esm/testing/theme.js +1 -1
- package/dist/esm/util/bundle-entry.util.js +2 -1
- package/dist/esm/util/interaction.util.js +1 -1
- package/dist/esm/util/meocord-config-validation.util.js +1 -0
- package/dist/esm/util/metadata-keys.js +1 -0
- package/dist/esm/util/refusal.util.js +148 -8
- package/dist/types/common/index.d.cts +8 -8
- package/dist/types/common/index.d.ts +8 -8
- package/dist/types/core/index.d.cts +8 -6
- package/dist/types/core/index.d.ts +8 -6
- package/dist/types/decorator/index.d.cts +30 -29
- package/dist/types/decorator/index.d.ts +30 -29
- package/dist/types/{index-D7n0FBMm.d.ts → index-CdXsFgjE.d.ts} +62 -15
- package/dist/types/{index-DEP0NYrU.d.cts → index-nn5p7OoX.d.cts} +62 -15
- package/dist/types/interface/index.d.cts +1 -1
- package/dist/types/interface/index.d.ts +1 -1
- package/dist/types/{route-C-aMI7Sl.d.cts → route-BZgFoNeB.d.cts} +5 -2
- package/dist/types/{route-C-aMI7Sl.d.ts → route-BZgFoNeB.d.ts} +5 -2
- package/dist/types/testing/index.d.cts +245 -31
- package/dist/types/testing/index.d.ts +245 -31
- package/dist/types/{theme-resolvers-DedxyscT.d.ts → theme-resolvers-BcOJVzR9.d.ts} +1 -1
- package/dist/types/{theme-resolvers-COHdX5g6.d.cts → theme-resolvers-UKr3-6Ys.d.cts} +1 -1
- package/dist/types/{translator-J6tIUfdp.d.ts → translator-BViWKtLJ.d.ts} +1 -1
- package/dist/types/{translator-B4mc1lzJ.d.cts → translator-DHMkkCpg.d.cts} +1 -1
- package/package.json +3 -2
|
@@ -32,7 +32,7 @@ import '@rsbuild/core';
|
|
|
32
32
|
* @group Decorators
|
|
33
33
|
* @category App
|
|
34
34
|
* @see {@link Inject}
|
|
35
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
35
|
+
* @see {@link https://meocord.dev/docs/4.2/services | Services}
|
|
36
36
|
*/
|
|
37
37
|
declare function Service<T>(): (target: new (...args: any[]) => T, propertyKey?: string | symbol) => void;
|
|
38
38
|
|
|
@@ -63,7 +63,7 @@ declare function Service<T>(): (target: new (...args: any[]) => T, propertyKey?:
|
|
|
63
63
|
* @group Decorators
|
|
64
64
|
* @category Handlers
|
|
65
65
|
* @see {@link Command}
|
|
66
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
66
|
+
* @see {@link https://meocord.dev/docs/4.2/slash-commands | Slash commands}
|
|
67
67
|
*/
|
|
68
68
|
declare function CommandBuilder<T extends BuildableCommandType>(commandType: T, options?: CommandBuilderOptions): (target: new () => CommandBuilderBase<T>, propertyKey?: string | symbol) => void;
|
|
69
69
|
|
|
@@ -141,7 +141,7 @@ type ParamsFit<P, Given> = [Given] extends [Unpiped<P>] ? unknown : [Misfits<P,
|
|
|
141
141
|
* @group Decorators
|
|
142
142
|
* @category Handlers
|
|
143
143
|
* @see {@link ReactionHandler}
|
|
144
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
144
|
+
* @see {@link https://meocord.dev/docs/4.2/message-commands | Message commands}
|
|
145
145
|
*/
|
|
146
146
|
declare function MessageHandler<T extends OmitPartialGroupDMChannel<Message<boolean>>, R>(): (target: object, propertyKey: string, _descriptor: TypedPropertyDescriptor<(message: T) => R> | TypedPropertyDescriptor<() => R>) => void;
|
|
147
147
|
/**
|
|
@@ -179,7 +179,7 @@ declare function MessageHandler<T extends OmitPartialGroupDMChannel<Message<bool
|
|
|
179
179
|
* @group Decorators
|
|
180
180
|
* @category Handlers
|
|
181
181
|
* @see {@link ParamsOf}
|
|
182
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
182
|
+
* @see {@link https://meocord.dev/docs/4.2/message-commands | Message commands}
|
|
183
183
|
*/
|
|
184
184
|
declare function MessageHandler<T extends OmitPartialGroupDMChannel<Message<boolean>>, R, const Pattern extends string = string>(pattern: Pattern, options?: MessageHandlerOptions): PatternedMessageHandlerDecorator<T, R, Pattern>;
|
|
185
185
|
type ReactionHandlerDecorator<T extends MessageReaction | PartialMessageReaction, R> = (target: object, propertyKey: string, descriptor: TypedPropertyDescriptor<(reaction: T, options: ReactionEvent) => R> | TypedPropertyDescriptor<(reaction: T) => R> | TypedPropertyDescriptor<() => R>) => void;
|
|
@@ -215,7 +215,7 @@ type ReactionHandlerDecorator<T extends MessageReaction | PartialMessageReaction
|
|
|
215
215
|
* @group Decorators
|
|
216
216
|
* @category Handlers
|
|
217
217
|
* @see {@link ReactionEvent}
|
|
218
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
218
|
+
* @see {@link https://meocord.dev/docs/4.2/reactions | Reactions}
|
|
219
219
|
*/
|
|
220
220
|
declare function ReactionHandler<T extends MessageReaction | PartialMessageReaction, R>(emoji?: string, settings?: ReactionHandlerSettings): ReactionHandlerDecorator<T, R>;
|
|
221
221
|
/**
|
|
@@ -307,10 +307,11 @@ type TypedParamsAccept<N, T, P> = T extends CommandType ? string extends Pattern
|
|
|
307
307
|
* the keys the handler's params require are checked against the pattern or route, a typed segment's value against
|
|
308
308
|
* its type, and a select menu's choices, such as `values: string[]`, against what discord.js gives; a key a pipe
|
|
309
309
|
* produces is declared `Piped<T>`, and left to the pipe. Two component handlers of one type whose patterns match
|
|
310
|
-
* exactly the same ids stop the bot at startup
|
|
311
|
-
*
|
|
312
|
-
*
|
|
313
|
-
*
|
|
310
|
+
* exactly the same ids stop the bot at startup. Patterns that both match an id rank segment by segment, left to
|
|
311
|
+
* right: at the first segment one spells out as literal text and the other leaves to a param, the literal one runs,
|
|
312
|
+
* so `profile/me/{section}` takes `profile/me/edit` from `profile/{userId}/edit`; between patterns that leaves tied,
|
|
313
|
+
* the narrower type at the first param where they differ. Two still tied are warned about as the bot starts, and the
|
|
314
|
+
* one listed first runs. A context menu handler receives the kind its builder's `setType()` names, and one
|
|
314
315
|
* declaring the other kind fails to compile; when the compiler cannot tell the kind, `@Command` checks the parameter
|
|
315
316
|
* type it emits as it applies. A subclass that re-declares an inherited handler on the same name or pattern takes its
|
|
316
317
|
* own builder and options; on another it still answers the inherited one too, which the bot warns about as it
|
|
@@ -343,8 +344,8 @@ type TypedParamsAccept<N, T, P> = T extends CommandType ? string extends Pattern
|
|
|
343
344
|
* @category Handlers
|
|
344
345
|
* @see {@link CommandBuilder}
|
|
345
346
|
* @see {@link route}
|
|
346
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
347
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
347
|
+
* @see {@link https://meocord.dev/docs/4.2/slash-commands | Slash commands}
|
|
348
|
+
* @see {@link https://meocord.dev/docs/4.2/components | Buttons, selects and modals}
|
|
348
349
|
*/
|
|
349
350
|
declare function Command<CBC extends BuildableCommandType, T extends CommandBuilderConstructor<CBC> | CommandType, N extends string | Route = string>(name: N, builderOrType: T): <P extends Record<string, any>, R>(target: object, propertyKey: string, _descriptor: (TypedPropertyDescriptor<Handles<CommandInteractionType<CBC, T>, [params: P], R>> | TypedPropertyDescriptor<Handles<CommandInteractionType<CBC, T>, [], R>> | TypedPropertyDescriptor<() => R>) & RouteAccepts<N, T, P> & TypedParamsAccept<N, T, P> & ChoicesAccept<N, T, P>) => void;
|
|
350
351
|
/**
|
|
@@ -383,7 +384,7 @@ declare function Command<CBC extends BuildableCommandType, T extends CommandBuil
|
|
|
383
384
|
* @group Decorators
|
|
384
385
|
* @category Handlers
|
|
385
386
|
* @see {@link Command}
|
|
386
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
387
|
+
* @see {@link https://meocord.dev/docs/4.2/autocomplete | Autocomplete}
|
|
387
388
|
*/
|
|
388
389
|
declare function Autocomplete<_R = unknown>(commandPath: string, optionName?: string): <P extends Record<string, any>, R>(target: object, propertyKey: string, _descriptor: TypedPropertyDescriptor<(interaction: AutocompleteInteraction, params: P) => R> | TypedPropertyDescriptor<(interaction: AutocompleteInteraction) => R> | TypedPropertyDescriptor<() => R>) => void;
|
|
389
390
|
|
|
@@ -419,7 +420,7 @@ declare function Autocomplete<_R = unknown>(commandPath: string, optionName?: st
|
|
|
419
420
|
* @category Controllers
|
|
420
421
|
* @see {@link Command}
|
|
421
422
|
* @see {@link ControllerOptions}
|
|
422
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
423
|
+
* @see {@link https://meocord.dev/docs/4.2/how-a-call-runs | How a call runs}
|
|
423
424
|
*/
|
|
424
425
|
declare function Controller(options?: ControllerOptions): (target: abstract new (...args: any[]) => unknown, propertyKey?: string | symbol) => void;
|
|
425
426
|
|
|
@@ -449,7 +450,7 @@ declare function Controller(options?: ControllerOptions): (target: abstract new
|
|
|
449
450
|
* @group Decorators
|
|
450
451
|
* @category Handlers
|
|
451
452
|
* @see {@link Once}
|
|
452
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
453
|
+
* @see {@link https://meocord.dev/docs/4.2/gateway-events | Gateway events}
|
|
453
454
|
*/
|
|
454
455
|
declare function On<E extends keyof ClientEvents>(event: E): <F extends (...args: ClientEvents[E]) => unknown>(target: object, propertyKey: string, _descriptor: TypedPropertyDescriptor<F>) => void;
|
|
455
456
|
/**
|
|
@@ -475,7 +476,7 @@ declare function On<E extends keyof ClientEvents>(event: E): <F extends (...args
|
|
|
475
476
|
* @group Decorators
|
|
476
477
|
* @category Handlers
|
|
477
478
|
* @see {@link On}
|
|
478
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
479
|
+
* @see {@link https://meocord.dev/docs/4.2/gateway-events | Gateway events}
|
|
479
480
|
*/
|
|
480
481
|
declare function Once<E extends keyof ClientEvents>(event: E): <F extends (...args: ClientEvents[E]) => unknown>(target: object, propertyKey: string, _descriptor: TypedPropertyDescriptor<F>) => void;
|
|
481
482
|
|
|
@@ -525,7 +526,7 @@ type CheckedEntry<E, Base extends abstract new (...args: any[]) => unknown> = E
|
|
|
525
526
|
* @see {@link UseGuard}
|
|
526
527
|
* @see {@link GuardDeniedError}
|
|
527
528
|
* @see {@link ExecutionContext}
|
|
528
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
529
|
+
* @see {@link https://meocord.dev/docs/4.2/guards | Guards}
|
|
529
530
|
*/
|
|
530
531
|
declare function Guard(options?: GuardOptions): (target: any, propertyKey?: string | symbol) => void;
|
|
531
532
|
/**
|
|
@@ -557,7 +558,7 @@ declare function Guard(options?: GuardOptions): (target: any, propertyKey?: stri
|
|
|
557
558
|
* @see {@link Guard}
|
|
558
559
|
* @see {@link GuardDeniedError}
|
|
559
560
|
* @see {@link ExecutionContext}
|
|
560
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
561
|
+
* @see {@link https://meocord.dev/docs/4.2/guards | Guards}
|
|
561
562
|
*/
|
|
562
563
|
declare function UseGuard<const T extends readonly unknown[]>(...entries: {
|
|
563
564
|
[K in keyof T]: CheckedEntry<T[K], new (...args: any[]) => GuardInterface>;
|
|
@@ -595,7 +596,7 @@ declare function UseGuard<const T extends readonly unknown[]>(...entries: {
|
|
|
595
596
|
* @group Decorators
|
|
596
597
|
* @category Pipeline stages
|
|
597
598
|
* @see {@link UseInterceptor}
|
|
598
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
599
|
+
* @see {@link https://meocord.dev/docs/4.2/interceptors | Interceptors}
|
|
599
600
|
*/
|
|
600
601
|
declare function Interceptor(options?: InterceptorOptions): (target: new (...args: any[]) => InterceptorInterface, propertyKey?: string | symbol) => void;
|
|
601
602
|
/**
|
|
@@ -627,7 +628,7 @@ declare function Interceptor(options?: InterceptorOptions): (target: new (...arg
|
|
|
627
628
|
* @group Decorators
|
|
628
629
|
* @category Pipeline stages
|
|
629
630
|
* @see {@link Interceptor}
|
|
630
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
631
|
+
* @see {@link https://meocord.dev/docs/4.2/interceptors | Interceptors}
|
|
631
632
|
*/
|
|
632
633
|
declare function UseInterceptor<const T extends readonly unknown[]>(...interceptors: {
|
|
633
634
|
[K in keyof T]: CheckedEntry<T[K], new (...args: any[]) => InterceptorInterface>;
|
|
@@ -660,7 +661,7 @@ declare function UseInterceptor<const T extends readonly unknown[]>(...intercept
|
|
|
660
661
|
* @group Decorators
|
|
661
662
|
* @category Pipeline stages
|
|
662
663
|
* @see {@link UseFilter}
|
|
663
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
664
|
+
* @see {@link https://meocord.dev/docs/4.2/exception-filters | Exception filters}
|
|
664
665
|
*/
|
|
665
666
|
declare function Catch(...errorTypes: (abstract new (...args: any[]) => unknown)[]): (target: new (...args: any[]) => ExceptionFilter<any>, propertyKey?: string | symbol) => void;
|
|
666
667
|
/**
|
|
@@ -693,7 +694,7 @@ declare function Catch(...errorTypes: (abstract new (...args: any[]) => unknown)
|
|
|
693
694
|
* @group Decorators
|
|
694
695
|
* @category Pipeline stages
|
|
695
696
|
* @see {@link Catch}
|
|
696
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
697
|
+
* @see {@link https://meocord.dev/docs/4.2/exception-filters | Exception filters}
|
|
697
698
|
*/
|
|
698
699
|
declare function UseFilter<const T extends readonly unknown[]>(...filters: {
|
|
699
700
|
[K in keyof T]: CheckedEntry<T[K], new (...args: any[]) => ExceptionFilter<any>>;
|
|
@@ -888,7 +889,7 @@ interface MeoCordOptions<G extends readonly unknown[] = readonly unknown[], I ex
|
|
|
888
889
|
* @see {@link MeoCordOptions}
|
|
889
890
|
* @see {@link MeoCordFactory}
|
|
890
891
|
* @see {@link MeoCordConfig}
|
|
891
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
892
|
+
* @see {@link https://meocord.dev/docs/4.2/configuration | Configuration}
|
|
892
893
|
*/
|
|
893
894
|
declare function MeoCord<const G extends readonly unknown[] = [], const I extends readonly unknown[] = [], const F extends readonly unknown[] = []>(options: MeoCordOptions<G, I, F>): (target: any, propertyKey?: string | symbol) => void;
|
|
894
895
|
|
|
@@ -948,7 +949,7 @@ type AcceptsInput<P, Input> = [P] extends [NoInput] ? unknown : [Input] extends
|
|
|
948
949
|
* @category Pipeline stages
|
|
949
950
|
* @see {@link UsePipe}
|
|
950
951
|
* @see {@link ValidationError}
|
|
951
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
952
|
+
* @see {@link https://meocord.dev/docs/4.2/validation | Validation and pipes}
|
|
952
953
|
*/
|
|
953
954
|
declare function Validate<S extends StandardSchemaV1, const Pipes extends ValidatePipes<S> = Record<never, never>>(schema: S, options?: ValidateOptions<Pipes>): <M extends Handler>(target: object, propertyKey: string, _descriptor: TypedPropertyDescriptor<M> & AcceptsInput<ParamsOf<M>, ValidatedInput<S, Pipes>>) => void;
|
|
954
955
|
/** Allows the descriptor when the handler's params take the pipe's output at `key`. */
|
|
@@ -983,7 +984,7 @@ type AcceptsPiped<P, K extends string, Out> = [P] extends [NoInput] ? unknown :
|
|
|
983
984
|
* @category Pipeline stages
|
|
984
985
|
* @see {@link Pipe}
|
|
985
986
|
* @see {@link Validate}
|
|
986
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
987
|
+
* @see {@link https://meocord.dev/docs/4.2/validation | Validation and pipes}
|
|
987
988
|
*/
|
|
988
989
|
declare function UsePipe<K extends string, const Pipes extends readonly [PipeEntryOf, ...PipeEntryOf[]]>(key: K, ...pipes: Pipes & {
|
|
989
990
|
[I in keyof Pipes]: CheckedEntry<Pipes[I], new (...args: any[]) => PipeInterface>;
|
|
@@ -1012,7 +1013,7 @@ declare function UsePipe<K extends string, const Pipes extends readonly [PipeEnt
|
|
|
1012
1013
|
* @group Decorators
|
|
1013
1014
|
* @category Pipeline stages
|
|
1014
1015
|
* @see {@link UsePipe}
|
|
1015
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
1016
|
+
* @see {@link https://meocord.dev/docs/4.2/validation | Validation and pipes}
|
|
1016
1017
|
*/
|
|
1017
1018
|
declare function Pipe(): (target: new (...args: any[]) => PipeInterface, propertyKey?: string | symbol) => void;
|
|
1018
1019
|
|
|
@@ -1068,7 +1069,7 @@ interface CooldownByDecorator<P> {
|
|
|
1068
1069
|
* @see {@link CooldownOptions}
|
|
1069
1070
|
* @see {@link CooldownError}
|
|
1070
1071
|
* @see {@link CooldownStore}
|
|
1071
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
1072
|
+
* @see {@link https://meocord.dev/docs/4.2/cooldowns | Cooldowns}
|
|
1072
1073
|
*/
|
|
1073
1074
|
declare function Cooldown(options: CooldownOptions & {
|
|
1074
1075
|
by?: undefined;
|
|
@@ -1162,7 +1163,7 @@ interface DeferOptions {
|
|
|
1162
1163
|
* @category Pipeline stages
|
|
1163
1164
|
* @see {@link DeferOptions}
|
|
1164
1165
|
* @see {@link respond}
|
|
1165
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
1166
|
+
* @see {@link https://meocord.dev/docs/4.2/defer | Deferring}
|
|
1166
1167
|
*/
|
|
1167
1168
|
declare function Defer(options?: DeferOptions): MethodDecorator;
|
|
1168
1169
|
|
|
@@ -1189,7 +1190,7 @@ declare function Defer(options?: DeferOptions): MethodDecorator;
|
|
|
1189
1190
|
* @category Params
|
|
1190
1191
|
* @see {@link Service}
|
|
1191
1192
|
* @see {@link createToken}
|
|
1192
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
1193
|
+
* @see {@link https://meocord.dev/docs/4.2/services | Services}
|
|
1193
1194
|
*/
|
|
1194
1195
|
declare function Inject(token: ProviderToken): (target: object, propertyKey: string | symbol | undefined, parameterIndex: number) => void;
|
|
1195
1196
|
|
|
@@ -1224,7 +1225,7 @@ declare function Inject(token: ProviderToken): (target: object, propertyKey: str
|
|
|
1224
1225
|
* @pipeline observers-settled once the call has settled and been answered, however it ended
|
|
1225
1226
|
* @group Decorators
|
|
1226
1227
|
* @category Pipeline stages
|
|
1227
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
1228
|
+
* @see {@link https://meocord.dev/docs/4.2/observers | Observers}
|
|
1228
1229
|
*/
|
|
1229
1230
|
declare function Observer(options?: ObserverOptions): (target: new (...args: any[]) => DispatchObserver, propertyKey?: string | symbol) => void;
|
|
1230
1231
|
|
|
@@ -48,7 +48,7 @@ interface MetadataDecorator<T> {
|
|
|
48
48
|
*
|
|
49
49
|
* @group Utilities
|
|
50
50
|
* @see {@link ExecutionContext}
|
|
51
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
51
|
+
* @see {@link https://meocord.dev/docs/4.2/guards | Guards}
|
|
52
52
|
*/
|
|
53
53
|
declare function createMetadata<T>(description?: string): MetadataDecorator<T>;
|
|
54
54
|
|
|
@@ -781,7 +781,7 @@ type ExecutionContextType = 'interaction' | 'autocomplete' | 'message' | 'reacti
|
|
|
781
781
|
* @group Utilities
|
|
782
782
|
* @see {@link createMetadata}
|
|
783
783
|
* @see {@link StageParams}
|
|
784
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
784
|
+
* @see {@link https://meocord.dev/docs/4.2/guards | Guards}
|
|
785
785
|
*/
|
|
786
786
|
declare abstract class ExecutionContext {
|
|
787
787
|
/**
|
|
@@ -1348,7 +1348,7 @@ declare class UserError extends Error {
|
|
|
1348
1348
|
* @group Responses
|
|
1349
1349
|
* @category Errors
|
|
1350
1350
|
* @see {@link Catch}
|
|
1351
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
1351
|
+
* @see {@link https://meocord.dev/docs/4.2/exception-filters | Exception filters}
|
|
1352
1352
|
*/
|
|
1353
1353
|
declare class CommandNotFoundError extends Error {
|
|
1354
1354
|
/** @param message - What the error says, `No handler matched the interaction.` unless given. */
|
|
@@ -1439,7 +1439,7 @@ interface MessageUsageIssue {
|
|
|
1439
1439
|
* @category Errors
|
|
1440
1440
|
* @see {@link MessageHandler}
|
|
1441
1441
|
* @see {@link translateError}
|
|
1442
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
1442
|
+
* @see {@link https://meocord.dev/docs/4.2/message-commands | Message commands}
|
|
1443
1443
|
*/
|
|
1444
1444
|
declare class MessageUsageError extends Error {
|
|
1445
1445
|
readonly usage: string;
|
|
@@ -1956,8 +1956,10 @@ interface CommandMeta<T extends string = string> {
|
|
|
1956
1956
|
/** The params a component's customId pattern captures, in the order they appear. */
|
|
1957
1957
|
dynamicParams?: T[];
|
|
1958
1958
|
/**
|
|
1959
|
-
* How specific this pattern is
|
|
1960
|
-
*
|
|
1959
|
+
* How specific this pattern is, as 4.1 ranked patterns: more literal text first.
|
|
1960
|
+
*
|
|
1961
|
+
* @deprecated Since 4.2, and removed in the next major version (5.0). Internal: nothing replaces it. Component routing
|
|
1962
|
+
* ranks patterns segment by segment and doesn't read it.
|
|
1961
1963
|
*/
|
|
1962
1964
|
specificity?: number;
|
|
1963
1965
|
/** The builder's own `guilds` option, when it has one. */
|
|
@@ -2164,7 +2166,7 @@ interface ReadyInfo {
|
|
|
2164
2166
|
*
|
|
2165
2167
|
* @group Types
|
|
2166
2168
|
* @see {@link OnShutdown}
|
|
2167
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
2169
|
+
* @see {@link https://meocord.dev/docs/4.2/lifecycle-hooks | Lifecycle hooks}
|
|
2168
2170
|
*/
|
|
2169
2171
|
interface OnReady {
|
|
2170
2172
|
/**
|
|
@@ -2211,7 +2213,7 @@ interface OnReady {
|
|
|
2211
2213
|
*
|
|
2212
2214
|
* @group Types
|
|
2213
2215
|
* @see {@link OnReady}
|
|
2214
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
2216
|
+
* @see {@link https://meocord.dev/docs/4.2/lifecycle-hooks | Lifecycle hooks}
|
|
2215
2217
|
*/
|
|
2216
2218
|
interface OnShutdown {
|
|
2217
2219
|
/** Runs before the client is destroyed. */
|
|
@@ -2546,6 +2548,15 @@ interface ControllerOptions {
|
|
|
2546
2548
|
* @defaultValue `true`
|
|
2547
2549
|
*/
|
|
2548
2550
|
inheritStages?: boolean;
|
|
2551
|
+
/**
|
|
2552
|
+
* What a handler this class re-decorates answers of the routes its base classes declare for it. `'keep'` answers
|
|
2553
|
+
* them as well as its own; `'replace'` answers only the routes this class declares for it, of every kind: commands,
|
|
2554
|
+
* component patterns, message patterns, reactions and autocompletes. A command no handler answers any more is not
|
|
2555
|
+
* registered. A method overridden without decorators keeps every route it inherits either way.
|
|
2556
|
+
*
|
|
2557
|
+
* @defaultValue `'keep'`; the next major version (5.0) replaces them by default
|
|
2558
|
+
*/
|
|
2559
|
+
inheritedRoutes?: 'keep' | 'replace';
|
|
2549
2560
|
}
|
|
2550
2561
|
/**
|
|
2551
2562
|
* One prefix or several that start a message command, such as `'!'` or `['!', '?']`; `''` stands for none.
|
|
@@ -2583,7 +2594,7 @@ type MessagePrefix = string | readonly string[];
|
|
|
2583
2594
|
* @group Configuration
|
|
2584
2595
|
* @category App options
|
|
2585
2596
|
* @see {@link MessageHandler}
|
|
2586
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
2597
|
+
* @see {@link https://meocord.dev/docs/4.2/message-commands | Message commands}
|
|
2587
2598
|
*/
|
|
2588
2599
|
interface MessageCommandOptions {
|
|
2589
2600
|
/**
|
|
@@ -2656,6 +2667,28 @@ interface MessageCommandOptions {
|
|
|
2656
2667
|
* @defaultValue `false`
|
|
2657
2668
|
*/
|
|
2658
2669
|
help?: boolean | MessageHelpOptions;
|
|
2670
|
+
/**
|
|
2671
|
+
* How a message's handlers run: the patterned handler it matched, then every `@MessageHandler()` listener.
|
|
2672
|
+
* `'sequential'` runs each once the one before it has settled, so a slow command delays the listeners after it.
|
|
2673
|
+
* `'concurrent'` starts them together and settles once all have: each keeps its own guards, interceptors, filters
|
|
2674
|
+
* and observers, and no order holds between them, so a listener can run before the command has written what it
|
|
2675
|
+
* reads. The built-in help and a command's usage are answered first either way.
|
|
2676
|
+
* @defaultValue `'sequential'`; the next major version (5.0) may run them concurrently by default
|
|
2677
|
+
*
|
|
2678
|
+
* @example
|
|
2679
|
+
* ```ts
|
|
2680
|
+
* @MeoCord({ controllers: [Commands, Moderation], messages: { prefix: '!', handlers: 'concurrent' } })
|
|
2681
|
+
* class App {}
|
|
2682
|
+
* ```
|
|
2683
|
+
*/
|
|
2684
|
+
handlers?: 'sequential' | 'concurrent';
|
|
2685
|
+
/**
|
|
2686
|
+
* Warns, once per handler, when a message's handler takes 5 seconds or more with listeners waiting after it, under
|
|
2687
|
+
* `handlers: 'sequential'`, naming the handler and how many it held back. A testing module warns only when this is
|
|
2688
|
+
* `true`, since a test's fake clock can pass 5 seconds inside a handler.
|
|
2689
|
+
* @defaultValue `true` in a running bot, `false` in a `MeoCordTestingModule`
|
|
2690
|
+
*/
|
|
2691
|
+
slowHandlerWarning?: boolean;
|
|
2659
2692
|
}
|
|
2660
2693
|
/**
|
|
2661
2694
|
* The words the built-in help command answers to, as `@MeoCord({ messages: { help } })` takes them.
|
|
@@ -2775,7 +2808,7 @@ interface MessageHelpParam {
|
|
|
2775
2808
|
* ```
|
|
2776
2809
|
*
|
|
2777
2810
|
* @group Types
|
|
2778
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
2811
|
+
* @see {@link https://meocord.dev/docs/4.2/localisation | Localisation}
|
|
2779
2812
|
*/
|
|
2780
2813
|
type MeoCordMessages = (typeof MEOCORD_MESSAGES)['meocord'];
|
|
2781
2814
|
/**
|
|
@@ -2806,7 +2839,7 @@ type MeoCordMessages = (typeof MEOCORD_MESSAGES)['meocord'];
|
|
|
2806
2839
|
*
|
|
2807
2840
|
* @group Configuration
|
|
2808
2841
|
* @category App options
|
|
2809
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
2842
|
+
* @see {@link https://meocord.dev/docs/4.2/message-params | Message params}
|
|
2810
2843
|
*/
|
|
2811
2844
|
interface MessageParamType<T = unknown> {
|
|
2812
2845
|
/** A noun such as `hex colour`, read in "is not a valid hex colour". Defaults to the type's key. */
|
|
@@ -3019,7 +3052,7 @@ type MessageScope = 'guild' | 'dm' | 'any';
|
|
|
3019
3052
|
* @group Configuration
|
|
3020
3053
|
* @category App options
|
|
3021
3054
|
* @see {@link MessageHandler}
|
|
3022
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
3055
|
+
* @see {@link https://meocord.dev/docs/4.2/message-commands | Message commands}
|
|
3023
3056
|
*/
|
|
3024
3057
|
interface MessageHandlerOptions {
|
|
3025
3058
|
/**
|
|
@@ -3077,7 +3110,7 @@ interface MessageHandlerOptions {
|
|
|
3077
3110
|
* @group Configuration
|
|
3078
3111
|
* @category Config file
|
|
3079
3112
|
* @see {@link MeoCord}
|
|
3080
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
3113
|
+
* @see {@link https://meocord.dev/docs/4.2/configuration | Configuration}
|
|
3081
3114
|
*/
|
|
3082
3115
|
interface MeoCordConfig {
|
|
3083
3116
|
/** Shown as a prefix on every log line. Omitted when unset. */
|
|
@@ -3138,6 +3171,20 @@ interface MeoCordConfig {
|
|
|
3138
3171
|
* @defaultValue `true`
|
|
3139
3172
|
*/
|
|
3140
3173
|
sourceMappedStacks?: boolean;
|
|
3174
|
+
/**
|
|
3175
|
+
* How a startup error a decorator finds, such as an invalid customId pattern, is reported.
|
|
3176
|
+
*
|
|
3177
|
+
* With `'first'`, a decorator throws its error as its class is defined, when its file is imported, so a bot with
|
|
3178
|
+
* three mistakes shows one per run. With `'all'`, decorators keep their errors, and `MeoCordFactory.create()` logs
|
|
3179
|
+
* every one, each with its handler and file, alongside the errors its own checks find, then throws the first. The
|
|
3180
|
+
* built bot reads it before your modules load. In a test, call `reportAllStartupErrors()` from `meocord/testing` in
|
|
3181
|
+
* the setup file instead.
|
|
3182
|
+
*
|
|
3183
|
+
* Whichever you choose, `create()` reports every error its own checks find, such as two handlers of one command.
|
|
3184
|
+
*
|
|
3185
|
+
* @defaultValue `'first'`; `'all'` in the next major version (5.0)
|
|
3186
|
+
*/
|
|
3187
|
+
startupErrors?: 'first' | 'all';
|
|
3141
3188
|
/**
|
|
3142
3189
|
* How long, in milliseconds, shutdown waits for the `onShutdown` hooks before destroying the client
|
|
3143
3190
|
* anyway: from 0 to 2147478647, the longest a timer keeps less the margin the shard manager waits on top. The limit covers the whole sequence, not each hook,
|
|
@@ -3196,7 +3243,7 @@ interface MeoCordConfig {
|
|
|
3196
3243
|
* @group Configuration
|
|
3197
3244
|
* @category Config file
|
|
3198
3245
|
* @see {@link ShardContext}
|
|
3199
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
3246
|
+
* @see {@link https://meocord.dev/docs/4.2/sharding | Sharding}
|
|
3200
3247
|
*/
|
|
3201
3248
|
interface ShardingConfig {
|
|
3202
3249
|
/**
|
|
@@ -3239,7 +3286,7 @@ interface ShardingConfig {
|
|
|
3239
3286
|
*
|
|
3240
3287
|
* @group Configuration
|
|
3241
3288
|
* @category Config file
|
|
3242
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
3289
|
+
* @see {@link https://meocord.dev/docs/4.2/slash-commands | Slash commands}
|
|
3243
3290
|
*/
|
|
3244
3291
|
interface CommandRegistrationConfig {
|
|
3245
3292
|
/**
|
|
@@ -48,7 +48,7 @@ interface MetadataDecorator<T> {
|
|
|
48
48
|
*
|
|
49
49
|
* @group Utilities
|
|
50
50
|
* @see {@link ExecutionContext}
|
|
51
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
51
|
+
* @see {@link https://meocord.dev/docs/4.2/guards | Guards}
|
|
52
52
|
*/
|
|
53
53
|
declare function createMetadata<T>(description?: string): MetadataDecorator<T>;
|
|
54
54
|
|
|
@@ -781,7 +781,7 @@ type ExecutionContextType = 'interaction' | 'autocomplete' | 'message' | 'reacti
|
|
|
781
781
|
* @group Utilities
|
|
782
782
|
* @see {@link createMetadata}
|
|
783
783
|
* @see {@link StageParams}
|
|
784
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
784
|
+
* @see {@link https://meocord.dev/docs/4.2/guards | Guards}
|
|
785
785
|
*/
|
|
786
786
|
declare abstract class ExecutionContext {
|
|
787
787
|
/**
|
|
@@ -1348,7 +1348,7 @@ declare class UserError extends Error {
|
|
|
1348
1348
|
* @group Responses
|
|
1349
1349
|
* @category Errors
|
|
1350
1350
|
* @see {@link Catch}
|
|
1351
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
1351
|
+
* @see {@link https://meocord.dev/docs/4.2/exception-filters | Exception filters}
|
|
1352
1352
|
*/
|
|
1353
1353
|
declare class CommandNotFoundError extends Error {
|
|
1354
1354
|
/** @param message - What the error says, `No handler matched the interaction.` unless given. */
|
|
@@ -1439,7 +1439,7 @@ interface MessageUsageIssue {
|
|
|
1439
1439
|
* @category Errors
|
|
1440
1440
|
* @see {@link MessageHandler}
|
|
1441
1441
|
* @see {@link translateError}
|
|
1442
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
1442
|
+
* @see {@link https://meocord.dev/docs/4.2/message-commands | Message commands}
|
|
1443
1443
|
*/
|
|
1444
1444
|
declare class MessageUsageError extends Error {
|
|
1445
1445
|
readonly usage: string;
|
|
@@ -1956,8 +1956,10 @@ interface CommandMeta<T extends string = string> {
|
|
|
1956
1956
|
/** The params a component's customId pattern captures, in the order they appear. */
|
|
1957
1957
|
dynamicParams?: T[];
|
|
1958
1958
|
/**
|
|
1959
|
-
* How specific this pattern is
|
|
1960
|
-
*
|
|
1959
|
+
* How specific this pattern is, as 4.1 ranked patterns: more literal text first.
|
|
1960
|
+
*
|
|
1961
|
+
* @deprecated Since 4.2, and removed in the next major version (5.0). Internal: nothing replaces it. Component routing
|
|
1962
|
+
* ranks patterns segment by segment and doesn't read it.
|
|
1961
1963
|
*/
|
|
1962
1964
|
specificity?: number;
|
|
1963
1965
|
/** The builder's own `guilds` option, when it has one. */
|
|
@@ -2164,7 +2166,7 @@ interface ReadyInfo {
|
|
|
2164
2166
|
*
|
|
2165
2167
|
* @group Types
|
|
2166
2168
|
* @see {@link OnShutdown}
|
|
2167
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
2169
|
+
* @see {@link https://meocord.dev/docs/4.2/lifecycle-hooks | Lifecycle hooks}
|
|
2168
2170
|
*/
|
|
2169
2171
|
interface OnReady {
|
|
2170
2172
|
/**
|
|
@@ -2211,7 +2213,7 @@ interface OnReady {
|
|
|
2211
2213
|
*
|
|
2212
2214
|
* @group Types
|
|
2213
2215
|
* @see {@link OnReady}
|
|
2214
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
2216
|
+
* @see {@link https://meocord.dev/docs/4.2/lifecycle-hooks | Lifecycle hooks}
|
|
2215
2217
|
*/
|
|
2216
2218
|
interface OnShutdown {
|
|
2217
2219
|
/** Runs before the client is destroyed. */
|
|
@@ -2546,6 +2548,15 @@ interface ControllerOptions {
|
|
|
2546
2548
|
* @defaultValue `true`
|
|
2547
2549
|
*/
|
|
2548
2550
|
inheritStages?: boolean;
|
|
2551
|
+
/**
|
|
2552
|
+
* What a handler this class re-decorates answers of the routes its base classes declare for it. `'keep'` answers
|
|
2553
|
+
* them as well as its own; `'replace'` answers only the routes this class declares for it, of every kind: commands,
|
|
2554
|
+
* component patterns, message patterns, reactions and autocompletes. A command no handler answers any more is not
|
|
2555
|
+
* registered. A method overridden without decorators keeps every route it inherits either way.
|
|
2556
|
+
*
|
|
2557
|
+
* @defaultValue `'keep'`; the next major version (5.0) replaces them by default
|
|
2558
|
+
*/
|
|
2559
|
+
inheritedRoutes?: 'keep' | 'replace';
|
|
2549
2560
|
}
|
|
2550
2561
|
/**
|
|
2551
2562
|
* One prefix or several that start a message command, such as `'!'` or `['!', '?']`; `''` stands for none.
|
|
@@ -2583,7 +2594,7 @@ type MessagePrefix = string | readonly string[];
|
|
|
2583
2594
|
* @group Configuration
|
|
2584
2595
|
* @category App options
|
|
2585
2596
|
* @see {@link MessageHandler}
|
|
2586
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
2597
|
+
* @see {@link https://meocord.dev/docs/4.2/message-commands | Message commands}
|
|
2587
2598
|
*/
|
|
2588
2599
|
interface MessageCommandOptions {
|
|
2589
2600
|
/**
|
|
@@ -2656,6 +2667,28 @@ interface MessageCommandOptions {
|
|
|
2656
2667
|
* @defaultValue `false`
|
|
2657
2668
|
*/
|
|
2658
2669
|
help?: boolean | MessageHelpOptions;
|
|
2670
|
+
/**
|
|
2671
|
+
* How a message's handlers run: the patterned handler it matched, then every `@MessageHandler()` listener.
|
|
2672
|
+
* `'sequential'` runs each once the one before it has settled, so a slow command delays the listeners after it.
|
|
2673
|
+
* `'concurrent'` starts them together and settles once all have: each keeps its own guards, interceptors, filters
|
|
2674
|
+
* and observers, and no order holds between them, so a listener can run before the command has written what it
|
|
2675
|
+
* reads. The built-in help and a command's usage are answered first either way.
|
|
2676
|
+
* @defaultValue `'sequential'`; the next major version (5.0) may run them concurrently by default
|
|
2677
|
+
*
|
|
2678
|
+
* @example
|
|
2679
|
+
* ```ts
|
|
2680
|
+
* @MeoCord({ controllers: [Commands, Moderation], messages: { prefix: '!', handlers: 'concurrent' } })
|
|
2681
|
+
* class App {}
|
|
2682
|
+
* ```
|
|
2683
|
+
*/
|
|
2684
|
+
handlers?: 'sequential' | 'concurrent';
|
|
2685
|
+
/**
|
|
2686
|
+
* Warns, once per handler, when a message's handler takes 5 seconds or more with listeners waiting after it, under
|
|
2687
|
+
* `handlers: 'sequential'`, naming the handler and how many it held back. A testing module warns only when this is
|
|
2688
|
+
* `true`, since a test's fake clock can pass 5 seconds inside a handler.
|
|
2689
|
+
* @defaultValue `true` in a running bot, `false` in a `MeoCordTestingModule`
|
|
2690
|
+
*/
|
|
2691
|
+
slowHandlerWarning?: boolean;
|
|
2659
2692
|
}
|
|
2660
2693
|
/**
|
|
2661
2694
|
* The words the built-in help command answers to, as `@MeoCord({ messages: { help } })` takes them.
|
|
@@ -2775,7 +2808,7 @@ interface MessageHelpParam {
|
|
|
2775
2808
|
* ```
|
|
2776
2809
|
*
|
|
2777
2810
|
* @group Types
|
|
2778
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
2811
|
+
* @see {@link https://meocord.dev/docs/4.2/localisation | Localisation}
|
|
2779
2812
|
*/
|
|
2780
2813
|
type MeoCordMessages = (typeof MEOCORD_MESSAGES)['meocord'];
|
|
2781
2814
|
/**
|
|
@@ -2806,7 +2839,7 @@ type MeoCordMessages = (typeof MEOCORD_MESSAGES)['meocord'];
|
|
|
2806
2839
|
*
|
|
2807
2840
|
* @group Configuration
|
|
2808
2841
|
* @category App options
|
|
2809
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
2842
|
+
* @see {@link https://meocord.dev/docs/4.2/message-params | Message params}
|
|
2810
2843
|
*/
|
|
2811
2844
|
interface MessageParamType<T = unknown> {
|
|
2812
2845
|
/** A noun such as `hex colour`, read in "is not a valid hex colour". Defaults to the type's key. */
|
|
@@ -3019,7 +3052,7 @@ type MessageScope = 'guild' | 'dm' | 'any';
|
|
|
3019
3052
|
* @group Configuration
|
|
3020
3053
|
* @category App options
|
|
3021
3054
|
* @see {@link MessageHandler}
|
|
3022
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
3055
|
+
* @see {@link https://meocord.dev/docs/4.2/message-commands | Message commands}
|
|
3023
3056
|
*/
|
|
3024
3057
|
interface MessageHandlerOptions {
|
|
3025
3058
|
/**
|
|
@@ -3077,7 +3110,7 @@ interface MessageHandlerOptions {
|
|
|
3077
3110
|
* @group Configuration
|
|
3078
3111
|
* @category Config file
|
|
3079
3112
|
* @see {@link MeoCord}
|
|
3080
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
3113
|
+
* @see {@link https://meocord.dev/docs/4.2/configuration | Configuration}
|
|
3081
3114
|
*/
|
|
3082
3115
|
interface MeoCordConfig {
|
|
3083
3116
|
/** Shown as a prefix on every log line. Omitted when unset. */
|
|
@@ -3138,6 +3171,20 @@ interface MeoCordConfig {
|
|
|
3138
3171
|
* @defaultValue `true`
|
|
3139
3172
|
*/
|
|
3140
3173
|
sourceMappedStacks?: boolean;
|
|
3174
|
+
/**
|
|
3175
|
+
* How a startup error a decorator finds, such as an invalid customId pattern, is reported.
|
|
3176
|
+
*
|
|
3177
|
+
* With `'first'`, a decorator throws its error as its class is defined, when its file is imported, so a bot with
|
|
3178
|
+
* three mistakes shows one per run. With `'all'`, decorators keep their errors, and `MeoCordFactory.create()` logs
|
|
3179
|
+
* every one, each with its handler and file, alongside the errors its own checks find, then throws the first. The
|
|
3180
|
+
* built bot reads it before your modules load. In a test, call `reportAllStartupErrors()` from `meocord/testing` in
|
|
3181
|
+
* the setup file instead.
|
|
3182
|
+
*
|
|
3183
|
+
* Whichever you choose, `create()` reports every error its own checks find, such as two handlers of one command.
|
|
3184
|
+
*
|
|
3185
|
+
* @defaultValue `'first'`; `'all'` in the next major version (5.0)
|
|
3186
|
+
*/
|
|
3187
|
+
startupErrors?: 'first' | 'all';
|
|
3141
3188
|
/**
|
|
3142
3189
|
* How long, in milliseconds, shutdown waits for the `onShutdown` hooks before destroying the client
|
|
3143
3190
|
* anyway: from 0 to 2147478647, the longest a timer keeps less the margin the shard manager waits on top. The limit covers the whole sequence, not each hook,
|
|
@@ -3196,7 +3243,7 @@ interface MeoCordConfig {
|
|
|
3196
3243
|
* @group Configuration
|
|
3197
3244
|
* @category Config file
|
|
3198
3245
|
* @see {@link ShardContext}
|
|
3199
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
3246
|
+
* @see {@link https://meocord.dev/docs/4.2/sharding | Sharding}
|
|
3200
3247
|
*/
|
|
3201
3248
|
interface ShardingConfig {
|
|
3202
3249
|
/**
|
|
@@ -3239,7 +3286,7 @@ interface ShardingConfig {
|
|
|
3239
3286
|
*
|
|
3240
3287
|
* @group Configuration
|
|
3241
3288
|
* @category Config file
|
|
3242
|
-
* @see {@link https://meocord.dev/docs/4.
|
|
3289
|
+
* @see {@link https://meocord.dev/docs/4.2/slash-commands | Slash commands}
|
|
3243
3290
|
*/
|
|
3244
3291
|
interface CommandRegistrationConfig {
|
|
3245
3292
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import 'discord.js';
|
|
2
2
|
import '@rsbuild/core';
|
|
3
3
|
import '../controller.enum-DTDn69N9.cjs';
|
|
4
|
-
export { ar as AutocompleteMetadata, O as BuildableCommandType, as as CallHandler, _ as CheckedParams, ao as ClassProvider, at as CommandBuildResult, S as CommandBuilderBase, X as CommandBuilderConstructor, Q as CommandBuilderOptions, Y as CommandInteractionType, au as CommandMetadata, av as CommandRegistrationConfig, a1 as ControllerOptions, ak as CooldownOptions, a9 as CooldownStoreFailure, aw as DeepPartial, D as DeepReadonly, ab as DispatchObserver, ax as DispatchOutcome, ay as DispatchResult, az as EntityRef, a7 as ExceptionFilter, F as FactoryProvider, a4 as GuardInterface, a3 as GuardOptions, aA as GuildThemeTarget, aj as InferSchemaOutput, a6 as InterceptorInterface, a5 as InterceptorOptions, J as MeoCordApplication, aB as MeoCordConfig, aq as MeoCordMessages, M as MeoCordTheme, L as MessageCommandOptions, Z as MessageHandlerOptions, N as MessageHelp, aC as MessageHelpEntry, aD as MessageHelpOptions, aE as MessageHelpParam, aF as MessageParamType, aG as MessageParamTypes, an as MessagePrefix, aH as MessageResponseContext, K as MessageScope, al as ObserverOptions, aI as OnReady, aJ as OnShutdown, W as PIPED_BRAND, aK as ParamRefsOf, aL as ParamsOf, af as PipeInterface, aM as Piped, aN as PresentedError, aO as PrimaryEntryPointCommandData, a8 as Provider, P as ProviderToken, a0 as ReactionEvent, aP as ReactionHandlerOptions, $ as ReactionHandlerSettings, aQ as ReadyInfo, aR as ReservedThemeRole, aS as ResponseContext, aT as ResponseFile, aa as ResponsePresenter, aU as ResponseView, ac as RootTheme, aV as RsbuildConfig, aW as ShardingConfig, a2 as StageParams, ag as StandardSchemaV1, aX as StandardSchemaV1Issue, aY as StandardSchemaV1Props, aZ as StandardSchemaV1Result, a_ as ThemeButtonStyle, a$ as ThemeButtons, b0 as ThemeColors, b1 as ThemeEmojis, am as ThemeOverride, ae as ThemeResolver, ad as ThemeResolvers, T as Token, b2 as UserThemeTarget, ai as ValidateOptions, ah as ValidatePipes, ap as ValueProvider } from '../index-
|
|
4
|
+
export { ar as AutocompleteMetadata, O as BuildableCommandType, as as CallHandler, _ as CheckedParams, ao as ClassProvider, at as CommandBuildResult, S as CommandBuilderBase, X as CommandBuilderConstructor, Q as CommandBuilderOptions, Y as CommandInteractionType, au as CommandMetadata, av as CommandRegistrationConfig, a1 as ControllerOptions, ak as CooldownOptions, a9 as CooldownStoreFailure, aw as DeepPartial, D as DeepReadonly, ab as DispatchObserver, ax as DispatchOutcome, ay as DispatchResult, az as EntityRef, a7 as ExceptionFilter, F as FactoryProvider, a4 as GuardInterface, a3 as GuardOptions, aA as GuildThemeTarget, aj as InferSchemaOutput, a6 as InterceptorInterface, a5 as InterceptorOptions, J as MeoCordApplication, aB as MeoCordConfig, aq as MeoCordMessages, M as MeoCordTheme, L as MessageCommandOptions, Z as MessageHandlerOptions, N as MessageHelp, aC as MessageHelpEntry, aD as MessageHelpOptions, aE as MessageHelpParam, aF as MessageParamType, aG as MessageParamTypes, an as MessagePrefix, aH as MessageResponseContext, K as MessageScope, al as ObserverOptions, aI as OnReady, aJ as OnShutdown, W as PIPED_BRAND, aK as ParamRefsOf, aL as ParamsOf, af as PipeInterface, aM as Piped, aN as PresentedError, aO as PrimaryEntryPointCommandData, a8 as Provider, P as ProviderToken, a0 as ReactionEvent, aP as ReactionHandlerOptions, $ as ReactionHandlerSettings, aQ as ReadyInfo, aR as ReservedThemeRole, aS as ResponseContext, aT as ResponseFile, aa as ResponsePresenter, aU as ResponseView, ac as RootTheme, aV as RsbuildConfig, aW as ShardingConfig, a2 as StageParams, ag as StandardSchemaV1, aX as StandardSchemaV1Issue, aY as StandardSchemaV1Props, aZ as StandardSchemaV1Result, a_ as ThemeButtonStyle, a$ as ThemeButtons, b0 as ThemeColors, b1 as ThemeEmojis, am as ThemeOverride, ae as ThemeResolver, ad as ThemeResolvers, T as Token, b2 as UserThemeTarget, ai as ValidateOptions, ah as ValidatePipes, ap as ValueProvider } from '../index-nn5p7OoX.cjs';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import 'discord.js';
|
|
2
2
|
import '@rsbuild/core';
|
|
3
3
|
import '../controller.enum-DTDn69N9.js';
|
|
4
|
-
export { ar as AutocompleteMetadata, O as BuildableCommandType, as as CallHandler, _ as CheckedParams, ao as ClassProvider, at as CommandBuildResult, S as CommandBuilderBase, X as CommandBuilderConstructor, Q as CommandBuilderOptions, Y as CommandInteractionType, au as CommandMetadata, av as CommandRegistrationConfig, a1 as ControllerOptions, ak as CooldownOptions, a9 as CooldownStoreFailure, aw as DeepPartial, D as DeepReadonly, ab as DispatchObserver, ax as DispatchOutcome, ay as DispatchResult, az as EntityRef, a7 as ExceptionFilter, F as FactoryProvider, a4 as GuardInterface, a3 as GuardOptions, aA as GuildThemeTarget, aj as InferSchemaOutput, a6 as InterceptorInterface, a5 as InterceptorOptions, J as MeoCordApplication, aB as MeoCordConfig, aq as MeoCordMessages, M as MeoCordTheme, L as MessageCommandOptions, Z as MessageHandlerOptions, N as MessageHelp, aC as MessageHelpEntry, aD as MessageHelpOptions, aE as MessageHelpParam, aF as MessageParamType, aG as MessageParamTypes, an as MessagePrefix, aH as MessageResponseContext, K as MessageScope, al as ObserverOptions, aI as OnReady, aJ as OnShutdown, W as PIPED_BRAND, aK as ParamRefsOf, aL as ParamsOf, af as PipeInterface, aM as Piped, aN as PresentedError, aO as PrimaryEntryPointCommandData, a8 as Provider, P as ProviderToken, a0 as ReactionEvent, aP as ReactionHandlerOptions, $ as ReactionHandlerSettings, aQ as ReadyInfo, aR as ReservedThemeRole, aS as ResponseContext, aT as ResponseFile, aa as ResponsePresenter, aU as ResponseView, ac as RootTheme, aV as RsbuildConfig, aW as ShardingConfig, a2 as StageParams, ag as StandardSchemaV1, aX as StandardSchemaV1Issue, aY as StandardSchemaV1Props, aZ as StandardSchemaV1Result, a_ as ThemeButtonStyle, a$ as ThemeButtons, b0 as ThemeColors, b1 as ThemeEmojis, am as ThemeOverride, ae as ThemeResolver, ad as ThemeResolvers, T as Token, b2 as UserThemeTarget, ai as ValidateOptions, ah as ValidatePipes, ap as ValueProvider } from '../index-
|
|
4
|
+
export { ar as AutocompleteMetadata, O as BuildableCommandType, as as CallHandler, _ as CheckedParams, ao as ClassProvider, at as CommandBuildResult, S as CommandBuilderBase, X as CommandBuilderConstructor, Q as CommandBuilderOptions, Y as CommandInteractionType, au as CommandMetadata, av as CommandRegistrationConfig, a1 as ControllerOptions, ak as CooldownOptions, a9 as CooldownStoreFailure, aw as DeepPartial, D as DeepReadonly, ab as DispatchObserver, ax as DispatchOutcome, ay as DispatchResult, az as EntityRef, a7 as ExceptionFilter, F as FactoryProvider, a4 as GuardInterface, a3 as GuardOptions, aA as GuildThemeTarget, aj as InferSchemaOutput, a6 as InterceptorInterface, a5 as InterceptorOptions, J as MeoCordApplication, aB as MeoCordConfig, aq as MeoCordMessages, M as MeoCordTheme, L as MessageCommandOptions, Z as MessageHandlerOptions, N as MessageHelp, aC as MessageHelpEntry, aD as MessageHelpOptions, aE as MessageHelpParam, aF as MessageParamType, aG as MessageParamTypes, an as MessagePrefix, aH as MessageResponseContext, K as MessageScope, al as ObserverOptions, aI as OnReady, aJ as OnShutdown, W as PIPED_BRAND, aK as ParamRefsOf, aL as ParamsOf, af as PipeInterface, aM as Piped, aN as PresentedError, aO as PrimaryEntryPointCommandData, a8 as Provider, P as ProviderToken, a0 as ReactionEvent, aP as ReactionHandlerOptions, $ as ReactionHandlerSettings, aQ as ReadyInfo, aR as ReservedThemeRole, aS as ResponseContext, aT as ResponseFile, aa as ResponsePresenter, aU as ResponseView, ac as RootTheme, aV as RsbuildConfig, aW as ShardingConfig, a2 as StageParams, ag as StandardSchemaV1, aX as StandardSchemaV1Issue, aY as StandardSchemaV1Props, aZ as StandardSchemaV1Result, a_ as ThemeButtonStyle, a$ as ThemeButtons, b0 as ThemeColors, b1 as ThemeEmojis, am as ThemeOverride, ae as ThemeResolver, ad as ThemeResolvers, T as Token, b2 as UserThemeTarget, ai as ValidateOptions, ah as ValidatePipes, ap as ValueProvider } from '../index-CdXsFgjE.js';
|