UNPKG

koishi-plugin-best-jrrp

Version:

支持真随机的今日人品(运势),可任意自定义消息,支持随机图片,还带有排行、分析、货币等功能。

119 lines (118 loc) 3.67 kB
import { RangeMessage, SpecialMessage } from './index'; /** * 分数显示格式的类型定义 * - binary: 二进制格式 * - octal: 八进制格式 * - hex: 十六进制格式 * - simple: 简单表达式格式 * - complex: 复杂表达式格式 */ export type ScoreDisplayFormat = 'binary' | 'octal' | 'hex' | 'simple' | 'complex'; /** * 分数显示配置接口 * @interface ScoreDisplayConfig * @property {boolean} enabled 是否启用特殊显示格式 * @property {string} [date] 特定日期(格式:MM-DD),若指定,则只在该日期使用特殊格式 * @property {ScoreDisplayFormat} [mode] 显示模式 */ interface ScoreDisplayConfig { enabled: boolean; date?: string; mode?: ScoreDisplayFormat; } interface PixivConfig { imagesPath?: string; baseDir?: string; logger?: any; } /** * 消息配置接口 * @interface MsgConfig * @property {Array<RangeMessage>} rangeMessages 区间消息数组 * @property {Array<SpecialMessage>} [specialMessages] 特殊消息数组 * @property {string} template 消息模板 * @property {ScoreDisplayConfig} display 分数显示配置 * @property {boolean} enableRange 是否启用区间消息 * @property {boolean} enableSpecial 是否启用特殊消息 */ interface MsgConfig { rangeMessages: Array<RangeMessage>; specialMessages?: Array<SpecialMessage>; template: string; display: ScoreDisplayConfig; enableRange: boolean; enableSpecial: boolean; } /** * 消息构建器类,用于构建JRRP结果消息 * @class MsgBuilder */ export declare class MsgBuilder { private config; private dateSpecialMsgsMap; private scoreSpecialMsgsMap; private rangesCache; private pixivConfig; /** * 创建消息构建器实例 * @param {MsgConfig} config 消息配置 * @param {PixivConfig} [pixivConfig] Pixiv配置 */ constructor(config: MsgConfig, pixivConfig?: PixivConfig); /** * 初始化缓存数据 * @private */ private initializeCache; /** * 获取一言内容 * @private * @param {string} [params] 一言参数,直接拼接到API URL * @returns {Promise<string>} 一言内容,包含出处和作者 */ private getHitokoto; /** * 获取Pixiv图片链接数组(本地无则自动下载) */ private getPixivLinks; /** * 构建JRRP结果消息 * @param {number} score 今日人品分数 * @param {string} userId 用户ID * @param {string} username 用户名 * @param {number} [money=0] 获得的货币数量 * @returns {Promise<string|string[]>} 格式化后的消息字符串或消息队列 */ build(score: number, userId: string, username: string, money?: number): Promise<string | string[]>; /** * 替换所有一言占位符 * @private * @param {string} template 模板字符串 * @returns {Promise<string>} 替换后的字符串 */ private replaceHitokotoPlaceholders; /** * 替换所有Pixiv占位符 * @private * @param {string} template 模板字符串 * @returns {Promise<string>} 替换后的字符串 */ private replacePixivPlaceholders; /** * 按优先级获取消息内容 * @private * @param {number} score 分数 * @param {string} date 日期字符串 * @returns {string} 消息文本 */ private getMessage; /** * 格式化分数显示 * @private * @param {number} score 分数 * @param {string} todayStr 今日日期字符串 * @returns {string} 格式化后的分数字符串 */ private formatScore; } export {};