5.2 KiB
5.2 KiB
问题修复:俱乐部签到错误码 2300190 v3.11.1
版本: v3.11.1
日期: 2025-10-08
类型: Bug Fix
问题描述
用户反馈批量自动化执行俱乐部签到时失败,显示错误:
俱乐部签到
失败
服务器错误: 2300190 - 未知错误
但实际检查游戏时,俱乐部已经是"已签到"状态。
问题分析
错误码 2300190 的含义
通过用户反馈和实际状态对比,可以确定:
- 错误码 2300190 表示 "今日已签到"
- 签到操作实际上是成功的(或者之前已经签到过)
- 但客户端将其视为错误,导致任务统计中显示为"失败"
根本原因
在 batchTaskStore.js 的 legionSignIn case 中:
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
修改前:
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
)
修改逻辑
- 添加 try-catch: 在 executor 函数内部捕获
legion_signin命令的错误 - 检查错误码: 如果错误消息包含
2300190,则不抛出错误 - 返回成功: 对于 2300190 错误,返回
{ alreadySignedIn: true }表示已签到 - 其他错误正常处理: 如果是其他错误码,正常抛出,由
executeSubTask处理
测试验证
测试场景 1:首次签到(未签到状态)
预期行为:
- 发送
legion_signin命令 - 服务器返回成功响应
- 任务标记为成功
预期日志:
✅ 俱乐部签到 - 成功
测试场景 2:重复签到(已签到状态)
预期行为:
- 发送
legion_signin命令 - 服务器返回错误码 2300190
- 客户端识别为"已签到",不抛出错误
- 任务标记为成功
预期日志:
ℹ️ 俱乐部今日已签到,跳过
✅ 俱乐部签到 - 成功
测试场景 3:其他签到错误(如网络错误)
预期行为:
- 发送
legion_signin命令 - 服务器返回其他错误码(如超时)
- 错误正常抛出
- 任务标记为失败
预期日志:
❌ 俱乐部签到 - 失败: 请求超时: legion_signin (1000ms)
影响范围
修改的文件
src/stores/batchTaskStore.js- 俱乐部签到逻辑
影响的功能
- 批量自动化 - legionSignIn 任务: 正确处理"今日已签到"状态
- 任务统计: 不再将"已签到"误计为失败
不受影响的功能
- 其他批量自动化任务(dailyFix, autoStudy, claimHangupReward, addClock, sendCar, climbTower)
- 游戏功能模块
类似问题的处理建议
如果未来遇到类似的"服务器错误"但实际已完成的情况,可以采用相同的模式:
- 确认错误码含义: 通过用户反馈和实际游戏状态,确认错误码的真实含义
- 添加特殊处理: 在相应的 executor 函数中捕获特定错误码
- 返回成功: 对于"已完成"类型的错误码,返回成功状态而不是抛出错误
- 添加日志: 使用
console.log输出友好的提示信息
常见的"已完成"错误码
根据经验,以下错误码通常表示"已完成"而不是真正的错误:
- 2300190: 俱乐部今日已签到
- 12000050: 今日发车次数已达上限(v3.10.1 已处理)
- 其他 23xxxxx: 俱乐部相关的"今日已完成"错误
总结
本次修复(v3.11.1)解决了俱乐部签到的误报问题:
✅ 正确识别: 错误码 2300190 识别为"今日已签到"
✅ 标记成功: 不再将"已签到"误计为失败
✅ 友好日志: 输出 ℹ️ 俱乐部今日已签到,跳过
✅ 统计准确: 任务统计中不再出现误报的失败
这是一个简单但重要的修复,提高了批量自动化的准确性和用户体验。
版本标识: v3.11.1
相关版本:
- v3.11.0 - 重构发车任务,复用游戏模块逻辑
- v3.10.1 - 修复发车任务中服务器 sendCount 不可靠问题