UNPKG

seyfert

Version:

The most advanced framework for discord bots

52 lines (51 loc) 2.52 kB
import type { Client, WorkerClient } from '../client'; import type { UsingClient } from '../commands'; import type { FileLoaded } from '../commands/handler'; import { BaseHandler, type CamelCase, type MakeRequired, type SnakeCase } from '../common'; import type { ClientEvents } from '../events/hooks'; import { type GatewayDispatchPayload } from '../types'; import type { ClientEvent, ClientNameEvents, CustomEvents, CustomEventsKeys, EventContext } from './event'; export type EventValue = MakeRequired<ClientEvent, '__filePath'> & { fired?: boolean; }; export type GatewayEvents = Uppercase<SnakeCase<keyof ClientEvents>>; export type ResolveEventParams<T extends ClientNameEvents | CustomEventsKeys | GatewayEvents> = T extends CustomEventsKeys ? [...Parameters<CustomEvents[T]>, UsingClient] : T extends GatewayEvents ? EventContext<{ data: { name: CamelCase<T>; }; }> : T extends ClientNameEvents ? EventContext<{ data: { name: T; }; }> : never; export type ResolveEventRunParams<T extends ClientNameEvents | CustomEventsKeys | GatewayEvents> = T extends CustomEventsKeys ? Parameters<CustomEvents[T]> : T extends GatewayEvents ? EventContext<{ data: { name: CamelCase<T>; }; }> : T extends ClientNameEvents ? EventContext<{ data: { name: T; }; }> : never; export type EventValues = { [K in CustomEventsKeys | GatewayEvents]: Omit<EventValue, 'run'> & { run(...args: ResolveEventRunParams<K>): any; }; }; export declare class EventHandler extends BaseHandler { protected client: Client | WorkerClient; constructor(client: Client | WorkerClient); onFail: (event: GatewayEvents | CustomEventsKeys, err: unknown) => void; filter: (path: string) => boolean; values: Partial<EventValues>; discordEvents: ClientNameEvents[]; set(events: ClientEvent[]): void; load(eventsDir: string): Promise<void>; execute(raw: GatewayDispatchPayload, client: Client<true> | WorkerClient<true>, shardId: number): Promise<void>; runEvent(name: GatewayEvents, client: Client | WorkerClient, packet: unknown, shardId: number, runCache?: boolean): Promise<void>; runCustom<T extends CustomEventsKeys>(name: T, ...args: ResolveEventRunParams<T>): Promise<void>; reload(name: GatewayEvents | CustomEventsKeys): Promise<any>; reloadAll(stopIfFail?: boolean): Promise<void>; onFile(file: FileLoaded<ClientEvent>): ClientEvent[] | undefined; callback: (file: ClientEvent) => ClientEvent | false; }