每日牛牛长度占卜、比比长度与排行榜,迁移自 koishi 插件 @yyyhf/koishi-plugin-jrcd。
v1.2.0 起命令路由全面收束为斜杠命令,并默认 Deny All;升级用户请先在 WebUI 配置
scope.allowed_groups/scope.allowed_users白名单。
| 指令 | 别名 | 说明 |
|---|---|---|
/jrcd |
今日长度 |
查看自己今天的牛牛长度(按上海时区每日重置) |
/bbcd @某人 |
/比比长度 @某人 |
与被 at 的对象比较今日牛牛长度 |
/jrcd-rank |
今日排行 |
查看当日群内排行榜(默认 HTML 表格图,失败自动降级文本) |
/jrcd-stats [@某人] |
牛牛统计 |
查看个人累计统计(参与天数、均长、胜率等) |
/jrcd-sub HH:MM |
— | 订阅每日排行榜自动推送(24 小时制,如 /jrcd-sub 21:00) |
/jrcd-unsub |
— | 取消当前群的排行榜推送 |
/jrcd-forget |
— | 删除自己的所有历史数据 |
| 指令 | 说明 |
|---|---|
/jrcd-admin list |
查看当前白/黑名单 |
/jrcd-admin allow <group_id> / disallow <group_id> |
群聊白名单 |
/jrcd-admin allow-user <user_id> / disallow-user <user_id> |
用户白名单(可放行私聊) |
/jrcd-admin block <user_id> / unblock <user_id> |
永久封禁/解封 |
管理员指令支持热更新,修改后下一条消息立即生效,无需重启。
| 指令 | 说明 |
|---|---|
/jrcd-mock |
用 6 名虚拟用户数据走通排行榜渲染流程,仅 SuperAdmin 或私聊可触发,便于调图表排版 |
插件采用默认 Deny All:未列入白名单的群聊与私聊一律静默不响应。
| 配置项 | 说明 | 默认 |
|---|---|---|
scope.allowed_groups |
允许使用的群聊 ID | [] |
scope.allowed_users |
允许使用的用户 ID(独立于群聊限制,可用于私聊白名单) | [] |
scope.blocked_users |
永久封禁的用户 ID(优先级最高) | [] |
判定流程:
- 机器人自身 ID 自动豁免(永远不参与)。
blocked_users命中 → 拒绝。- 群聊:群在
allowed_groups中,或发言者在allowed_users中 → 放行。 - 私聊:发言者在
allowed_users中 → 放行。 - 否则拒绝(静默)。
强烈建议把机器人自己的 QQ ID 加入
blocked_users,避免任何形式的自比较。
在 AstrBot WebUI 的插件管理中可以编辑以下分组:
| 分组 | 关键字段 | 说明 |
|---|---|---|
seed |
string | 自定义随机种子 |
scope |
allowed_groups / allowed_users / blocked_users |
作用域白名单/黑名单 |
render |
rank_top_n / render_strategy / fallback_on_t2i_error |
排行榜渲染策略与降级开关 |
compare_text |
l1-l3、s1-s3、tie、compare_prefix |
比比长度文案 |
length_text |
male_huge-male_zero、female_huge-female_zero |
占卜文案(占位符 {cm}) |
ranking_text |
title / empty_text / stats_line / compare_king_line / target_king_line |
排行榜标题与统计行(占位符 {date} / {count} / {avg} / {id} / {cnt}) |
render.render_strategy:
html(默认推荐):优先用 HTML+CSS Table 渲染。失败时按fallback_on_t2i_error决定是否降级。auto:先 HTML,失败再走官方 T2I,再失败降级为纯文本。text:直接走纯文本(不调用任何远程渲染服务)。
所有文案修改保存后即时生效,仅在保存按钮触发时写一次磁盘。
插件使用独立的 SQLite 数据库(WAL 模式),存储在 data/plugin_data/astrbot_plugin_nimbus_jrcd/jrcd.db。
存储内容:
- 每日长度快照:每位用户每天在每个群的长度记录
- 比较事件:每次
bbcd的详细记录(用于统计比较王、胜率) - 群订阅:排行榜定时推送配置
并发与崩溃容错:
- 写入路径用
asyncio.Lock串行化,并通过asyncio.to_thread卸载到线程池,避免阻塞事件循环。 - 所有 SQL 均参数化(
?占位符),杜绝注入。 - 推送、停止等空闲时机会执行
PRAGMA wal_checkpoint(TRUNCATE),降低容器异常崩溃时的回放成本。
使用 /jrcd-forget 可以删除自己的所有历史数据。
- 修复了原插件短了分支里
changdu > 10的 typo(应为changduz > 10)。 - 随机算法仍使用 JS 风格
String.hashCode,相同种子/用户 ID/日期下的输出与 koishi 完全一致。 - v1.1.0 新增排行榜、个人统计、定时推送等功能。
- v1.2.0 重写命令路由(去正则化)、加入作用域权限、HTML 表格渲染与 T2I 容错降级。