Files
xyzw_web_helper/MD说明文件夹/问题修复-俱乐部签到错误码2300190v3.11.1.md
2025-10-17 20:56:50 +08:00

5.2 KiB
Raw Blame History

问题修复:俱乐部签到错误码 2300190 v3.11.1

版本: v3.11.1
日期: 2025-10-08
类型: Bug Fix


问题描述

用户反馈批量自动化执行俱乐部签到时失败,显示错误:

俱乐部签到
失败
服务器错误: 2300190 - 未知错误

但实际检查游戏时,俱乐部已经是"已签到"状态。


问题分析

错误码 2300190 的含义

通过用户反馈和实际状态对比,可以确定:

  • 错误码 2300190 表示 "今日已签到"
  • 签到操作实际上是成功的(或者之前已经签到过)
  • 但客户端将其视为错误,导致任务统计中显示为"失败"

根本原因

batchTaskStore.jslegionSignIn case 中:

case 'legionSignIn':
  // 俱乐部签到
  return await executeSubTask(
    tokenId,
    'legion_signin',
    '俱乐部签到',
    async () => await client.sendWithPromise('legion_signin', {}, 1000),
    false
  )

executeSubTaskcatch 块会捕获所有错误,包括 2300190 错误码,并将其标记为任务失败。


解决方案

修改内容

legionSignIn case 的 executor 函数中,添加对错误码 2300190 的特殊处理:

修改文件: src/stores/batchTaskStore.js

修改前:

case 'legionSignIn':
  // 俱乐部签到
  return await executeSubTask(
    tokenId,
    'legion_signin',
    '俱乐部签到',
    async () => await client.sendWithPromise('legion_signin', {}, 1000),
    false
  )

修改后:

case 'legionSignIn':
  // 俱乐部签到
  return await executeSubTask(
    tokenId,
    'legion_signin',
    '俱乐部签到',
    async () => {
      try {
        const result = await client.sendWithPromise('legion_signin', {}, 1000)
        return result
      } catch (error) {
        const errorMsg = error.message || String(error)
        // 错误码 2300190 表示"今日已签到",不应视为错误
        if (errorMsg.includes('2300190')) {
          console.log(' 俱乐部今日已签到,跳过')
          return { alreadySignedIn: true }
        }
        // 其他错误正常抛出
        throw error
      }
    },
    false
  )

修改逻辑

  1. 添加 try-catch: 在 executor 函数内部捕获 legion_signin 命令的错误
  2. 检查错误码: 如果错误消息包含 2300190,则不抛出错误
  3. 返回成功: 对于 2300190 错误,返回 { alreadySignedIn: true } 表示已签到
  4. 其他错误正常处理: 如果是其他错误码,正常抛出,由 executeSubTask 处理

测试验证

测试场景 1首次签到未签到状态

预期行为:

  • 发送 legion_signin 命令
  • 服务器返回成功响应
  • 任务标记为成功

预期日志:

✅ 俱乐部签到 - 成功

测试场景 2重复签到已签到状态

预期行为:

  • 发送 legion_signin 命令
  • 服务器返回错误码 2300190
  • 客户端识别为"已签到",不抛出错误
  • 任务标记为成功

预期日志:

 俱乐部今日已签到,跳过
✅ 俱乐部签到 - 成功

测试场景 3其他签到错误如网络错误

预期行为:

  • 发送 legion_signin 命令
  • 服务器返回其他错误码(如超时)
  • 错误正常抛出
  • 任务标记为失败

预期日志:

❌ 俱乐部签到 - 失败: 请求超时: legion_signin (1000ms)

影响范围

修改的文件

  1. src/stores/batchTaskStore.js - 俱乐部签到逻辑

影响的功能

  1. 批量自动化 - legionSignIn 任务: 正确处理"今日已签到"状态
  2. 任务统计: 不再将"已签到"误计为失败

不受影响的功能

  • 其他批量自动化任务dailyFix, autoStudy, claimHangupReward, addClock, sendCar, climbTower
  • 游戏功能模块

类似问题的处理建议

如果未来遇到类似的"服务器错误"但实际已完成的情况,可以采用相同的模式:

  1. 确认错误码含义: 通过用户反馈和实际游戏状态,确认错误码的真实含义
  2. 添加特殊处理: 在相应的 executor 函数中捕获特定错误码
  3. 返回成功: 对于"已完成"类型的错误码,返回成功状态而不是抛出错误
  4. 添加日志: 使用 console.log 输出友好的提示信息

常见的"已完成"错误码

根据经验,以下错误码通常表示"已完成"而不是真正的错误:

  • 2300190: 俱乐部今日已签到
  • 12000050: 今日发车次数已达上限v3.10.1 已处理)
  • 其他 23xxxxx: 俱乐部相关的"今日已完成"错误

总结

本次修复v3.11.1)解决了俱乐部签到的误报问题:

正确识别: 错误码 2300190 识别为"今日已签到"
标记成功: 不再将"已签到"误计为失败
友好日志: 输出 俱乐部今日已签到,跳过
统计准确: 任务统计中不再出现误报的失败

这是一个简单但重要的修复,提高了批量自动化的准确性和用户体验。


版本标识: v3.11.1
相关版本:

  • v3.11.0 - 重构发车任务,复用游戏模块逻辑
  • v3.10.1 - 修复发车任务中服务器 sendCount 不可靠问题