UNPKG

koishi-plugin-best-jrrp

Version:

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

137 lines (102 loc) 5.92 kB
# koishi-plugin-best-jrrp [![npm](https://img.shields.io/npm/v/koishi-plugin-best-jrrp?style=flat-square)](https://www.npmjs.com/package/koishi-plugin-best-jrrp) 支持真随机的今日人品(运势),可任意自定义消息,支持随机图片,还带有排行、分析、货币等功能。 ## 功能特性 - **多种计算算法**:支持线性同余、正态分布,以及基于大气噪声的 Random.org 真随机 API。 - **丰富的显示格式**:人品值可以显示为二进制、八进制、十六进制,甚至是动态生成的数学表达式。 - **高度自定义消息**:可配置不同分数范围、特定分数或特定日期的消息。消息模板支持多种占位符,包括 at 用户、一言、本地/网络图片等。 - **灵活的货币系统**:与 `koishi-plugin-monetary` 深度联动,可通过一个简单的规则输入框,实现固定值、随机范围、人品值倍率等多种复杂的奖惩逻辑。 - **全面的数据查询**:支持查询特定日期的人品值(支持自然语言,如“昨天”),或预测未来特定分数将在哪天出现。 - **排行榜与数据分析**:查看今日人气之星,并通过深度统计报告(如走势图、分布热图)分析个人运气走势。 - **灵活的数据管理**:管理员可以按用户或日期(支持自然语言)清除人品数据。 ## 命令列表 - `jrrp` - 获取今日人品值。首次使用可获得货币奖励。 - `jrrp.date [date:date]` - 查询指定日期的人品值(支持 "MM-DD", "YYYY-MM-DD", "昨天" 等格式)。 - `jrrp.score [score]` - 预测未来何时会出现指定的人品分数(真随机模式下禁用)。 - `jrrp.rank` - 查看今日人品排行榜。 - `jrrp.analyse` - 分析你的人品数据统计信息。 - `jrrp.clear` - 清除人品数据(需要4级权限)。 ## 配置说明 插件配置主要分为基础配置、样式配置、消息配置和强大的货币配置。 ### 1. 基础配置 ```yaml # 启用日期查询 enableDate: true # 启用人品预测 enableScore: true # 启用人品排行 enableRank: true # 启用数据分析 enableAnalyse: true # 计算方式: gaussian(正态分布)/linear(线性同余)/randomorg(真随机) algorithm: linear # 密钥 - Random.org (使用真随机时需填写) apiKey: '' ``` ### 2. 样式配置 ```yaml # 是否启用数值格式化 enableScoreFormat: true # 仅在指定日期启用格式化 (MM-DD格式, 留空则始终启用) formatDate: '4-1' # 格式化样式: binary(二进制)/octal(八进制)/hex(十六进制)/simple(简单表达式)/complex(复杂表达式) scoreFormat: 'simple' ``` ### 3. 消息配置 ```yaml # 消息内容 (支持 {money} 等占位符) template: '{at}你今天的人品值是:{score}{message}' # 图源地址 (可以是网络JSON链接或本地文件夹路径) imagesPath: 'https://raw.githubusercontent.com/YisRime/koishi-plugin-onebot-tool/main/resource/pixiv.json' # 启用区间消息 enableRange: true # ... 区间消息与特殊消息配置 ...``` ### 4. 货币配置 (`koishi-plugin-monetary` 联动) ```yaml # 启用货币支持 enableMonetary: false # 签到奖励 rewardRule: '50-150' # 启用累签惩罚 enableRepeatPenalty: false # 累签惩罚 penaltyRule: '50' ``` ## 货币系统详解 本插件可通过 `rewardRule``penaltyRule` 两个配置项,实现高度灵活的奖惩逻辑。 ### 规则语法 您可以在规则输入框中使用以下任意一种格式: | 格式 | 示例 | 说明 | | :--- | :--- | :--- | | **固定值** | `50` | 奖励或惩罚一个固定的数值。奖励规则中可使用负数,如 `-50`。 | | **随机整数范围** | `50-100` | 在指定的两个整数之间(包含边界)随机取一个值。 | | **固定倍率** | `1.5x` | 基于当前获得的人品分数,乘以一个固定的倍率。 | | **随机倍率范围** | `0.5x-1.5x` | 基于人品分数,乘以一个在指定范围内的随机倍率。 | ### 工作机制 - **`rewardRule` (奖励规则)**: 当用户当天**第一次**使用 `jrrp` 命令时触发。 - 示例: 设置为 `1.5x`,用户人品值为 80,则奖励 `80 * 1.5 = 120` 货币。 - **`penaltyRule` (惩罚规则)**: 当用户在同一天**重复**使用 `jrrp` 命令时触发。 - 规则计算出的值将**自动转为负数**进行扣除。 - 示例: 设置为 `50-100`,用户重复签到,将被随机扣除 50 到 100 的货币。 - **注意**: 扣除操作会检查用户余额,若余额不足,则不会执行。 ## 算法详解 ### 线性同余算法 (linear) 默认算法。使用线性同余生成器,通过一个简单的哈希函数(基于用户ID和日期)生成伪随机数。计算速度快,分布均匀。 ### 正态分布算法 (gaussian) 使用正态分布(高斯分布)进行计算。生成的分数会更倾向于聚集在中间值(50)附近,而两端(0和100)的极值出现的概率较低。 ### Random.org API (randomorg) 通过调用 Random.org 的 API 获取基于大气噪声的真随机数。 - **需要提供有效的 API 密钥**- 当 API 请求失败或超时时,会自动降级使用**线性同余算法**- 在此模式下,`jrrp.day``jrrp.score` 命令将被禁用,因为真随机数是无法预测的。 ## 消息配置 消息模板 (`template`) 支持丰富的占位符: - `{at}`: @当前用户。 - `{username}`: 当前用户的昵称。 - `{score}`: 经过格式化后的人品分数值。 - `{message}`: 根据分数和日期匹配到的区间或特殊消息。 - `{money}`: 显示本次操作中获得的奖励(正数)或惩罚(负数)。若无货币变动,则此占位符被移除。 - `{hitokoto}`: 从 `v1.hitokoto.cn` 获取一句话。 - `{image:URL}`: 发送指定 URL 的图片。 - `{pixiv}`: 发送一张来自 `imagesPath` 的随机图片。 - `{~}`: 消息分隔符,可将一条消息分段发送。