一个群聊插件的魔改记录。
起因
逛 NoneBot 插件商店的时候发现了一个叫 rollpig 的小插件——功能很简单:每天给你随机分配一种猪的形态,配一张图,完事。
觉得挺有意思,装上之后群友们也很喜欢。坦克猪、隐形猪、猪王……每天抽猪成了群里的固定节目。
玩着玩着我就想,要不再往里加点料?
然后就 Fork 了。
Fork,然后回不了头
原版插件是 Bearlele 写的,功能就是"今日小猪"——每天抽一次猪,看看你是什么猪。我 Fork 了一份到自己的仓库,打算"稍微改改"。
异步重构 + 时间线功能(2月初)
原版是同步写法,我给它做了异步改造,顺带加了几个功能:
- 昨日小猪:忘了昨天抽到什么?帮你查。
- 明日小猪:预测明天的猪猪运势(其实就是随机文案,但群友还挺买账)。
- 本周小猪:生成一张本周猪猪总结长图。
到这一步还算正常。
AI 烤猪(2月中)
群里有人说:"猪抽出来了,能不能烤了?"
于是我接了 DeepSeek 的 API,写了个"今日烤猪"功能。你抽到的猪会被随机变成一种熟食形态(烤猪、培根、猪排、猪肉串),然后 AI 会根据你原来的猪形态,生成一段烤后感言。
比如你本来是一只"赛博朋克猪",烤完之后变成了培根,AI 可能会说:
"赛博朋克猪的金属外壳在高温下逐渐软化,内置的LED灯带发出最后的光芒,最终化为一片带着科技感的培根。味道嘛……有点像充电器烧焦的味道。"
上线之后每天零点一过,群里就开始热闹起来——大家蹲着抽新猪,然后互相烤。
烤群友 PvP(2月中下旬)
既然烤自己的猪不够刺激,那烤别人的猪呢?
"烤群友" 功能就这么上线了。@ 一个人就能尝试烤他,但不是百分百成功:
- 60% 成功:目标变成美食
- 30% 逃脱:目标溜了
- 10% 反噬:你自己变成了美食
当然,人类形态和已经是熟食的猪不能被烤——毕竟我们是有底线的。
然后群友们开始钻研规则漏洞。
后门系统
后来我给烤群友加了后门口令。
普通用户每天可以用一次秘密指令强制烤成功,口令包括 打点后厨、偷换烤架、贿赂主厨、加急生火。管理员有无限次的 强行点火。
后门只绕过冷却时间和概率判定,不绕过目标资格检查——就算你用了后门,对面是人类形态照样烤不动。
这些口令后来被群友摸出来了,使用频率直线上升。
保护机制和每日日报(3月初)
烤群友上线后,有些人每天都被一群人围着烤,体验极差。于是我加了保护机制:前一天被烤次数最多的用户,第二天自动获得保护,普通模式的烤群友会被拦截。
当然,后门可以突破保护。
顺带,我还搞了个每日猪圈日报,每晚自动推送当天的统计数据:最热门的猪形态、烧烤狂人、最惨食材、逃脱大师、反噬之王。
现在
翻了翻代码,主文件已经突破一千行了。
一个原本只有"抽个猪看看"功能的小插件,不知不觉加上了 AI 文案、PvP 对战、后门口令、保护机制、每日统计、数据持久化、定时任务。
也不知道还会不会继续加下去。大概会吧。
这篇文章基于我 Fork 的 nonebot-plugin-rollpig 的真实开发经历。原版插件由 Bearlele 创建,感谢原作者提供了一个如此有潜力的起点。
从"今天是什么猪"到一千行的 BBQ 模拟器
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。


