Skip to content

关于商店插件astrbot_plugin_rollpig_plus 的代码来源及署名问题 #9687

Description

@Felis2026

我是 Felis2026/nonebot-plugin-rollpig-plus 的维护者。

近期看到 AstrBot 插件市场中的 casama233/astrbot_plugin_rollpig 时,发现该项目在后续开发过程中持续加入了大量与 nonebot-plugin-rollpig-plus 已公开功能高度对应的内容,并且仓库演化路径也与本人项目高度相似,其中部分对应已经涉及具体的协议字段、文件命名、参数、状态流程和实现结构,而其当前 README、LICENSE 及市场信息中均未说明与 RollPig Plus 的关系。

本人不反对他人在遵守相关社区行为准则与开源协议的基础上,对本项目进行移植、改造或再开发,也欢迎更多平台上出现优秀的衍生版本。

希望说明的是:此类高度对应情况,疑似是借助自动化 agent 对本项目代码与实现方案进行了整体性的参照搬运与改写,但既未在 LICENSE、README 中如实标注来源,也未说明与 RollPig Plus 的关系;这种做法本身已经不符合开源协议对署名的基本要求。

并且近期该项目目前跟随本项目更名 Plus,又以"增强版"名义公开上架到 AstrBot 官方插件市场供用户下载使用,来源不透明的问题因此被进一步放大——这正是本 Issue 希望提请关注的核心问题,而非反对移植或二次开发本身。

现将能够通过公开 Git 历史直接核验的主要情况整理如下。


一、项目来源关系

RollPig 系列目前涉及的几个主要项目为:

casama233/astrbot_plugin_rollpig 本身是 MegSopern/astrbot_plugin_rollpig 的 GitHub Fork。

因此,下文不会将 Bearlele 原项目已有内容、MegSopern 原 AstrBot 移植已有内容,以及已经提交 Bearlele 上游的功能作为争议依据。

本 Issue 所列内容主要集中在 RollPig Plus 后续独立开发后,casama 分支继续新增的对应实现。


二、EX Lv.1~5 差分资源系统设计

RollPig Plus 于 2026-08-02 提交:

e1febd35 feat(ex-variants): 支持 EX 等级差分资源与成长展示

该版本建立了一套完整的 EX 差分资源机制,包括:

  • EX Lv.1~5 差分;
  • 允许只配置部分等级;
  • 每级可以分别覆盖:
    • image
    • description
    • analysis
  • 三个字段分别独立向较低等级继承;
  • 使用独立资源文件 pig_ex_variants.json
  • manifest 中增加 variant_images
  • EX 图片继续参与资源包的文件大小、SHA256、图片有效性等检查;
  • 差分资源与普通资源共同经过 staging 和原子切换;
  • 当客户端已经同步过相同 resource_version,但旧快照中不存在后来加入的 EX 可选资源时,仍会补齐缺失内容。

随后,casama 项目于 2026-08-14 提交:

c1088a72 feat: 新增 EX Lv.1–5 成長差分資源

其中对应出现:

  • EX Lv.1~5;
  • 稀疏差分;
  • image / description / analysis 三字段;
  • 三字段分别向较低等级继承;
  • 同名 pig_ex_variants.json
  • 同名 manifest 字段 variant_images
  • 差分图片纳入文件大小、SHA256、图片解码等资源安全检查;
  • staging / 原子激活;
  • 相同 resource_version 下,本地旧快照缺少 EX 可选资源时执行补齐。

两边的具体代码并非逐字相同。

例如 casama 版本调整了 JSON 层级,并将图片目录重新组织为自己的结构。

但最终形成的协议组合高度一致:

pig_ex_variants.json
variant_images
EX Lv.1~5
image / description / analysis
稀疏等级配置
三个字段分别向低等级继承
相同 resource_version 下补齐新增可选资源

这已经不仅是“都做了 EX 等级差分”这一层面的相似。


三、预约烤猪 / 免费添柴 功能设计

RollPig Plus 于 2026-08-07 提交:

76b25bbb feat(reservations): 新增预约烤猪(0.11.0)

其核心流程为:

指定一名当天尚未抽猪的群友
        ↓
在当前群创建预约
        ↓
首位发起者固定成为主厨
        ↓
主厨支付正常烧烤资源
        ↓
其他群友可以免费“添柴”
        ↓
同一参与者不能重复加入
        ↓
