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