Skip to content

fix: 移出精华消息时 msg_random 与 msg_seq 参数顺序错误 - #2064

Merged
MliKiowa merged 1 commit into
NapNeko:mainfrom
Shxiao101:fix/delessence-msg-arg-order
Sep 23, 2026
Merged

MliKiowa merged 1 commit into
NapNeko:mainfrom
Shxiao101:fix/delessence-msg-arg-order

Conversation

@Shxiao101

Copy link
Copy Markdown
Contributor

问题

delete_essence_msg 的 essenceLRU 兜底分支把 msg_seq 和 msg_random 传反了:

// packages/napcat-onebot/action/group/DelEssenceMsg.ts:51
return await this.core.apis.GroupApi.removeGroupEssenceBySeq(group_id, msg_seq, msg_random);

GroupApi.removeGroupEssenceBySeq 的签名是 (groupCode, msgRandom, msgSeq)(packages/napcat-core/apis/group.ts:413),本文件上方直接传参的分支(34-38 行)也是 (group_id, msg_random, msg_seq),只有兜底分支顺序相反。

复现路径:

  1. 调用 get_essence_msg_list;当某条精华消息已无法从本地消息缓存解析时,接口会返回 md5 生成的合成 message_id,并把 {msg_seq, msg_random, group_id} 写入 GroupApi.essenceLRU(GetGroupEssence.ts:89-100);
  2. 用该 message_id 调用 delete_essence_msg;
  3. MessageUnique.getMsgIdAndPeerByShortId 未命中 → 命中 essenceLRU → 第 51 行把 msgRandom 与 msgSeq 对调后发给服务端,移出精华失败。

也就是说,这个分支本身就是为「用列表返回的 message_id 移出精华」准备的,却恰好在该流程里传参错误。

修复

按 removeGroupEssenceBySeq(groupCode, msgRandom, msgSeq) 的实际签名修正参数顺序。

验证

  • pnpm test(vitest):181 passed;新增 packages/napcat-test/delEssenceMsg.test.ts 2 个用例,覆盖显式传参分支与 essenceLRU 兜底分支
  • 新增用例先在未修复代码上运行确认能复现:兜底分支断言失败,实际收到 ['33','11','22'],期望 ['33','22','11']
  • eslint . 通过
  • 各包 tsc --noEmit --skipLibCheck 全部通过

@github-actions

github-actions Bot commented Sep 22, 2026 •

Copy link
Copy Markdown

✅ NapCat 构建成功

Success


📦 构建产物

包名 状态 下载
NapCat.Framework ✅ 成功 📥 下载
NapCat.Shell ✅ 成功 📥 下载

📋 构建信息

项目 值
🏷️ 版本号 4.18.19-pr.2064.896+f8c3851
📝 提交 f8c3851
🔗 构建日志 查看详情
🕐 完成时间 2026-09-22 23:05:25 UTC

🚀 快速安装 (Linux)

直连(需要能访问 GitHub)

curl -sSL https://github.com/NapNeko/napcat-pr-release/releases/download/pr-2064-f8c3851/install.sh | bash

加速(国内推荐,ghfast.top)

curl -sSL https://gh.llkk.cc/https://github.com/NapNeko/napcat-pr-release/releases/download/pr-2064-f8c3851/install.sh | bash

📦 查看 Release 页面
⚠️ 此为 PR 测试版本,约 5 天后会被自动清理。


🎉 所有构建均已成功完成!

点击上方下载链接获取构建产物进行测试

@github-actions

github-actions Bot commented Sep 22, 2026 •

Copy link
Copy Markdown

✅ Docker 测试镜像就绪

Success


📋 构建信息

项目 值
📝 提交 f8c3851
🔗 PR #2064
🕐 完成时间 2026-09-22 23:09:45 UTC

🚀 快速使用

拉取镜像

docker pull mlikiowa/napcat-docker:pr-2064-f8c3851

启动容器

docker run -d \
  --name napcat-pr-test \
  -e NAPCAT_UID=$(id -u) \
  -e NAPCAT_GID=$(id -g) \
  -e WEBUI_TOKEN=napcat \
  -p 6099:6099 \
  -p 3000:3000 \
  -p 3001:3001 \
  -v ./napcat/config:/app/napcat/config \
  -v ./napcat/QQ:/app/.config/QQ \
  mlikiowa/napcat-docker:pr-2064-f8c3851
变量 说明 默认值
WEBUI_TOKEN WebUI 登录 Token napcat
ACCOUNT 自动登录的 QQ 号 (空则手动扫码)
NAPCAT_UID / NAPCAT_GID 容器内运行用户的 UID/GID 0
MODE 预设连接模式(ws / astrbot 等) (空)

⚠️ 此为 PR 测试镜像,保留 5 天后自动清理。


🎉 Docker 测试镜像已就绪!

使用上方命令拉取镜像进行测试

@MliKiowa
MliKiowa merged commit 46e505f into NapNeko:main Sep 23, 2026
7 of 8 checks passed
@Shxiao101
Shxiao101 deleted the fix/delessence-msg-arg-order branch September 23, 2026 06:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants