# v7.4.6 网盘领取评论 → 机器人私信链路修复

## 现场问题

真实场景已经确认：网盘任务首帖发布成功，帖子底部明确提示成员“@机器人 + 领取关键词”，成员也在帖子下面实际发送了类似：

- `@桃桃乌龙 频道运营`
- `@桃桃乌龙QQ`

QQ频道界面能够看到蓝色 @，但机器人没有发送私信。

## 根因

v7.4.5 仍存在几个链路断点：

1. `get-notices` 并不保证稳定返回每一条帖子评论；Gateway 频道事件权限不足时也可能自动降级到 QQ群/C2C 事件，导致频道 @ 不进入实时处理。
2. 一些 CLI 返回会把 `@机器人` 存在结构化 `mentions/at_user` 字段里，而 `content` 只有 `频道运营`。旧判断只看正文，所以错误认为“没有 @ 机器人”。
3. 发布成功返回中可能同时存在通用 `id` 与真正的 `feed_id`，旧代码可能把通用 id 当帖子 id，导致评论与网盘任务无法绑定。
4. Gateway 新建频道私信后，旧代码把公共频道 @ 消息的 `msg_id` 带到 DM 会话第一条消息中；不同消息上下文下可能被平台拒绝。

## 修复

### 1. 双通道领取检测

每轮先读取 `feed get-notices`；未成功时，直接读取本客户端自己发布的网盘帖子：

`published post -> recover feed_id/create_time -> feed get-feed-comments -> exact job -> keyword -> channel DMS`

因此即使通知/Gateway漏事件，只要帖子评论接口能看到成员的真实评论，也会继续触发私信。

### 2. 结构化 @ 识别

同时检查：

- `AT_MESSAGE_CREATE / notice type 6`
- 正文里的 `@机器人昵称`
- `<@id>` / CQ at
- `mentions / mention / at_user` 等结构化字段
- 机器人 `bot_user_id / app_id / bot_name / remark`

### 3. 精确帖子兜底

评论读取是针对“当前网盘任务已经发布的那篇帖子”，不是全频道模糊扫描。

如果 CLI 完全剥离了 @ 信息，但评论正文去噪后与领取关键词**完全一致**（如 `频道运营`），也允许在这篇精确绑定的网盘帖子下触发私信。包含式模糊匹配仍要求真实 @ 证据。

### 4. feed_id 恢复

优先从原始发布输出中提取明确 `feed_id/post_id`，不再优先相信兼容解析器保存的通用 `id`。

仍无法命中时，仅允许在同一目标子频道时间线中，以“标题完全一致且唯一”的帖子恢复 feed_id，防止串帖。

### 5. 私信发送

创建频道私信会话后，第一条 DM 不再引用公共频道消息 `msg_id`；直接向新建 DM 会话发送网盘链接及可选 QQ群入口。

### 6. 可观察性

网盘任务运行日志新增：

- `立即检测领取`
- 最近成功私信
- 最近评论探测
- 最近错误

用户可以选中任务立即执行一次真实评论读取，不必等待后台轮询，并能看到是“没读到评论 / 没命中关键词 / 私信接口失败”的哪一步。

## 热更新

本版不修改热更新相关文件。
