docs: capture qdreader plugin menu patterns

This commit is contained in:
2026-05-17 10:42:13 +08:00
parent d9ff1d94b2
commit bcba339fd8
5 changed files with 809 additions and 204 deletions
+86 -48
View File
@@ -1,6 +1,6 @@
# 点读书签到 Autman 插件
# 点读书 QDReader 签到 Autman 插件
起点读书(QDReaderAutman 签到插件。QX 只负责抓取 Cookie,签到由本插件在 Autman 内完成。
QDReader/起点读书 Autman 签到插件。用户侧触发词统一使用“启点”,避免平台关键词麻烦;QX 只负责抓取 Cookie账号管理、执行查询和签到都在 Autman 插件内完成。
## 文件位置
@@ -23,66 +23,104 @@ https://gitea.chickliu.fun/Hermes/autman-plugins/raw/branch/main/plugins/qdreade
https://gitea.chickliu.fun/Hermes/autman-plugins/raw/branch/main/js/qdreader_sign_autman.js
```
## 功能
## 当前交互设计
- QX 抓到 Cookie 后,把 `起点ck <cookie>` 发给 Autman 保存。
- 手动全部签到:`起点签到`
- 手动单账号签到:`起点签到 <uid>`
- 定时签到:头注 `//[cron: 15 7 * * *]`,每日 07:15 自动签到。
- 查询/维护:`起点ck 查询``起点ck 导出``起点ck 删除 <uid|all>`
- 签到结果按成功/失败汇总;普通状态输出 uid 会脱敏,导出命令除外。
## v2.2.0 优化点
- 存储兼容:同时兼容 `get/set``bucketGet/bucketSet("otto", key)`
- 消息兼容:兼容 `getContent/GetContent/input/sender.getContent/sender.getMessage`
- 请求兼容:兼容 `request/$request`,并统一解析 `body/data` JSON。
- 签名兼容:兼容 `{code:0,data:{headers:{...}}}``{code:200,data:{...}}``{headers:{...}}` 等签名网关返回形态。
- 网络健壮性:新增 `otto.qdreader_retry_count`,默认重试 1 次,最大 3 次。
- 定时体验:新增 `otto.qdreader_cron_silent`,可让定时触发且无账号时静默。
- 安全脱敏:保存/查询/签到结果不直接输出完整 Cookie;`导出` 是管理员主动行为,会输出完整 JSON。
- 测试覆盖:`tests/qdreader_plugin.test.mjs` 覆盖手动、定时、bucket 存储、重试、查询脱敏、删除全部。
## 配置
Autman 参数:
### 一级菜单
```text
otto.qdreader_cookie_json = {"uid":"cookie"}
otto.qdreader_sign_api = https://api.120399.xyz
otto.qdreader_retry_count = 1
otto.qdreader_cron_silent = false
启点账号
启点查询
```
说明
- `qdreader_cookie_json`:机器人命令维护,JSON Map 格式。
- `qdreader_sign_api`:兼容 `/sign` 的签名网关,默认 `https://api.120399.xyz`
- `qdreader_retry_count`:请求异常重试次数,默认 1,范围 0-3。
- `qdreader_cron_silent``true` 时,如果定时触发但没有账号,不发送提醒。
## 命令
`启点账号` 只负责账号管理
```text
起点ck <QX抓到的完整cookie>
起点ck json {"uid":"cookie"}
起点ck 查询
起点ck 导出
起点ck 删除 <uid>
起点ck 删除 all
起点签到
起点签到 <uid>
启点账号管理
1. 查看账号
2. 添加/更新账号
3. 账号详情/修改备注
4. 删除账号
5. 清空账号
q. 退出
请回复序号
```
`启点查询` 只负责执行情况和执行动作:
```text
启点查询
1. 查看最近执行情况
2. 查询单个账号
3. 立即执行签到
q. 退出
请回复序号
```
### 快速通道
```text
启点ck <QX抓到的完整cookie>
启点签到
启点签到 <uid>
qdreader sign
```
`启点ck` 只保留快速提交 Cookie,不再承担查询/导出/批量导入等管理功能。
## 账号与备注
- 保存 Cookie 后自动绑定当前 `sender.getUserID()`
- 查询、删除、手动签到默认只操作当前用户绑定的账号。
- 账号详情、删除、单账号查询都使用编号选择,不要求用户复制/输入 UID。
- 添加/更新账号后会提示是否添加备注。
- 修改备注在“账号详情/修改备注”中完成。
- 删除账号或清空当前用户账号时,会同步清理对应备注。
- 普通回复只展示脱敏 UID 和备注,不输出完整 Cookie。
## 存储
主数据桶:
```text
hermes_qidian
```
主要 key
```text
qdreader_cookie_json # uid -> full cookie
qdreader_user_bind_json # uid -> sender.getUserID()
qdreader_remark_json # uid -> 备注名
qdreader_last_result_json # uid -> 最近执行结果 JSON 字符串
qdreader_sign_api # 签名网关
qdreader_retry_count # 请求失败重试次数
qdreader_cron_silent # 定时无账号静默
```
读取兼容顺序:
```text
bucketGet("hermes_qidian", key)
↓ fallback
get(key)
↓ fallback
bucketGet("otto", key) # 旧数据兼容
```
写入顺序:
```text
bucketSet("hermes_qidian", key, value)
set(key, value)
```
## 签名与签到流程
签名与签到流程沿用上游 QDReader:
1. 从 Cookie 解析 `QDHeader/qdh/uid/guid/qimei/qimei36`
2. `POST https://api.120399.xyz/sign` 获取起点请求签名头。
2. `POST <qdreader_sign_api>/sign` 获取请求签名头。
3. `POST https://h5.if.qidian.com/argus/api/v3/checkin/checkin` 完成签到。
4. 汇总每个账号签到结果
4. 写入 `qdreader_last_result_json`
5. 汇总每个账号签到结果。
## 本地验证