miraipie
Version:
the most powerful nodejs development kit for mirai-api-http
220 lines • 8.59 kB
TypeScript
/// <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