UNPKG

heybox-bot

Version:

A heybox chat bot frame

816 lines 26.1 kB
import { SimpleUserInfo } from '../../type/info'; /** * 图片文件信息类型定义 * 包含图片的URL、宽度和高度 */ export declare type ImgFilesInfo = { url: string; width: number; height: number; }; /** * 附加原始信息类型定义 * 包含图片文件信息数组 */ export declare type AdditionOriginal = { img_files_info: ImgFilesInfo[]; }; /** * 消息类型定义 * 包含消息的各种属性,如消息类型、内容、回复ID等 */ export declare type Message = { heychat_ack_id: string; msg_type: number; msg: string; room_id: string; channel_id: string; reply_id: string; addition: string; }; /** * 用户消息类型定义 * 包含用户消息的必要属性,如消息类型和接收用户ID */ export declare type UserMessage = { heychat_ack_id: string; msg_type: number; to_user_id: number; }; /** * Markdown用户消息类型定义 * 继承自用户消息,特有属性msg_type固定为4,表示Markdown类型的消息 */ export declare type MarkdownUserMessage = UserMessage & { msg_type: 4; msg: string; addition: string; }; /** * 图片用户消息类型定义 * 继承自用户消息,特有属性msg_type固定为3,表示图片类型的消息 */ export declare type ImageUserMessage = UserMessage & { msg_type: 3; img: string; }; /** * 扩展Markdown消息类型定义 * 继承自消息,用于定义特定类型的Markdown消息,包含额外的@用户ID、@角色ID等属性 */ export declare type ExtendedMarkdownMessage = Message & { msg_type: 10; at_user_id: string; at_role_id: string; mention_channel_id: string; channel_type: number; }; /** * 卡片消息类型定义 * 继承自消息,特有属性msg_type固定为20,表示卡片类型的消息 */ export declare type CardMessage = Message & { msg_type: 20; }; /** * AbstractMessageImpl 是一个抽象类,实现了 Message 接口的部分功能。 * 它提供了一个基础结构,用于构建和处理消息,特别是那些需要转换为特定格式的消息。 */ export declare abstract class AbstractMessageImpl implements Message { /** * addition_original 是一个可选字段,包含原始的附加信息,如图片文件信息。 */ addition_original?: AdditionOriginal; /** * addition 是一个字符串字段,以 JSON 格式存储附加信息,默认包含空的图片文件信息数组。 */ addition: string; /** * channel_id 表示消息所属的频道ID。 */ channel_id: string; /** * heychat_ack_id 是一个只读字段,用于存储消息的确认ID,确保消息的唯一性和可追踪性。 */ readonly heychat_ack_id: string; /** * msg 是消息的主体内容。 */ msg: string; /** * msg_type 是一个只读字段,表示消息的类型,不同类型的消息可能有不同的处理方式。 */ readonly msg_type: number; /** * reply_id 用于存储回复的消息ID,如果当前消息是回复其他消息的。 */ reply_id: string; /** * room_id 表示消息所属的房间ID。 */ room_id: string; /** * 构造函数,初始化消息类型。 * @param msgType 消息类型,用于区分不同的消息种类。 */ protected constructor(msgType: number); /** * 设置消息的目标房间和频道。 * @param roomId 目标房间的ID。 * @param channelId 目标频道的ID。 * @returns 返回当前实例,支持链式调用。 */ to(roomId: string, channelId: string): this; /** * 设置当前消息为回复指定消息ID的消息。 * @param msgId 被回复的消息的ID。 * @returns 返回当前实例,支持链式调用。 */ reply(msgId: string): this; /** * 抽象方法,需要在子类中实现。 * 用于将当前消息实例转换为 Message 接口定义的消息格式。 * @returns 返回转换后的 Message 实例。 */ abstract convert(): Message; } /** * 实现了ExtendedMarkdownMessage接口的类,用于创建和操作扩展Markdown消息 */ export declare class ExtendedMarkdownMessageImpl extends AbstractMessageImpl implements ExtendedMarkdownMessage { at_role_id: string; at_user_id: string; at_all?: boolean | undefined; at_hear?: boolean | undefined; channel_type: number; mention_channel_id: string; readonly msg_type: 10; /** * 私有构造函数,确保类的实例只能通过create方法创建 */ private constructor(); /** * 创建ExtendedMarkdownMessageImpl类的实例 * @returns ExtendedMarkdownMessageImpl的实例 */ static create(): ExtendedMarkdownMessageImpl; /** * 添加文本内容到消息中,支持Markdown格式 * @param text 要添加的文本 * @param bold 是否加粗文本 * @param italic 是否斜体文本 * @param strikethrough 是否划线文本 * @returns 当前实例,支持链式调用 */ text(text: string, bold?: boolean, italic?: boolean, strikethrough?: boolean): this; /** * 添加超链接到消息中,支持Markdown格式 * @param url 链接地址 * @param text 显示的文本 * @param bold 是否加粗文本 * @param italic 是否斜体文本 * @param strikethrough 是否划线文本 * @returns 当前实例,支持链式调用 */ link(url: string, text?: string, bold?: boolean, italic?: boolean, strikethrough?: boolean): this; /** * 添加图片到消息中,支持Markdown格式 * @param url 图片地址 * @param width 图片宽度 * @param height 图片高度 * @returns 当前实例,支持链式调用 */ private addImage; /** * 公共方法,用于添加图片,支持本地文件或URL * @param url 图片地址或本地文件 * @param width 图片宽度 * @param height 图片高度 * @returns 当前实例,支持链式调用 */ image(url: BufferSource | string, width: number, height: number): this; /** * 添加@用户到消息中 * @param user 用户信息 * @returns 当前实例,支持链式调用 */ at(user: SimpleUserInfo): this; /** * 添加@角色到消息中 * @param roleId 角色ID * @returns 当前实例,支持链式调用 */ atRole(roleId: string): this; /** * 添加提及频道到消息中 * @param mentionChannelId 频道ID * @returns 当前实例,支持链式调用 */ mentionChannel(mentionChannelId: string): this; /** * 添加@所有人到消息中 * @returns 当前实例,支持链式调用 */ atAll(): this; /** * 添加@在线用户到消息中 * @returns 当前实例,支持链式调用 */ atHear(): this; /** * 添加标题到消息中,支持Markdown格式 * @param text 标题文本 * @param level 标题级别,1或2 * @returns 当前实例,支持链式调用 */ header(text: string, level?: 1 | 2): this; /** * 添加有序列表到消息中 * @param text 有序列表文本 * @returns 当前实例,支持链式调用 */ order(text: string): this; /** * 添加列表项到消息中,支持Markdown格式 * @param text 列表项文本 * @param indent 缩进级别,默认为1 * @returns 当前实例,支持链式调用 */ list(text: string, indent?: number): this; /** * 获取消息中的最后一行文本 * @returns 最后一行文本 */ getLastLine(): string; /** * 转换当前实例为Message类型,移除不必要的属性 * @returns 转换后的Message实例 */ convert(): Message; } /** * 定义卡片模块的类型 */ export declare type CardOriginalModuleType = 'header' | 'section' | 'images' | 'divider' | 'button-group' | 'countdown'; /** * 定义卡片模块的结构 */ export declare type CardOriginalModule = { type: CardOriginalModuleType; }; /** * 定义卡片文本内容的类型 */ export declare type CardOriginalTextContentType = 'plain-text' | 'markdown'; /** * 定义卡片内容的类型 */ export declare type CardOriginalContentType = CardOriginalTextContentType | 'button' | 'image'; /** * 定义卡片内容的结构 */ export declare type CardOriginalContent = { type: CardOriginalContentType; }; /** * 定义卡片文本内容的结构 */ export declare type CardOriginalTextContent = CardOriginalContent & { type: CardOriginalTextContentType; text: string; width?: string; }; /** * 定义卡片纯文本内容的结构 */ export declare type CardOriginalPlainTextContent = CardOriginalTextContent & { type: 'plain-text'; }; /** * 定义卡片按钮内容事件的类型 */ export declare type CardOriginalButtonContentEventType = 'server' | 'link-to' | 'internal' | 'exchange' | 'none'; /** * 定义卡片按钮内容主题的类型 */ export declare type CardOriginalButtonContentTheme = 'primary' | 'default' | 'danger' | 'success'; /** * 定义卡片按钮配置的结构 */ export declare type CardOriginalButtonConfig = { text: string; event?: CardOriginalButtonContentEventType; value?: string; theme?: CardOriginalButtonContentTheme; }; /** * 定义卡片按钮内容的结构 */ export declare type CardOriginalButtonContent = CardOriginalContent & { type: 'button'; event: CardOriginalButtonContentEventType; value: string; text: string; theme: CardOriginalButtonContentTheme; }; /** * 定义卡片图片内容的结构 */ export declare type CardOriginalImageContent = CardOriginalContent & { type: 'image'; url: string; size: CardOriginalSize; }; /** * 定义卡片标题模块的结构 */ export declare type CardOriginalHeaderModule = CardOriginalModule & { type: 'header'; content: CardOriginalPlainTextContent; }; /** * 定义卡片段落模块的结构 */ export declare type CardOriginalSectionModule = CardOriginalModule & { type: 'section'; paragraph: CardOriginalContent[]; }; /** * 定义卡片图片模块的结构 */ export declare type CardOriginalImagesModule = CardOriginalModule & { type: 'image'; urls: { url: string; }[]; }; /** * 定义卡片分割线模块的结构 */ export declare type CardOriginalDividerModule = CardOriginalModule & { type: 'divider'; text?: string; }; /** * 定义卡片按钮组模块的结构 */ export declare type CardOriginalButtonGroupModule = CardOriginalModule & { type: 'button-group'; btns: CardOriginalButtonContent[]; }; /** * 定义卡片倒计时模块模式的类型 */ export declare type CardOriginalCountdownModuleMode = 'default' | 'calendar' | 'second'; /** * 定义卡片倒计时模块的结构 */ export declare type CardOriginalCountdownModule = CardOriginalModule & { type: 'countdown'; mode: CardOriginalCountdownModuleMode; end_time: number; }; /** * 定义卡片尺寸的类型 */ export declare type CardOriginalSize = 'small' | 'medium'; /** * 定义卡片数据的结构 */ export declare type CardOriginalData = { type: 'card'; border_color: string; size: CardOriginalSize; modules: CardOriginalModule[]; }; /** * 表示原始卡片信息 * 此类用于存储原始卡片数据的集合和相关处理逻辑 */ export declare class CardOriginal { data: CardOriginalData[]; index: number; /** * 构造函数,初始化卡片数据 * @param borderColor 边框颜色,默认为空字符串 * @param size 卡片大小,默认为'medium' */ constructor(borderColor?: string, size?: CardOriginalSize); /** * 新增一个卡片 * @param borderColor 边框颜色,默认为空字符串 * @param size 卡片大小,默认为'medium' * @returns 返回当前实例 */ newCard(borderColor?: string, size?: CardOriginalSize): this; /** * 添加一个模块到当前卡片 * @param module 要添加的模块 * @returns 返回当前实例 */ addModule(module: CardOriginalModule): this; /** * 添加一个标题模块 * @param text 标题文本 * @returns 返回当前实例 */ header(text: string): this; /** * 添加一个段落模块 * @param paragraph 段落内容 * @returns 返回当前实例 */ section(...paragraph: CardOriginalTextContent[]): this; /** * 添加一个带图片的文本模块 * @param text 文本内容 * @param image 图片路径 * @param position 图片位置 */ textWithImage(text: string, image: string, position?: 'left' | 'right'): void; /** * 添加一个带图片的Markdown模块 * @param markdown Markdown内容 * @param image 图片路径 * @param position 图片位置 */ markdownWithImage(markdown: string, image: string, position?: 'left' | 'right'): void; /** * 添加一个带按钮的文本模块 * @param text 文本内容 * @param button 按钮配置 * @returns 返回当前实例 */ textWithButton(text: string, button: CardOriginalButtonConfig | CardOriginalButtonContent): this; /** * 添加一个带按钮的Markdown模块 * @param markdown Markdown内容 * @param button 按钮配置 * @returns 返回当前实例 */ markdownWithButton(markdown: string, button: CardOriginalButtonConfig | CardOriginalButtonContent): this; /** * 添加一个纯文本模块 * @param text 文本内容 * @returns 返回当前实例 */ text(text: string): this; /** * 添加一个Markdown模块 * @param markdown Markdown内容 * @returns 返回当前实例 */ markdown(markdown: string): this; /** * 添加一个图片模块 * @param images 图片路径数组 * @returns 返回当前实例 */ images(...images: BufferSource[] | string[]): this; /** * 添加一个按钮组模块 * @param buttons 按钮配置数组 * @returns 返回当前实例 */ buttons(...buttons: CardOriginalButtonConfig[] | CardOriginalButtonContent[]): this; /** * 添加一个分割线模块 * @param text 分割线文本,可选 * @returns 返回当前实例 */ divider(text?: string | undefined): this; /** * 添加一个倒计时模块 * @param time 倒计时时间戳 * @param mode 倒计时模式 * @returns 返回当前实例 */ countdown(time: number, mode: CardOriginalCountdownModuleMode): this; /** * 将卡片数据转换为字符串 * @returns 返回卡片数据的JSON字符串 */ toString(): string; } /** * 实现卡片消息的类 */ export declare class CardMessageImpl extends AbstractMessageImpl implements CardMessage { readonly msg_type: 20; card_original?: CardOriginal; private constructor(); /** * 创建卡片消息实例 * @returns 返回卡片消息实例 */ static create(): CardMessageImpl; /** * 添加一个标题模块 * @param text 标题文本 * @returns 返回当前实例 */ header(text: string): this; /** * 添加一个段落模块 * @param paragraph 段落内容 * @returns 返回当前实例 */ section(...paragraph: CardOriginalTextContent[]): this; /** * 添加一个带图片的文本模块 * @param text 文本内容 * @param image 图片路径 * @param position 图片位置 */ textWithImage(text: string, image: string, position?: 'left' | 'right'): this; /** * 添加一个带图片的Markdown模块 * @param markdown Markdown内容 * @param image 图片路径 * @param position 图片位置 */ markdownWithImage(markdown: string, image: string, position?: 'left' | 'right'): this; /** * 添加一个带按钮的文本模块 * @param text 文本内容 * @param button 按钮配置 * @returns 返回当前实例 */ textWithButton(text: string, button: CardOriginalButtonConfig | CardOriginalButtonContent): this; /** * 添加一个带按钮的Markdown模块 * @param markdown Markdown内容 * @param button 按钮配置 * @returns 返回当前实例 */ markdownWithButton(markdown: string, button: CardOriginalButtonConfig | CardOriginalButtonContent): this; /** * 添加一个纯文本模块 * @param text 文本内容 * @returns 返回当前实例 */ text(text: string): this; /** * 添加一个Markdown模块 * @param markdown Markdown内容 * @returns 返回当前实例 */ markdown(markdown: string): this; /** * 添加一个图片模块 * @param images 图片路径数组 * @returns 返回当前实例 */ images(...images: BufferSource[] | string[]): this; /** * 添加一个按钮组模块 * @param buttons 按钮配置数组 * @returns 返回当前实例 */ buttons(...buttons: CardOriginalButtonConfig[] | CardOriginalButtonContent[]): this; /** * 添加一个分割线模块 * @param text 分割线文本,可选 * @returns 返回当前实例 */ divider(text?: string | undefined): this; /** * 添加一个倒计时模块 * @param time 倒计时时间戳 * @param mode 倒计时模式 * @returns 返回当前实例 */ countdown(time: number, mode: 'default' | 'calendar' | 'second'): this; /** * 将卡片消息转换为通用消息格式 * @returns 返回转换后的消息对象 */ convert(): Message; } /** * MessageBuilder类用于构建各种类型的消息对象 * 它提供了一系列方法来创建和定制消息,如文本、Markdown、卡片消息等 */ export declare class MessageBuilder { private message; /** * 将消息类型转换为Markdown格式 * @returns {ExtendedMarkdownMessageImpl} 返回一个扩展的Markdown消息实现对象 */ markdown(): ExtendedMarkdownMessageImpl; /** * 创建一个卡片消息对象 * @returns {CardMessageImpl} 返回一个实现了卡片消息接口的对象 */ card(): CardMessageImpl; /** * 在消息中添加一张图片 * @param {string} url 图片的URL地址 * @param {number} width 图片的宽度 * @param {number} height 图片的高度 * @returns {AbstractMessageImpl} 返回消息对象本身,以便进行链式调用 */ image(url: string, width: number, height: number): AbstractMessageImpl; /** * 在消息中添加一段文本 * @param {string} text 要添加的文本内容 * @param {boolean} bold 是否以粗体显示文本,默认为false * @param {boolean} italic 是否以斜体显示文本,默认为false * @returns {AbstractMessageImpl} 返回消息对象本身,以便进行链式调用 */ text(text: string, bold?: boolean, italic?: boolean): AbstractMessageImpl; /** * 构建最终的消息对象 * @returns {Message} 返回构建完成的消息对象 */ build(): Message; } /** * 定义一个抽象的用户消息实现类,提供了消息的基本属性和方法 * @implements {UserMessage} */ export declare abstract class AbstractUserMessageImpl implements UserMessage { /** * 消息类型,由具体实现类指定 */ abstract msg_type: number; /** * Heychat确认ID,所有消息的确认ID都是唯一的 */ readonly heychat_ack_id: string; /** * 接收消息的用户ID,默认为0 */ to_user_id: number; /** * 设置消息的接收者ID * @param {number} userId - 接收消息的用户ID * @returns {this} 返回当前实例,支持链式调用 */ to(userId: number): this; /** * 将当前实例转换为UserMessage接口定义的消息格式 * @returns {UserMessage} 转换后的消息对象 */ abstract convert(): UserMessage; } /** * Markdown用户消息的具体实现类,用于创建和操作Markdown格式的消息 * @implements {MarkdownUserMessage} * @extends {AbstractUserMessageImpl} */ export declare class MarkdownUserMessageImpl extends AbstractUserMessageImpl implements MarkdownUserMessage { /** * 消息类型常量,Markdown消息类型为4 */ readonly msg_type: 4; /** * Markdown消息内容 */ msg: string; /** * 消息的附加信息,以字符串形式存储 */ addition: string; /** * 消息的原始附加信息,包含图片文件信息 */ addition_original?: AdditionOriginal; /** * 构造函数,私有以防止外部直接实例化 */ private constructor(); /** * 创建一个新的MarkdownUserMessageImpl实例 * @returns {MarkdownUserMessageImpl} 新的实例对象 */ static create(): MarkdownUserMessageImpl; /** * 添加文本内容到消息中,支持Markdown格式 * @param {string} text - 要添加的文本 * @param {boolean} bold - 是否加粗文本,默认为false * @param {boolean} italic - 是否斜体文本,默认为false * @param {boolean} strikethrough - 是否删除线文本,默认为false * @returns {this} 返回当前实例,支持链式调用 */ text(text: string, bold?: boolean, italic?: boolean, strikethrough?: boolean): this; /** * 添加超链接到消息中 * @param {string} url - 链接地址 * @param {string} text - 显示的链接文本,默认为链接地址 * @param {boolean} bold - 是否加粗文本,默认为false * @param {boolean} italic - 是否斜体文本,默认为false * @param {boolean} strikethrough - 是否删除线文本,默认为false * @returns {this} 返回当前实例,支持链式调用 */ link(url: string, text?: string, bold?: boolean, italic?: boolean, strikethrough?: boolean): this; /** * 添加图片到消息中,内部使用 * @param {string} url - 图片链接地址 * @param {number} width - 图片宽度 * @param {number} height - 图片高度 * @returns {this} 返回当前实例,支持链式调用 */ private addImage; /** * 添加图片到消息中,支持不同来源的图片 * @param {BufferSource | string} url - 图片链接地址或文件 * @param {number} width - 图片宽度 * @param {number} height - 图片高度 * @returns {this} 返回当前实例,支持链式调用 */ image(url: BufferSource | string, width: number, height: number): this; /** * 添加标题到消息中 * @param {string} text - 标题文本 * @param {1 | 2} level - 标题级别,默认为1 * @returns {this} 返回当前实例,支持链式调用 */ header(text: string, level?: 1 | 2): this; /** * 添加有序列表到消息中 * @param {string} text - 有序列表文本 * @returns {this} 返回当前实例,支持链式调用 */ order(text: string): this; /** * 添加列表项到消息中 * @param {string} text - 列表项文本 * @param {number} indent - 缩进级别,默认为1 * @returns {this} 返回当前实例,支持链式调用 */ list(text: string, indent?: number): this; /** * 获取消息的最后一行文本 * @returns {string} 最后一行文本,如果没有则返回空字符串 */ getLastLine(): string; /** * 将当前实例转换为UserMessage接口定义的消息格式 * @returns {UserMessage} 转换后的消息对象 */ convert(): UserMessage; } /** * 图片用户消息的具体实现类,用于创建和操作图片消息 * @implements {ImageUserMessage} * @extends {AbstractUserMessageImpl} */ export declare class ImageUserMessageImpl extends AbstractUserMessageImpl implements ImageUserMessage { /** * 消息类型常量,图片消息类型为3 */ readonly msg_type: 3; /** * 图片消息内容,可以是图片链接地址或文件 */ readonly img: string; /** * 构造函数,私有以防止外部直接实例化 * @param {BufferSource | string} img - 图片链接地址或文件 */ private constructor(); /** * 创建一个新的ImageUserMessageImpl实例 * @param {BufferSource | string} img - 图片链接地址或文件 * @returns {ImageUserMessageImpl} 新的实例对象 */ static create(img: BufferSource | string): ImageUserMessageImpl; /** * 将当前实例转换为UserMessage接口定义的消息格式 * @returns {UserMessage} 转换后的消息对象 */ convert(): UserMessage; } /** * 用户消息构建器,用于创建和操作不同类型的消息 */ export declare class UserMessageBuilder { /** * 当前构建的消息实例,默认为Markdown消息实例 */ private message; /** * 创建一个新的Markdown消息实例 * @returns {MarkdownUserMessageImpl} 新的Markdown消息实例 */ markdown(): MarkdownUserMessageImpl; /** * 创建一个新的图片消息实例 * @param {BufferSource | string} image - 图片链接地址或文件 * @returns {AbstractUserMessageImpl} 新的图片消息实例 */ image(image: BufferSource | string): AbstractUserMessageImpl; /** * 创建一个新的Markdown消息实例,并添加文本内容 * @param {string} text - 要添加的文本 * @returns {AbstractUserMessageImpl} 新的Markdown消息实例 */ text(text: string): AbstractUserMessageImpl; /** * 构建并返回当前消息实例 * @returns {UserMessage} 构建后的消息对象 */ build(): UserMessage; } //# sourceMappingURL=index.d.ts.map