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

Discord机器人/info user命令判断新用户名时触发属性错误

问题解决:Discord机器人/info user命令新用户名判断逻辑失效及错误修复

错误根源分析

  1. 变量覆盖导致属性访问失败:原代码中满足条件时,将member变量重新赋值为字符串(从discriminator处理而来),后续代码访问member.display_avatar、member.id等属性时,因字符串无这些属性直接报错。
  2. 新用户名判断逻辑错误:Discord新用户名系统的用户discriminator固定为"0",而非简单以0结尾(旧系统用户也可能有discriminator以0结尾的情况)。
  3. 语法错误:原代码中set_thumbnail的URL拼接多了一个右括号,导致URL格式错误。
  4. 未处理None值情况:若member.discriminator为None,调用endswith方法会直接抛出AttributeError。

修复后的代码

@info.command(name="user", description="Mostra informações sobre um usuário")
async def _info(self, interaction: discord.Interaction, member: discord.Member):
    await interaction.response.defer()
    
    # 判断是否使用新用户名系统
    if member.discriminator == "0":
        display_username = member.name  # 新用户名直接用唯一ID
    else:
        display_username = f"{member.name}#{member.discriminator}"  # 旧用户名带 discriminator
    
    info_embed = discord.Embed(color=discord.Color.green())
    info_embed.set_thumbnail(url=member.display_avatar.url)
    info_embed.add_field(name=":placard: Nome", value=f"```{display_username}```", inline=True)
    info_embed.add_field(name=":identification_card: Identidade", value=f"```{member.id}```", inline=True)
    info_embed.add_field(name=":link: Menção", value=f"{member.mention}", inline=True)
    created = member.created_at.timestamp()
    info_embed.add_field(name=":calendar_spiral: Conta Criada", value=f'<t:{int(created)}:F> (<t:{int(created)}:R>)', inline=True)
    joined = member.joined_at.timestamp()
    info_embed.add_field(name=":date: Entrou em", value=f'<t:{int(joined)}:F> (<t:{int(joined)}:R>)', inline=False)
    
    await interaction.followup.send(embed=info_embed)

关键修改说明

  • 保留原Member对象:不再覆盖member变量,而是创建display_username变量专门存储显示用的用户名,确保后续能正常访问用户的所有属性。
  • 正确判断新用户名:直接对比discriminator是否为"0",符合Discord新用户名系统的规则。
  • 修复URL语法错误:移除了set_thumbnail中多余的右括号,确保头像URL正确。
  • 避免None值报错:通过直接对比字符串的方式,避免了调用endswith可能引发的None值错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 03:35:41