205 lines
5.2 KiB
Markdown
205 lines
5.2 KiB
Markdown
|
|
# 问题修复:俱乐部签到错误码 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 不可靠问题
|
|||
|
|
|