discord.py头像命令运行报错:'Member'对象无avatar_url属性
问题原因
- 核心原因是你使用的discord.py版本已升级至2.0及以上版本,该版本进行了不兼容的API调整:旧版本v1.x中
Member对象的avatar_url属性已被正式移除,不再支持调用。 - 你的原有代码还存在逻辑缺陷:当未传入用户参数、
user为None时,发送提示文本后没有终止函数执行,会继续尝试访问user的属性,额外触发NoneType对象属性访问错误。
解决方案
按以下两点调整代码即可修复问题:
- 替换头像属性调用方式:将
user.avatar_url替换为user.avatar.url,同时添加兜底逻辑,当用户没有设置自定义头像时自动获取系统默认头像地址。 - 补充逻辑终止语句:用户参数为空时发送提示后,添加
return终止后续代码执行。
修正后可正常运行的完整代码如下:
import discord from discord.ext import commands intents = discord.Intents.default() intents.members = True client = commands.Bot(command_prefix="p!", intents=intents) @client.command() async def avatar(ctx, user:discord.Member=None): if user is None: await ctx.send("Invalid user!") return avatar_url = user.avatar.url if user.avatar else user.default_avatar.url await ctx.send(avatar_url) client.run('xxxxx')
内容的提问来源于stack exchange,提问作者EpicEfeathers
相关产品推荐
相关产品推荐

