Skip to content

插件共享等级任务管理接入 ​

此能力从 v2.0.9 起提供。v2.0.8 及更早安装包不包含这些管理接口;请先将框架前后端及 SDK 升级到 v2.0.9,或更新版本,再接入插件。

新增 API ​

能力与权限 ​

连接插件服务并完成原有令牌认证后,调用 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/1get_level_task_panel,refresh 转为布尔值
读取开关和执行时间get_level_task_settings,或 panel.settings
保存 selectedTasks/scheduleEnabled/scheduleTimeupdate_level_task_settings,转换为 selected_tasks/schedule_enabled/schedule_time
补挂执行execute_level_task_selection,完整返回 tasks/skippedTasks/payload/refreshed/refreshError
javascript
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 只由框架调度器写入,修改设置不重置它。任务执行前会重新取状态并过滤不可执行项目,网页、插件和调度器按账号串行执行。

迁移边界 ​

  1. 插件停止自己的等级任务定时器,删除“新计划写到插件 level_schedules 并由插件执行”的调用路径。其他账号、套餐等定时业务保留。
  2. 以框架 level_task_settings 和 level_task_cache 为唯一数据源。已有框架计划必须保留;插件旧计划不得自动覆盖。需要迁移时让管理员对比并明确选择,再逐账号调用保存 API。
  3. 普通用户只可读写自己拥有且当前有权限的账号。所有操作在插件服务器检查权限,不能只在菜单隐藏。
  4. 显式传 tasks 时只执行交集;不要为了“重试”传空数组,因为空数组采用框架自动补挂规则。请求超时或断线不证明任务未执行,SDK 不重放;先刷新后人工确认。
  5. 执行成功但刷新失败时,显示 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 面板为准。插件仍使用原有同步响应字段,并自行配置足够的请求超时,不自动重放。

萌卡 · 自托管 QQ 机器人框架