heybox-bot
Version:
A heybox chat bot frame
158 lines • 6.51 kB
TypeScript
import BotConfig from './config';
import { BotEvent, BotEventCancelable, EventCallback, Message, MessageBuilder, UserMessage, UserMessageBuilder } from './type';
/**
* `HeyBoxBot` 类代表一个聊天机器人,用于处理命令和事件
*/
export declare class HeyBoxBot {
private path;
private logger?;
private heartbeatTimes;
/**
* 机器人配置对象,包含机器人运行所需的各种配置信息
*/
private readonly config;
/**
* 命令管理器,用于处理和管理机器人接收到的各种命令
*/
private readonly commandManager?;
/**
* 事件管理器,用于处理和管理机器人接收到的各种事件
*/
private readonly eventManager;
/**
* WebSocket连接,用于与服务器进行实时通信
*/
private readonly ws;
/**
* 标记WebSocket连接是否已打开
*/
private wsOpened;
/**
* 构造函数,用于初始化机器人实例
* @param config {BotConfig} 机器人配置对象,包含机器人运行所需的各种配置信息
*/
constructor(config: BotConfig);
/**
* 异步启动方法,用于启动HeyBoxBot实例
* 此方法允许指定一个可选的路径参数,默认为当前工作目录
* 它在启动前后分别触发一系列事件,并设置WebSocket消息监听器
*
* @param {string} path - 启动的目录路径,默认为当前工作目录
* @returns {Promise<HeyBoxBot>} 返回实例本身,允许链式调用
*/
start(path?: string): Promise<HeyBoxBot>;
/**
* 停止HeyBoxBot实例
*
* 此方法在停止机器人之前和之后执行一些钩子函数,确保资源被适当管理
* 如果WebSocket连接是打开的状态,则会关闭该连接
*
* @returns {HeyBoxBot} 返回HeyBoxBot实例,允许链式调用
*/
stop(): HeyBoxBot;
/**
* 定义一个命令装饰器,用于在类中动态添加命令处理逻辑
*
* @param command 命令的字符串表示,用于指定命令的结构和参数
* @param permission 可选的权限字符串,用于限定执行该命令所需的权限
* @returns {(executor: (...args: any) => boolean) => void} 返回一个函数,该函数接受一个执行器函数作为参数,并在适当的时候调用它
*
* @example
* @ bot.command('/test {arg1: NUMBER} {arg2?: NUMBER}')
* public calc(source: CommandSource, arg1: number, arg2: number | undefined = undefined): boolean {}
*/
command(command: string, permission?: string | undefined): (executor: (...args: any) => boolean) => void;
/**
* 定义一个 cron 装饰器,用于根据给定的 cron 表达式调度任务
*
* @param _cron cron 表达式,用于指定任务执行的时间
* @returns {(executor: (bot: HeyBoxBot) => void) => void} 返回一个函数,该函数接受一个执行器函数作为参数,并在指定时间执行该执行器函数
*
* @example
* @ bot.cron('0/30 * * * * *')
* public cron(bot: HeyBoxBot): void {}
*/
cron(_cron: string): (executor: (bot: HeyBoxBot) => void) => void;
/**
* 发布一个事件,触发该事件的所有监听器
*
* @param event {string} 事件名称
* @param args {...args: any} 传递给事件回调的参数
* @returns {any[]} 事件回调的返回值(如果有)
*/
post(event: string, ...args: any): Promise<any[]>;
/**
* 定义一个事件订阅装饰器,用于根据事件触发回调
*
* @param event {string} 事件名称
* @param namespace {string} 命名空间,用于组织事件监听器
* @param priority {number} 优先级,决定事件回调的执行顺序
* @param cancelable {boolean} 是否可取消,决定是否可以取消事件,为 true 时,处理器第一个参数会传入 Cancelable
* @returns {(callback: (...args: any) => void) => void} 一个函数,接受事件回调并注册该回调到指定事件
*
* @example
* @ bot.subscribe('after-start', true)
* public test(cancelable: Cancelable, bot: HeyBoxBot) {}
*/
subscribe<T extends BotEvent, C extends BotEventCancelable>(event: T, cancelable?: C, namespace?: string, priority?: number): (callback: EventCallback<T, C>) => void;
/**
* 处理WebSocket消息的函数
* 该函数解析从WebSocket接收到的消息,并根据消息内容执行相应操作
* @param bot {HeyBoxBot} HeyBoxBot实例,用于访问机器人的功能和属性
* @param data {RawData} 从WebSocket接收到的原始数据
*/
private onWebsocketMsg;
/**
* 当接收到命令消息时调用该方法处理
* @param bot 当前机器人实例
* @param user 发送命令的用户信息
* @param commandMsg 命令消息数据
*/
private onCommandMessage;
/**
* 当用户对消息添加或移除表情时调用该方法处理
* @param bot 当前机器人实例
* @param msg 用户添加或移除表情的消息数据
*/
private onUserAddOrRemoveEmojiToMsg;
/**
* 当用户加入或离开房间时调用该方法处理
* @param bot 当前机器人实例
* @param user 加入或离开房间的用户信息
* @param msg 用户加入或离开房间的消息数据
*/
private onUserJoinOrLeaveRoom;
/**
* 当用户点击卡片消息按钮时调用该方法处理
* @param bot 当前机器人实例
* @param user 点击按钮的用户信息
* @param msg 卡片消息按钮点击事件数据
*/
private onCardMessageBtnClick;
/**
* 通过回调函数构建并发送消息
* @param callback 用于构建消息的回调函数
*/
sendMsgBy(callback: (builder: MessageBuilder) => void): void;
/**
* 发送消息对象
* @param msg 要发送的消息对象
*/
sendMsg(msg: Message): void;
/**
* 通过回调函数构建并发送用户消息
* @param callback 用于构建用户消息的回调函数
*/
sendUserMsgBy(callback: (builder: UserMessageBuilder) => void): void;
/**
* 发送用户消息对象
* @param msg 要发送的用户消息对象
*/
sendUserMsg(msg: UserMessage): void;
/**
* 获取机器人的配置
* @returns 机器人的配置对象
*/
getConfig(): BotConfig;
}
//# sourceMappingURL=index.d.ts.map