插件共享等级任务管理接入
此能力从 v2.0.9 起提供。v2.0.8 及更早安装包不包含这些管理接口;请先将框架前后端及 SDK 升级到 v2.0.9,或更新版本,再接入插件。
新增 API
- 获取等级加速账号列表:
get_level_task_accounts - 获取账号等级进度:
get_level_task_account - 获取等级任务状态:
get_level_task_status - 获取完整等级任务面板:
get_level_task_panel - 读取等级任务计划:
get_level_task_settings - 保存等级任务计划:
update_level_task_settings - 执行等级任务并刷新面板:
execute_level_task_selection
能力与权限
连接插件服务并完成原有令牌认证后,调用 get_plugin_context,检查 level_task_management_api_version === 1 且 available_actions 包含所需 action;原 management_api_version 仍为 1。能力不足时明确提示升级,不能静默回退插件自己的任务表。
这些接口沿用框架现有可信服务管理权限,不新增已移除的 system_management / allowed_actions 配置。服务令牌只能保存在插件后端;浏览器不得拿到令牌或直接调用任意管理 action。插件仍负责每次请求的账号归属、登录身份、套餐及管理员权限校验。get_level_task_accounts 包含框架所有账号,普通用户响应必须由插件后端过滤。
self_id 必须是框架已配置账号,client_type 明确传 android 或 linuxqq;v2.5.9 的等级任务支持 Android 9.1.70 与 Linux 3.2.32。未配置账号、错误平台及非法参数返回失败,不串到同 QQ 的另一平台。
用户插件适配映射
| 插件现有页面操作 | 新框架调用 |
|---|---|
| 账号列表 | 先从插件确认归属,再过滤 get_level_task_accounts |
| 单账号等级进度 | get_level_task_account |
| 只读任务状态 | get_level_task_status,refresh 转为布尔值 |
| GET tasks?refresh=0/1 | get_level_task_panel,refresh 转为布尔值 |
| 读取开关和执行时间 | get_level_task_settings,或 panel.settings |
| 保存 selectedTasks/scheduleEnabled/scheduleTime | update_level_task_settings,转换为 selected_tasks/schedule_enabled/schedule_time |
| 补挂执行 | execute_level_task_selection,完整返回 tasks/skippedTasks/payload/refreshed/refreshError |
const target = { self_id: 123456, client_type: 'android' }
const panel = await api.get_level_task_panel({ ...target, refresh: false })
const status = await api.get_level_task_status({ ...target, refresh: false })
await api.update_level_task_settings({
...target, selected_tasks: ['完成视频任务获得加速时长'],
schedule_enabled: true, schedule_time: '04:00'
})
// 仅用户明确点击“补挂”时执行,不要放在刷新或计算属性中。
const result = await api.execute_level_task_selection({
...target, tasks: ['完成视频任务获得加速时长']
})
if (!result.refreshed) console.warn(result.refreshError)get_level_task_status 只读返回任务状态与统计,查询不会提交任务;返回结构见对应 API 文档。
保存计划不立即执行。框架主机本地时间为调度依据:到点且当天尚未成功执行的计划会被检查;错过设定分钟后仍可补执行。lastRunDate 只由框架调度器写入,修改设置不重置它。任务执行前会重新取状态并过滤不可执行项目,网页、插件和调度器按账号串行执行。
迁移边界
- 插件停止自己的等级任务定时器,删除“新计划写到插件 level_schedules 并由插件执行”的调用路径。其他账号、套餐等定时业务保留。
- 以框架
level_task_settings和level_task_cache为唯一数据源。已有框架计划必须保留;插件旧计划不得自动覆盖。需要迁移时让管理员对比并明确选择,再逐账号调用保存 API。 - 普通用户只可读写自己拥有且当前有权限的账号。所有操作在插件服务器检查权限,不能只在菜单隐藏。
- 显式传 tasks 时只执行交集;不要为了“重试”传空数组,因为空数组采用框架自动补挂规则。请求超时或断线不证明任务未执行,SDK 不重放;先刷新后人工确认。
- 执行成功但刷新失败时,显示 refreshError,不把旧 payload 当作新进度,也不要自动重新执行。实时读取失败保持明确错误;refresh=false 可以读取已有缓存。
原 get_level_tasks 与 execute_level_tasks 原始协议契约保持不变,新的完整面板接口使用独立 action 名。框架网页现在也调用同一业务服务,因此无需维护插件侧付费标记、进度推算或计划数据库副本。
v2.0.9 接口验收范围
覆盖真实本地 WS 认证与 HTTP 的双向设置/缓存一致性、离线读取与实时刷新失败、平台隔离、只读执行日期、付费/完成/协议不可执行过滤、执行后刷新失败不重放、框架本地时间与跨日调度,以及正反向 Node SDK 参数和响应。v2.0.9 此项接口验收未调用真实 QQ 账号任务;用户插件本身的适配与计划迁移仍由插件开发任务完成。
当前任务范围(v2.5.13)
等级任务执行器已更新:每日签到、农场、免费小说、小游戏、漫画、视频、空间、盲盒、添加机器人、会员福利领取及 QQ 音乐金币兑换。具体可执行状态以面板的 can_execute 为准,不强行标记完成。
Android 9.1.70 保留 QQ 返回的非付费任务,并恢复电脑在线、直接擂台执行及 8 项会员签到。免费小说支持 QQ 当前返回的 去看免费小说 和附件中的 去免费小说看任一本书。is_vip_task 是 QQ 的任务标记,不能用于判定任务收费;管理面板按 is_paid_task 和明确的购买项目过滤。来元宝P图一次仍展示,但现有执行器仅适配 9.2.70,9.1.70 不标记为可执行。旧计划与记录保留。以 can_execute 为准,失败不自动重放。
网页执行 QQ 音乐任务时使用操作 ID 查询执行状态,三分钟倒计时只是等待估计;实际结果以服务器返回及刷新后的 QQ 面板为准。插件仍使用原有同步响应字段,并自行配置足够的请求超时,不自动重放。
