一个群聊插件的魔改记录。

起因

逛 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 创建,感谢原作者提供了一个如此有潜力的起点。