11 KiB
11 KiB
问题修复 - 错误码2300070未加入俱乐部提示 v3.11.24
版本: v3.11.24
日期: 2025-10-08
类型: 问题修复 / 用户体验改进
问题描述
用户反馈在批量任务执行时,遇到以下错误:
俱乐部签到失败
服务器错误: 2300070 - 未知错误
发车失败
服务器错误: 2300070 - 未知错误
实际情况:该账号未加入俱乐部
问题分析:
- 俱乐部签到和发车功能都需要账号先加入俱乐部
- 服务器返回错误码
2300070表示未加入俱乐部 - 但系统显示为"未知错误",用户无法了解真实原因
- 需要识别这个错误码并给出友好提示
错误码说明
2300070 错误码
含义: 账号未加入俱乐部
影响范围:
- ❌ 俱乐部签到 - 需要加入俱乐部
- ❌ 发车功能 - 需要加入俱乐部才能使用赛车
- ✅ 其他功能(每日修复、自动学习、领取奖励等)不受影响
处理策略:
- 识别错误码 2300070
- 显示友好的错误提示:"该账号未加入俱乐部"
- 标记为失败(因为无法完成操作)
- 停止继续尝试(避免重复失败)
解决方案
1. 俱乐部签到错误处理
在 legionSignIn 任务中添加对错误码 2300070 的识别:
case 'legionSignIn':
// 俱乐部签到
return await executeSubTask(
tokenId,
'legion_signin',
'俱乐部签到',
async () => {
try {
const result = await client.sendWithPromise('legion_signin', {}, 5000)
return result
} catch (error) {
const errorMsg = error.message || String(error)
// 错误码 2300190 表示"今日已签到",不应视为错误
if (errorMsg.includes('2300190')) {
console.log('ℹ️ 俱乐部今日已签到,跳过')
return { alreadySignedIn: true }
}
// ✅ 新增:错误码 2300070 表示"未加入俱乐部"
if (errorMsg.includes('2300070')) {
console.log('⚠️ 俱乐部签到失败:该账号未加入俱乐部')
throw new Error('该账号未加入俱乐部,无法签到')
}
// 超时错误:提示用户检查游戏内实际状态
if (errorMsg.includes('请求超时') || errorMsg.includes('timeout')) {
console.warn('⚠️ 俱乐部签到超时,请检查游戏内是否已签到')
return { timeout: true, message: '超时(可能已成功,请检查游戏内状态)' }
}
// 其他错误正常抛出
throw error
}
},
false
)
2. 发车功能 - 查询车辆错误处理
在 queryClubCars 函数中添加对错误码 2300070 的识别:
const queryClubCars = async () => {
console.log(`🚗 [${tokenId}] 开始查询俱乐部车辆...`)
try {
const response = await tokenStore.sendMessageAsync(tokenId, 'car_getrolecar', {}, 5000)
if (!response || !response.roleCar) {
throw new Error('查询车辆失败:未返回车辆数据')
}
const carDataMap = response.roleCar.carDataMap || {}
const carIds = Object.keys(carDataMap).sort()
return { carDataMap, carIds }
} catch (error) {
const errorMsg = error.message || String(error)
// ✅ 新增:检查是否是未加入俱乐部的错误(200400 或 2300070)
if (errorMsg.includes('200400') || errorMsg.includes('2300070')) {
throw new Error('该账号未加入俱乐部或没有赛车权限')
}
throw error
}
}
3. 发车功能 - 发送车辆错误处理
在发送车辆的错误处理中添加对错误码 2300070 的识别:
} catch (error) {
const errorMsg = error.message || String(error)
// 区分不同的错误类型
if (errorMsg.includes('12000050')) {
console.log(`⚠️ [${tokenId}] 车辆 ${carId} 发送失败: 今日发车次数已达上限(服务器端限制)`)
localStorage.setItem(dailySendKey, '4')
dailySendCount = 4
break
} else if (errorMsg.includes('200020')) {
console.log(`⚠️ [${tokenId}] 车辆 ${carId} 处于发送冷却期`)
} else if (errorMsg.includes('200350')) {
console.log(`⚠️ [${tokenId}] 车辆 ${carId} 发送失败: 非发车时间(6:00-20:00)或已发车后收车`)
sendSkipCount++
break
} else if (errorMsg.includes('2300070')) {
// ✅ 新增:错误码2300070:未加入俱乐部
console.log(`⚠️ [${tokenId}] 发车失败: 该账号未加入俱乐部`)
sendSkipCount++
break
} else {
console.error(`❌ [${tokenId}] 发送车辆失败: ${carId} - ${errorMsg}`)
}
}
修改文件
src/stores/batchTaskStore.js
修改位置:
- line 1050-1053:
legionSignIn任务 - 添加 2300070 错误识别 - line 1258:
queryClubCars函数 - 添加 2300070 错误识别 - line 1560-1566: 发送车辆错误处理 - 添加 2300070 错误识别
用户体验改进
修改前
执行进度详情
┌─────────────────────────────┐
│ ❌ 俱乐部签到 │
│ 服务器错误: 2300070 - │
│ 未知错误 │
├─────────────────────────────┤
│ ❌ 发车 │
│ 服务器错误: 2300070 - │
│ 未知错误 │
└─────────────────────────────┘
问题:
- ❌ "未知错误" 没有提供有用信息
- ❌ 用户不知道是什么原因
- ❌ 用户不知道如何解决
修改后
执行进度详情
┌─────────────────────────────┐
│ ❌ 俱乐部签到 │
│ 该账号未加入俱乐部, │
│ 无法签到 │
├─────────────────────────────┤
│ ❌ 发车 │
│ 该账号未加入俱乐部或 │
│ 没有赛车权限 │
└─────────────────────────────┘
改进:
- ✅ 明确说明失败原因
- ✅ 用户知道是未加入俱乐部导致
- ✅ 用户知道需要先加入俱乐部
控制台日志
修改前:
❌ [10684...] 俱乐部签到失败: 服务器错误: 2300070 - 未知错误
❌ [10684...] 发送车辆失败: 1 - 服务器错误: 2300070 - 未知错误
修改后:
⚠️ 俱乐部签到失败:该账号未加入俱乐部
⚠️ [10684...] 发车失败: 该账号未加入俱乐部
相关错误码对比
俱乐部相关错误码
| 错误码 | 含义 | 处理方式 |
|---|---|---|
2300070 |
未加入俱乐部 | ❌ 失败,提示加入俱乐部 |
2300190 |
今日已签到 | ✅ 跳过,视为成功 |
200400 |
未加入俱乐部或无权限 | ❌ 失败,提示加入俱乐部 |
发车相关错误码
| 错误码 | 含义 | 处理方式 |
|---|---|---|
2300070 |
未加入俱乐部 | ⚠️ 跳过,停止继续尝试 |
200350 |
非发车时间或已收车 | ⚠️ 跳过,停止继续尝试 |
200020 |
发送冷却期 | ⚠️ 跳过,继续下一辆 |
12000050 |
今日发车已达上限 | ⚠️ 跳过,停止继续尝试 |
200400 |
未加入俱乐部或无权限 | ❌ 失败,停止执行 |
处理策略差异
俱乐部签到
if (errorMsg.includes('2300070')) {
// 抛出错误,标记任务为失败
throw new Error('该账号未加入俱乐部,无法签到')
}
原因:
- 签到是单一操作
- 失败就是失败,没有备选方案
- 需要让用户知道明确的失败状态
发车功能
} else if (errorMsg.includes('2300070')) {
// 不抛出错误,计入 sendSkipCount
console.log(`⚠️ [${tokenId}] 发车失败: 该账号未加入俱乐部`)
sendSkipCount++
break
}
原因:
- 发车是批量操作(可能尝试多辆车)
- 未加入俱乐部意味着所有车辆都无法发送
- 使用
break立即停止,避免重复失败 - 计入
sendSkipCount而非失败计数 - 最终任务仍会失败(因为
sendSuccessCount === 0)
技术要点
错误识别优先级
在错误处理中,按照以下优先级检查:
- 特殊成功状态(如 2300190 已签到)→ 返回成功
- 可识别的错误码(如 2300070 未加入)→ 友好提示
- 超时错误 → 特殊处理(可能已成功)
- 其他错误 → 原样抛出
if (errorMsg.includes('2300190')) {
return { alreadySignedIn: true } // 1. 特殊成功
}
if (errorMsg.includes('2300070')) {
throw new Error('友好提示') // 2. 可识别错误
}
if (errorMsg.includes('timeout')) {
return { timeout: true } // 3. 超时
}
throw error // 4. 其他错误
错误消息转换
// 系统错误(不友好)
服务器错误: 2300070 - 未知错误
// 转换后(友好)
该账号未加入俱乐部,无法签到
转换方法:
if (errorMsg.includes('2300070')) {
throw new Error('该账号未加入俱乐部,无法签到')
}
测试验证
测试场景
-
✅ 未加入俱乐部
- 俱乐部签到 → 显示"该账号未加入俱乐部,无法签到"
- 发车 → 显示"该账号未加入俱乐部或没有赛车权限"
-
✅ 已加入俱乐部
- 俱乐部签到 → 正常签到或显示"今日已签到"
- 发车 → 正常发车或其他错误提示
-
✅ 其他错误
- 超时 → "超时(可能已成功,请检查游戏内状态)"
- 未知错误 → 显示原始错误信息
预期行为
未加入俱乐部的账号:
总任务: 7
成功: 5(每日修复、自动学习、领取奖励、加钟、爬塔)
失败: 2(俱乐部签到、发车)
失败任务详情:
- ❌ 俱乐部签到: 该账号未加入俱乐部,无法签到
- ❌ 发车: 该账号未加入俱乐部或没有赛车权限
用户指南
如何解决此问题?
当看到"该账号未加入俱乐部"提示时:
- 进入游戏
- 加入俱乐部:
- 点击游戏内的"俱乐部"功能
- 搜索并申请加入一个俱乐部
- 或创建自己的俱乐部
- 等待审核通过(如果是申请加入)
- 重新执行任务
注意:
- 俱乐部签到和发车功能必须先加入俱乐部
- 其他任务(每日修复、学习、领奖等)不受影响
- 如果不需要这两个功能,可以使用"快速套餐"模板
相关版本
- v3.11.1: 修复俱乐部签到错误码 2300190
- v3.11.15: 修复俱乐部签到超时误判
- v3.11.20: 修复发车错误码 200350
- v3.11.24: 添加错误码 2300070 识别(本版本)
总结
核心改进:
- 🔍 识别错误码 2300070(未加入俱乐部)
- 💬 提供友好的错误提示
- 📊 在三个位置添加错误处理(俱乐部签到、查询车辆、发送车辆)
- ✅ 帮助用户快速定位问题原因
用户获益:
- ✅ 明确知道失败原因
- ✅ 知道如何解决问题
- ✅ 减少疑惑和困扰
- ✅ 提升整体体验
状态: ✅ 已完成
版本: v3.11.24