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

Discord.py获取用户头像报错:NoneType无url属性的解决求助

Discord.py 命令头像处理错误修复方案

问题描述

执行embed.set_thumbnail(url=interaction.user.avatar.url)时,无自定义头像的用户触发以下错误:

discord.app_commands.errors.CommandInvokeError: Command 'balance' raised an exception: AttributeError: 'NoneType' object has no attribute 'url'

之前尝试的两段代码均无效:

  • 第一段代码逻辑错误,无论用户是否有头像都显示默认头像
  • 第二段代码仍会触发原错误,因为未先判断avatar是否为None就直接访问url

尝试代码1:

if interaction.user.avatar.url == True:
   embed.set_thumbnail(url=interaction.user.avatar.url)
 else:
   embed.set_thumbnail(url="https://ubg100.net/images/discord.jpg")
   await interaction.response.send_message(embed=embed)

尝试代码2:

if interaction.user.avatar.url == "NoneType":
            embed.set_thumbnail(url=interaction.user.avatar.url)
        else:
          embed.set_thumbnail(url="https://ubg100.net/images/discord.jpg")
        await interaction.response.send_message(embed=embed)

正确解决方法

核心逻辑是先判断avatar是否为None,再决定使用自定义头像还是默认头像:

# 判断用户是否拥有自定义头像
if interaction.user.avatar:
    embed.set_thumbnail(url=interaction.user.avatar.url)
else:
    # 使用Discord官方默认头像,无需自定义外部链接
    embed.set_thumbnail(url=interaction.user.default_avatar.url)

await interaction.response.send_message(embed=embed)

错误原因分析

  1. 两段尝试代码均直接访问interaction.user.avatar.url,当用户无自定义头像时avatar为None,访问url会直接触发AttributeError
  2. 第一段代码中interaction.user.avatar.url == True的逻辑完全错误,字符串永远不会等于布尔值True
  3. 第二段代码判断interaction.user.avatar.url == "NoneType"无意义,NoneType是类型名称,不是avatar的取值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 14:46:02