Skip to content

Milkikawa/astrbot_plugin_nimbus_jrcd

Repository files navigation

astrbot_plugin_nimbus_jrcd

每日牛牛长度占卜、比比长度与排行榜,迁移自 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 删除自己的所有历史数据

管理员指令(仅 admins_id 内的 SuperAdmin 可用)

指令 说明
/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(优先级最高) []

判定流程:

  1. 机器人自身 ID 自动豁免(永远不参与)。
  2. blocked_users 命中 → 拒绝。
  3. 群聊:群在 allowed_groups 中,或发言者在 allowed_users 中 → 放行。
  4. 私聊:发言者在 allowed_users 中 → 放行。
  5. 否则拒绝(静默)。

强烈建议把机器人自己的 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-l3s1-s3tiecompare_prefix 比比长度文案
length_text male_huge-male_zerofemale_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 可以删除自己的所有历史数据。

与原 koishi 插件的差异

  • 修复了原插件短了分支里 changdu > 10 的 typo(应为 changduz > 10)。
  • 随机算法仍使用 JS 风格 String.hashCode,相同种子/用户 ID/日期下的输出与 koishi 完全一致。
  • v1.1.0 新增排行榜、个人统计、定时推送等功能。
  • v1.2.0 重写命令路由(去正则化)、加入作用域权限、HTML 表格渲染与 T2I 容错降级。

About

每日牛牛长度占卜、比比长度与排行榜,迁移自 koishi 插件 `@yyyhf/koishi-plugin-jrcd`,原插件采用MIT协议

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages

Generated from Soulter/helloworld