Skip to content
Classgatewayv0.9.0

EventHandler

Base class for a Discord client event handler.

Pass the event name(s) as the generic, the same one(s) as @RegisterEvent. On a single-event handler, read this.event (the payload tuple) directly. On a handler registered for several events, branch with this.match, keyed by event name, since the union of payload tuples is not directly readable.

abstract class EventHandler<
    Names extends ValidNonInteractionKeys
> extends BaseHandler<ClientEvents[Names]>

Member visibility

Filter class members by access level.

Showing members with Protected visibility and higher.

Names

One or more ClientEvents keys, e.g. Events.MessageCreate or Events.MessageCreate | Events.MessageUpdate.

dispatch

The bag for this dispatch. Each interaction gets its own. Every handler for one event shares a single bag.

protected readonly dispatch: DispatchContext

Inherited from:BaseHandler

route

The event that started this dispatch, one of the names in the generic.

protected readonly route: Names

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.

abstract execute(): Promisable<void>

Inherited from:BaseHandler

getEvent()

getEvent(): ValidEvent

Inherited from:BaseHandler

match()

Run the case for the current event. Use this only when the handler is registered for several events. On a single-event handler, read this.event directly. On a multi-event handler this.event is never, so match is the only way to read the payload.

Provide one case per registered event, keyed by its name, and each case receives that event's own payload tuple. The cases must cover every event in the generic. A missing event or an unknown key is a compile error.

protected async match<Ret, Cases>(
    cases: OnlyCases<Cases, EventMatchCases<Names, Ret>>
): Promise<MatchResult<Ret, Cases>>
Parameter: cases

One handler per registered event, keyed by event name.

Type parameter: Ret

The type that every case must return. Leave it out to get the union of what the cases return.