Files
xyzw_web_helper/MD说明文件夹/问题修复-错误码2300070未加入俱乐部提示v3.11.24.md
2025-10-17 20:56:50 +08:00

11 KiB
Raw Permalink Blame History

问题修复 - 错误码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

修改位置

  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 未加入俱乐部或无权限 失败,停止执行

处理策略差异

俱乐部签到

if (errorMsg.includes('2300070')) {
  // 抛出错误,标记任务为失败
  throw new Error('该账号未加入俱乐部,无法签到')
}

原因

  • 签到是单一操作
  • 失败就是失败,没有备选方案
  • 需要让用户知道明确的失败状态

发车功能

} else if (errorMsg.includes('2300070')) {
  // 不抛出错误,计入 sendSkipCount
  console.log(`⚠️ [${tokenId}] 发车失败: 该账号未加入俱乐部`)
  sendSkipCount++
  break
}

原因

  • 发车是批量操作(可能尝试多辆车)
  • 未加入俱乐部意味着所有车辆都无法发送
  • 使用 break 立即停止,避免重复失败
  • 计入 sendSkipCount 而非失败计数
  • 最终任务仍会失败(因为 sendSuccessCount === 0

技术要点

错误识别优先级

在错误处理中,按照以下优先级检查:

  1. 特殊成功状态(如 2300190 已签到)→ 返回成功
  2. 可识别的错误码(如 2300070 未加入)→ 友好提示
  3. 超时错误 → 特殊处理(可能已成功)
  4. 其他错误 → 原样抛出
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('该账号未加入俱乐部,无法签到')
}

测试验证

测试场景

  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