amesu
Version:
Node.js SDK for QQ Bot.
85 lines (84 loc) • 3.6 kB
TypeScript
/// <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 {};