InteractionMiddleware
Base class for interaction middleware.
Middleware runs after the dispatcher builds the handler and before the gates, over the handler's own reply surface. Name the kinds in the generic and list the same ones in { kinds }. Several kinds give this.event a union. The discord.js guards narrow it. A catchall reads every repliable kind.
abstract class InteractionMiddleware<
Kind extends MiddlewareKind = MiddlewareKind
> extends RepliableHandler<InteractionOf<Kind>>Member visibility
Filter class members by access level.
InteractionMiddleware(
event: InteractionOf<Kind>,
core: Core,
dispatch: DispatchContext,
sender: ReplySender
)Kind
One or more InteractionKind members. Defaults to every repliable kind.
Kind extends MiddlewareKind = MiddlewareKindcore
readonly core: TCoreInherited from:BaseHandler
dispatch
The bag for this dispatch. Each interaction gets its own. Every handler for one event shares a single bag.
protected readonly dispatch: DispatchContextInherited from:BaseHandler
event
protected readonly event: EventInherited from:BaseHandler
logger
protected readonly logger: LoggerInherited from:BaseHandler
routeId
protected readonly routeId: stringInherited from:RepliableHandler
sender
The reply surface for this interaction. Pass the handler to reply from outside its class.
readonly sender: TSenderInherited from:RepliableHandler
- optional
Runs once the handler settles, newest middleware first. A refusal or a throw still reaches it, since seedcord calls it on every middleware whose execute() started. Implement it to release something this middleware took in execute(), such as a lock or an open span. A throw in here is logged and goes no further.
public async after(result: DispatchResult): Promise<void>resultHow the dispatch ended. Either failure state carries the thrown value on caught.
buildSender()
protected buildSender(
event: Event,
core: Core,
dispatch: DispatchContext
): ReplySenderInherited from:RepliableHandler
defer()
Show a "thinking" placeholder, then fill it later with edit.
Inherited from:RepliableHandler
delete()
Delete the initial reply or deferred placeholder. Pass a target to delete a message a prior send returned.
Inherited from:RepliableHandler
edit()
Rewrite the initial reply or deferred placeholder. The targeted form rewrites a message a prior send returned.
protected async edit(
response: ReplyResponse<TNative> | string
): Promise<TMessage>Inherited from:RepliableHandler
execute()
Holds the main logic of your handler. The dispatcher calls it after the handler's gates pass, so a gate that refuses stops execute() from running.
Inherited from:BaseHandler
followUp()
Send a new message once the interaction is acknowledged.
protected async followUp(
response: ReplyResponse<TNative> | string,
opts?: SendOpts
): Promise<TMessage>Inherited from:RepliableHandler
reply()
Send the initial response, exactly once.
protected async reply(
response: ReplyResponse<TNative> | string,
opts?: SendOpts
): Promise<TMessage>Inherited from:RepliableHandler
send()
Routes to reply, followUp, or edit based on the current ack state.
protected async send(
response: ReplyResponse<TNative> | string,
opts?: SendOpts
): Promise<TMessage>Inherited from:RepliableHandler