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

Discord机器人检测用户Nitro状态异常:用户有Nitro却返回None排查

问题原因与解决方案

你的代码里用user.premium_since判断Nitro状态,这是核心错误——这个属性检测的是用户是否为当前服务器的Nitro Boost用户,而非用户是否拥有Discord Nitro会员。哪怕用户自己购买了Nitro,但没给当前服务器充Boost,premium_since就会是None,导致误判。

要正确检测用户是否拥有Nitro,需要检查用户的公开权限标识(public_flags):

修改后的代码如下:

@bot.command(name="nitro")
async def has_nitro(ctx, user_id: int):
    user = await ctx.guild.fetch_member(user_id)
    if user:
        # 检查用户是否拥有Discord Nitro会员
        has_nitro = user.public_flags.premium
        nitro_status = 'Yes' if has_nitro else 'No'
        await ctx.send(f"{user.name} has nitro: {nitro_status}")
    else:
        await ctx.send("User not found in this server.")

补充说明

  • public_flags.premium对应用户是否拥有Nitro(包含Nitro Basic和Nitro Classic)
  • 机器人默认权限即可获取用户公开信息,无需额外配置
  • 极少数情况下,用户隐私设置可能限制公开信息获取,但这种场景非常罕见

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 20:59:56