AutocompleteHandler
Base class for a Discord autocomplete handler.
Pass the command route(s) from the generated registry as the generic, the same string(s) as @AutocompleteRoute. Branch on the focused field with this.match, read already-entered sibling options with this.options, and find which command fired with this.route.
abstract class AutocompleteHandler<
Route extends keyof SlashOptionRegistry,
Cache extends CacheType = "cached"
> extends BaseHandler<AutocompleteInteraction<Cache>>Member visibility
Filter class members by access level.
AutocompleteHandler(
event: AutocompleteInteraction<Cache>,
core: Core,
dispatch?: DispatchContext
)Route
One or more route keys from SlashOptionRegistry, e.g. 'search' or 'search' | 'find'.
Route extends keyof SlashOptionRegistryCache
The interaction cache state, 'cached' by default.
Cache extends CacheType = 'cached'core
readonly core: TCoreInherited from:BaseHandler
- optional
dispatch
protected readonly dispatch: DispatchContext | undefinedInherited from:BaseHandler
event
protected readonly event: EventInherited from:BaseHandler
protected focused: FocusedField<Route>logger
protected readonly logger: LoggerInherited from:BaseHandler
protected options: AutocompleteOptions<Route>protected route: Routeexecute()
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
getEvent()
getEvent(): ValidEventInherited from:BaseHandler
Run the arm for the focused field. Because an autocomplete always dispatches by which field is focused, match is how you read it. There is no single-field shortcut the way slash/component handlers have one.
Provide one arm per autocompletable field across the registered commands, keyed by field name. Each arm receives the focused partial value and a respond typed to that field's choice value. The arms must cover every autocompletable field, a missing field or an unknown key is a compile error. A focused field with no arm, only reachable from a stale-deployed command, throws at runtime.
protected async match<Ret>(
arms: FocusedArms<Route, Ret>
): Promise<Ret>armsOne handler per autocompletable field, keyed by field name.
Send autocomplete suggestions, callback type 8. Prefer match, which restricts each field's choices to its declared type.
protected async respond(
choices: readonly ApplicationCommandOptionChoiceData[]
): Promise<void>