单场最多 12 人
        ↓
目标之后在该群抽取 / 展示今日小猪
        ↓
预约触发
        ↓
按照原烧烤概率 60% / 30% / 10% 结算

Plus 后续又在此基础上加入了 Local / Cloud 协同、跨 Bot 投递、Owner Bot 领取、结果固化、失败恢复及重复发送保护等机制。

casama 项目于 2026-08-14 提交:

1e2bad06 feat: 新增同群預約烤豬與添柴玩法

其流程为:

目标当天尚未抽猪
        ↓
在当前群建立预约
        ↓
第一位参与者固定为主厨
        ↓
首位主厨承担正常烧烤成本
        ↓
后续群友免费添柴
        ↓
参与者去重
        ↓
默认最多 12 人
        ↓
目标之后在同群展示今日小猪
        ↓
预约触发
        ↓
按原 60% / 30% / 10% 结果结算

casama 的底层存储方式与 Plus 不同,例如其继续使用自身 cooldown 和辅助状态,而 Plus 使用自己的烧烤充能、Local / Cloud 以及跨 Bot 状态。

但从实现状态机来看,两者的关键节点、先后关系、参与规则、默认人数和最终概率均形成完整对应。


四、猪圈日报功能的四个称号及统计语义设计

RollPig Plus 在 2026-06-26 整理独立仓库时已经包含以下猪圈日报称号:

  • 烧烤狂人
  • 最惨食材
  • 逃脱大师
  • 反噬之王

对应初始提交:

22b5357c init: 整理 rollpig-plus 独立发布仓库

四个称号分别对应:

称号 统计
烧烤狂人 主动成功烧烤次数最多
最惨食材 实际被成功烧烤次数最多
逃脱大师 成功逃脱次数最多
反噬之王 触发反噬次数最多

casama 项目于 2026-08-14 提交:

1440a759 feat: 完整實現可配置豬圈日報

其中定义:

award_defs = [
    ("roast_maniac", "烧烤狂人"),
    ("miserable_ingredient", "最惨食材"),
    ("escape_master", "逃脱大师"),
    ("backlash_king", "反噬之王"),
]

四个中文称号、排列顺序及统计语义也均与 RollPig Plus 一致。

此外,RollPig Plus 的日报采用深夜自动发送并增加随机延迟,以避免多个群同时发送;casama 新版日报同样采用固定深夜时间加随机延迟,默认配置为:

23:50
+
0~10 分钟随机延迟

五、“烤箱补货”的后续时间线

RollPig Plus 于 2026-08-12 提交:

1dcc8392 feat(refill): 支持群聊投票补充烧烤次数

该功能提供群聊内的“烤箱补货”投票机制,用于恢复当天烧烤次数。

随后在 8 月 12~13 日继续补充:

  • 投票状态恢复;
  • 当前群成员资格校验;
  • reaction 验票;
  • 并发申请处理;
  • 活跃成员门槛;
  • 补货票数比例与封顶;
  • Cloud 滚动升级兼容等。

功能最终于 2026-08-13 22:43(UTC+8) 合并:

36d0687c Merge feature/roast-refill

次日下午,casama 项目于 2026-08-14 16:55(UTC+8) 提交:

cb3d4099 refactor: 建立統一 Gameplay Event 層

该提交明确说明新的 Gameplay Event 层将用于:

  • EX 成长;
  • 预约烤猪;
  • 烤箱补货

并预留以下事件:

oven_refill_started
oven_refill_supported
oven_refill_succeeded
oven_refill_failed

目前没有看到 casama 已经完整实现 RollPig Plus 的“烤箱补货”投票流程,因此这里并不将其列为完整实现对应。

但从公开时间线上可以确认:

RollPig Plus 的“烤箱补货”正式合并后不到一天,casama 项目已经将同名玩法及完整事件生命周期写入自己的后续事件协议。


六、资源同步实现中的进一步对应

这一部分需要特别区分上游功能。

RollPig Plus 早期的基础云资源同步曾提交 Bearlele 上游,因此以下内容本身不构成这里的问题:

  • 获取 manifest;
  • 下载 pig.json
  • 下载 pig_rules.json
  • 下载图片资源;
  • 根据资源版本进行更新。

但 Plus 在后续版本中对资源管理器进行了大量独立加固,其中形成了一套较为具体的安全与切换流程,包括:

