heybox-bot
Version:
A heybox chat bot frame
816 lines • 26.1 kB
TypeScript
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