You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord bot等级升级功能失效,xpUp函数经验值不增加问题求助

问题原因

1. 核心逻辑顺序颠倒

你的代码先判断未加本次经验的当前值是否满足升级条件,再决定是否加经验,完全不符合你预期的「先加经验再判断是否升级」的逻辑:

  • 如果用户当前经验已经大于等于升级阈值,代码会直接走升级分支,完全不叠加本次的amount经验,还会错误扣减经验
  • 如果用户当前经验小于升级阈值,加完经验后也不会再次校验是否已经达到升级条件,不会触发升级

2. 升级时的经验扣除计算错误

升级分支中你先执行了等级+1操作,再计算扣除的经验值,此时的usersLvl[userId][1]已经是升级后的新等级,(usersLvl[userId][1]+1)*12实际是下下一级的升级阈值,会多扣12点经验。

3. 不支持连升多级

当前代码只做了1次升级判断,如果单次获得的经验足够升多级,只会触发1次升级,剩余溢出的经验不会正常计算。


修正后的代码

async def xpUp(userId, amount : int):
    userId = str(userId)
    # 初始化新用户数据
    if userId not in usersLvl:
        usersLvl[userId] = [amount, 1]
        return
    # 先叠加本次获得的经验
    usersLvl[userId][0] += amount
    # 循环判断是否满足升级条件,支持连续升级
    while usersLvl[userId][0] >= (usersLvl[userId][1] + 1) * 12:
        # 先扣除当前等级升级需要的经验,再提升等级
        usersLvl[userId][0] -= (usersLvl[userId][1] + 1) * 12
        usersLvl[userId][1] += 1

内容的提问来源于stack exchange,提问作者SquiDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 08:36:03