koishi-plugin-best-jrrp
Version:
支持真随机的今日人品(运势),可任意自定义消息,支持随机图片,还带有排行、分析、货币等功能。
119 lines (118 loc) • 3.67 kB
TypeScript
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 {};