koishi-plugin-best-jrrp
v3.1.1
Published
支持真随机的今日人品(运势),可任意自定义消息,支持随机图片,还带有排行、分析、货币等功能。
Maintainers
Readme
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. 基础配置
# 启用日期查询
enableDate: true
# 启用人品预测
enableScore: true
# 启用人品排行
enableRank: true
# 启用数据分析
enableAnalyse: true
# 计算方式: gaussian(正态分布)/linear(线性同余)/randomorg(真随机)
algorithm: linear
# 密钥 - Random.org (使用真随机时需填写)
apiKey: ''2. 样式配置
# 是否启用数值格式化
enableScoreFormat: true
# 仅在指定日期启用格式化 (MM-DD格式, 留空则始终启用)
formatDate: '4-1'
# 格式化样式: binary(二进制)/octal(八进制)/hex(十六进制)/simple(简单表达式)/complex(复杂表达式)
scoreFormat: 'simple'3. 消息配置
# 消息内容 (支持 {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的随机图片。{~}: 消息分隔符,可将一条消息分段发送。
