UNPKG

amesu

Version:
85 lines (84 loc) 3.6 kB
/// <reference types="node" /> import type { ClientEvent } from '../bot/event'; import { EventEmitter } from 'node:events'; import { generateApi } from '../api'; import { DispatchData, IntentEvent } from '../bot/session'; import { Request } from '../utils/request'; import { LogLevel, Logger } from '../utils/logger'; /** 客户端配置项 */ export interface ClientConfig { /** 机器人 ID */ appid: string; /** 机器人令牌 */ token: string; /** 机器人密钥 */ secret: string; /** 分片,默认 `[0, 1]` */ shard?: number[]; /** 订阅事件 */ events: IntentEvent[]; /** 是否开启沙盒,默认 `false` */ sandbox?: boolean; /** 掉线重连数,默认 `3` */ max_retry?: number; /** 日志等级,默认 `'INFO'` */ log_level?: LogLevel; } type Api = ReturnType<typeof generateApi>; type EventInterceptor = (dispatch: DispatchData) => DispatchData | Promise<DispatchData>; export interface Client extends EventEmitter { addListener<T extends keyof ClientEvent>(event: T, listener: ClientEvent[T]): this; addListener(event: string | symbol, listener: (...args: unknown[]) => void): this; on<T extends keyof ClientEvent>(event: T, listener: ClientEvent[T]): this; on(event: string | symbol, listener: (...args: unknown[]) => void): this; once<T extends keyof ClientEvent>(event: T, listener: ClientEvent[T]): this; once(event: string | symbol, listener: (...args: unknown[]) => void): this; removeListener<T extends keyof ClientEvent>(event: T, listener: ClientEvent[T]): this; removeListener(event: string | symbol, listener: (...args: any[]) => void): this; off<T extends keyof ClientEvent>(event: T, listener: ClientEvent[T]): this; off(event: string | symbol, listener: (...args: unknown[]) => void): this; removeAllListeners<T extends keyof ClientEvent>(event?: T): this; removeAllListeners(event?: string | symbol): this; listeners<T extends keyof ClientEvent>(event: T): Function[]; listeners(event: string | symbol): Function[]; rawListeners<T extends keyof ClientEvent>(event: T): Function[]; rawListeners(event: string | symbol): Function[]; emit<T extends keyof ClientEvent>(event: T, ...args: Parameters<ClientEvent[T]>): boolean; emit(event: string | symbol, ...args: any[]): boolean; listenerCount<T extends keyof ClientEvent>(event: T, listener?: ClientEvent[T]): number; listenerCount(event: string | symbol, listener?: Function): number; prependListener<T extends keyof ClientEvent>(event: T, listener: ClientEvent[T]): this; prependListener(event: string | symbol, listener: (...args: any[]) => void): this; prependOnceListener<T extends keyof ClientEvent>(event: T, listener: ClientEvent[T]): this; prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; eventNames<T extends keyof ClientEvent>(): T[]; eventNames(): Array<string | symbol>; } export declare class Client extends EventEmitter { config: ClientConfig; logger: Logger; api: Api; request: Request; private token; private session; private eventInterceptors; constructor(config: ClientConfig); /** * 机器人上线。 */ online(): Promise<void>; /** * 机器人下线。 */ offline(): void; /** * 添加事件拦截器。 */ useEventInterceptor(interceptor: EventInterceptor): void; private onDispatch; private onMessage; private checkConfig; private createApi; private createRequest; } export {};