UNPKG

miraipie

Version:

the most powerful nodejs development kit for mirai-api-http

220 lines 8.59 kB
/// <reference types="node" /> import EventEmitter from 'events'; import { Logger } from 'log4js'; import { Chat } from './chat'; import { ConfigMeta, UserConfigs } from './config'; import { MessageChain } from './message'; /** pie消息过滤器类型 */ export declare type PieFilterBuilder = (...args: any[]) => PieFilter; /** pie消息过滤器 */ export declare class PieFilter { /** 消息包含@我 */ static atMe: PieFilter; /** 消息包含@全体成员 */ static atAll: PieFilter; /** 消息来自好友 */ static fromFriend: PieFilter; /** 消息来自群聊 */ static fromGroup: PieFilter; /** 消息来自群成员 */ static fromMember: PieFilter; /** 过滤器签名, 通常要能表达过滤器的意图 */ sign: string; /** * 过滤器的验证器 * @param chat 当前聊天窗口 * @param chain 当前消息链 * @param pie 当前pie对象 */ handler: (chat: Chat, chain: MessageChain, pie: Pie) => boolean; /** * 消息包含@指定QQ号群成员 * @param id 群成员QQ号 */ static at: PieFilterBuilder; /** * 消息来自指定账号 * @param id QQ号或群号 */ static from: PieFilterBuilder; /** * 消息不来自指定账号 * @param id QQ号或群号 */ static notFrom: PieFilterBuilder; /** * 消息包含单一消息类型 * @param type 单一消息类型 */ static containsType: PieFilterBuilder; /** * 消息显示串匹配正则表达式 * @param regexp 正则表达式 */ static displayStringMatch: PieFilterBuilder; /** * 消息显示串和指定串全等 * @param displayString 指定字符串 */ static displayStringEquals: PieFilterBuilder; /** * 多个消息过滤器求<strong>或</strong> * @param filters 消息过滤器 */ static or: PieFilterBuilder; } declare type PieMethodOptions<PieInstance> = { [key: string]: (this: PieInstance, ...args: any) => any; }; declare type MessageReceivedListener<PieInstance> = (this: PieInstance, chat: Chat, chain: MessageChain) => any; declare type LifecycleHookListener<PieInstance> = (this: PieInstance) => any; declare type PieHookOptions<PieInstance> = { /** * pie消息监听器, 用以监听消息并处理 * @param chat 当前聊天窗 * @param chain 消息链 * @example * // 复读机 * async received(chat, chain) => { * await chat.send(chain); * } */ received?: MessageReceivedListener<PieInstance>; /** pie安装完成hook */ installed?: LifecycleHookListener<PieInstance>; /** pie卸载完成hook */ uninstalled?: LifecycleHookListener<PieInstance>; /** pie启用hook */ enabled?: LifecycleHookListener<PieInstance>; /** pie禁用hook */ disabled?: LifecycleHookListener<PieInstance>; }; declare type PieOptions<C extends ConfigMeta, D extends object, M extends PieMethodOptions<Pie<C, D, M>>> = { /** id(必须为合法标识符) */ id: string; /** 名称 */ name: string; /** 作者 */ author: string; /** 版本号 */ version: string; /** 描述 */ description?: string; /** 作者链接 */ authorUrl?: string; /** 项目链接 */ projectUrl?: string; /** * pie用户配置元声明, 用以标识用户配置项 * @example * userConfigMeta: { * base: { * type: Number, * description: '累加器初始值', * default: 0 * }, * step: { * type: Number, * description: '累加器步长' * } * } */ configMeta?: C; /** pie中数据 */ data?: D; /** * pie中方法, 生成pie实例时会自动挂载到实例上 * @example * methods: { * greet() { * return 'Hello ' + this.author; * } * } * * // "Hello Nepsyn" * pie.greet(); */ methods?: M; /** * pie消息过滤器, 用以在执行pie处理器前过滤掉不需要的消息, 多个过滤器求<strong>与</strong>, 为true则执行messageHandler * @example * filters: [PieFilter.atMe] // 只响应@我的消息 * filters: [PieFilter.atMe, PieFilter.atAll] // 同时响应@我和@全体成员的消息 * filters: [PieFilter.or(PieFilter.atMe, PieFilter.atAll)] // 只响应@我或@全体成员的消息 * * // 自行构造过滤器 * const myFilter = { * sign: 'LuckyTest', * handler: () => Math.random() > 0.1 * } */ filters?: PieFilter[]; } & PieHookOptions<Pie<C, D, M>> & ThisType<Pie<C, D, M>>; export declare type Pie<C extends ConfigMeta = {}, D extends object = object, M extends PieMethodOptions<Pie<C, D, M>> = {}> = { /** id */ readonly id: string; /** 名称 */ readonly name: string; /** 作者 */ readonly author: string; /** 版本号 */ readonly version: string; /** 描述 */ description: string; /** 作者链接 */ authorUrl: string; /** 项目链接 */ projectUrl: string; /** 配置元定义 */ readonly configMeta: C; /** 用户配置 */ configs: UserConfigs<C>; /** pie 过滤器 */ filters: PieFilter[]; /** logger */ logger: Logger; /** 是否为 pie 标识, 恒为 true */ readonly __isPie: true; addListener(e: 'received', listener: MessageReceivedListener<Pie<C, D, M>>): any; addListener(e: 'installed', listener: LifecycleHookListener<Pie<C, D, M>>): any; addListener(e: 'uninstalled', listener: LifecycleHookListener<Pie<C, D, M>>): any; addListener(e: 'enabled', listener: LifecycleHookListener<Pie<C, D, M>>): any; addListener(e: 'disabled', listener: LifecycleHookListener<Pie<C, D, M>>): any; once(e: 'received', listener: MessageReceivedListener<Pie<C, D, M>>): any; once(e: 'installed', listener: LifecycleHookListener<Pie<C, D, M>>): any; once(e: 'uninstalled', listener: LifecycleHookListener<Pie<C, D, M>>): any; once(e: 'enabled', listener: LifecycleHookListener<Pie<C, D, M>>): any; once(e: 'disabled', listener: LifecycleHookListener<Pie<C, D, M>>): any; on(e: 'received', listener: MessageReceivedListener<Pie<C, D, M>>): any; on(e: 'installed', listener: LifecycleHookListener<Pie<C, D, M>>): any; on(e: 'uninstalled', listener: LifecycleHookListener<Pie<C, D, M>>): any; on(e: 'enabled', listener: LifecycleHookListener<Pie<C, D, M>>): any; on(e: 'disabled', listener: LifecycleHookListener<Pie<C, D, M>>): any; prependListener(e: 'received', listener: MessageReceivedListener<Pie<C, D, M>>): any; prependListener(e: 'installed', listener: LifecycleHookListener<Pie<C, D, M>>): any; prependListener(e: 'uninstalled', listener: LifecycleHookListener<Pie<C, D, M>>): any; prependListener(e: 'enabled', listener: LifecycleHookListener<Pie<C, D, M>>): any; prependListener(e: 'disabled', listener: LifecycleHookListener<Pie<C, D, M>>): any; prependOnceListener(e: 'received', listener: MessageReceivedListener<Pie<C, D, M>>): any; prependOnceListener(e: 'installed', listener: LifecycleHookListener<Pie<C, D, M>>): any; prependOnceListener(e: 'uninstalled', listener: LifecycleHookListener<Pie<C, D, M>>): any; prependOnceListener(e: 'enabled', listener: LifecycleHookListener<Pie<C, D, M>>): any; prependOnceListener(e: 'disabled', listener: LifecycleHookListener<Pie<C, D, M>>): any; emit(e: 'received', chat: Chat, chain: MessageChain): any; emit(e: 'installed'): any; emit(e: 'uninstalled'): any; emit(e: 'enabled'): any; emit(e: 'disabled'): any; listeners(e: 'received'): MessageReceivedListener<Pie<C, D, M>>[]; listeners(e: 'installed'): LifecycleHookListener<Pie<C, D, M>>[]; listeners(e: 'uninstalled'): LifecycleHookListener<Pie<C, D, M>>[]; listeners(e: 'enabled'): LifecycleHookListener<Pie<C, D, M>>[]; listeners(e: 'disabled'): LifecycleHookListener<Pie<C, D, M>>[]; } & D & M & EventEmitter; /** * 创建 pie * @param options pie 选项 */ export declare function makePie<C extends ConfigMeta, D extends object, M extends PieMethodOptions<Pie<C, D, M>>>(options: PieOptions<C, D, M>): Pie<C, D, M>; export {}; //# sourceMappingURL=pie.d.ts.map