# 问题修复:俱乐部签到错误码 2300190 v3.11.1 **版本**: v3.11.1 **日期**: 2025-10-08 **类型**: Bug Fix --- ## 问题描述 用户反馈批量自动化执行俱乐部签到时失败,显示错误: ``` 俱乐部签到 失败 服务器错误: 2300190 - 未知错误 ``` 但实际检查游戏时,俱乐部已经是"已签到"状态。 --- ## 问题分析 ### 错误码 2300190 的含义 通过用户反馈和实际状态对比,可以确定: - **错误码 2300190** 表示 **"今日已签到"** - 签到操作实际上是**成功的**(或者之前已经签到过) - 但客户端将其视为错误,导致任务统计中显示为"失败" ### 根本原因 在 `batchTaskStore.js` 的 `legionSignIn` case 中: ```javascript case 'legionSignIn': // 俱乐部签到 return await executeSubTask( tokenId, 'legion_signin', '俱乐部签到', async () => await client.sendWithPromise('legion_signin', {}, 1000), false ) ``` `executeSubTask` 的 `catch` 块会捕获所有错误,包括 2300190 错误码,并将其标记为任务失败。 --- ## 解决方案 ### 修改内容 在 `legionSignIn` case 的 executor 函数中,添加对错误码 2300190 的特殊处理: **修改文件**: `src/stores/batchTaskStore.js` **修改前**: ```javascript case 'legionSignIn': // 俱乐部签到 return await executeSubTask( tokenId, 'legion_signin', '俱乐部签到', async () => await client.sendWithPromise('legion_signin', {}, 1000), false ) ``` **修改后**: ```javascript 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 不可靠问题