manifest 大小上限
资源总下载预算
图片数量上限
单文件大小上限
manifest path 安全验证
拒绝绝对路径
拒绝 ..
拒绝反斜杠
拒绝 URL scheme / netloc
文件 size 校验
SHA256 校验
staging
资源总预算跟踪
新旧资源目录切换
激活失败回滚
仅在旧目录已经成功移走后执行恢复
resource_version / synced_at 状态记录

casama 后续资源同步代码中也出现了相同的一组约束和激活流程。

其中尤其值得注意的是,并不是常规的:

下载 → 解压 → 覆盖

而是连下载预算、路径验证、staging、新旧目录切换和条件式 rollback 等控制流程都形成对应。

这部分代码量较大,正文不逐段展开,如需双方历史版本的函数级对照,本人可另行提供。


七、PigHub 接口演化

RollPig Plus 早期查询 PigHub 时主要使用:

images?sort=2
all-images

2026-07-03,由于接口兼容和图片转发问题,Plus 新增优先接口:

b537cbb7 fix: 增加 PigHub 转发超时提示

此后请求顺序演化为:

images?sort=2&limit=200
images?sort=2
all-images

同日又提交:

a3a206c2 feat: 增加 PigHub 索引缓存服务

将 PigHub 索引抽成独立缓存,并调整为 12 小时刷新

casama 后续实现最终也采用:

images?sort=2&limit=200
images?sort=2
all-images

以及 12 小时缓存。

同时还存在缓存结构、thumbnail fallback、title / filename fallback 等进一步对应。

单独使用 PigHub 接口当然不存在问题。

可其最终实现并非只与 PigHub API 本身相似,而是对应到了 RollPig Plus 2026-07-03 那次具体的接口演化结果


八、其他持续出现的对应

除了上述近期功能外,双方后续演化中还存在一组持续性的对应,例如:

烤群友结果

RollPig Plus 使用:

60% 烧烤成功
30% 目标逃脱
10% 反噬

casama 后续同样采用 60 / 30 / 10

随机烤群友

RollPig Plus 的随机烧烤逻辑为:

当前群
→ 获取当天已经抽猪的成员
→ 排除自己
→ 排除 Bot
→ 随机选择目标
→ 进入同一套烤群友流程

casama 后续同样实现了这一语义。

特殊烧烤口令

RollPig Plus 中存在一组特殊触发词,包括:

打点后厨
偷换烤架
贿赂主厨
加急生火
强行点火

casama 后续版本中也出现了其中多项相同口令及对应用途。

单独任何一个参数、命令或者玩法都不足以说明整体来源关系。

这些对应并非集中在某一次移植,而是在后续数周内随着 RollPig Plus 的开发持续出现。


九、当前署名情况

RollPig Plus 当前 LICENSE:

https://github.com/Felis2026/nonebot-plugin-rollpig-plus/blob/main/LICENSE

其中为:

Copyright (c) 2025 Bear_lele
Copyright (c) 2025-2026 Felis

casama 项目当前 LICENSE:

https://github.com/casama233/astrbot_plugin_rollpig/blob/main/LICENSE

其中为:

Copyright (c) 2025 Bear_lele
Copyright (c) 2025 MegSopern
Copyright (c) 2026 casama233 and contributors

其中没有实际的来源说明。

其当前 AstrBot metadata 为:

name: "astrbot_plugin_rollpig_plus"
display_name: "今日小豬 · 增強版"
author: "casama233"
repo: "https://github.com/casama233/astrbot_plugin_rollpig"

如果相关部分确为完全独立实现,自然不涉及 RollPig Plus 的版权声明。

可其中实际包含对 RollPig Plus 代码、资源协议或实现的移植、改写,则相应来源及 MIT Copyright Notice 也应完整保留。


十、提交这个 Issue 的原因

该项目目前作为 AstrBot 插件进入官方插件市场,因此将上述公开可核验的情况提交到这里留档。

希望 AstrBot Team 能根据现有插件市场规则以及项目行为准则,判断 AstrBot 插件市场中的 casama233/astrbot_plugin_rollpig项目是否合规,其来源说明、署名以及市场收录状态是否需要调整。

主要证据均已经给出对应公开 commit;并且本人可进一步提供关键代码和协议的对照。

如某一项需要补充完整历史文件或具体 diff,我也可以在 Issue 下继续提供。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions