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

discord.py开发Slash Commands机器人如何获取Nitro用户服务器专属头像

解决方案

discord.py的Member对象中,avatar_url是对应用户全局默认头像的属性,Nitro用户设置的服务器专属头像是独立字段,不会覆盖该属性。你需要使用2.0及以上版本的discord.py,该版本已内置服务器专属头像的相关支持。

修改后的代码逻辑如下:

# userobj 是斜杠命令传入的用户对象
# context 是斜杠命令的上下文对象
# 优先从缓存获取成员,缓存不存在时主动拉取服务器成员数据
member = context.guild.get_member(userobj.id)
if not member:
    member = await context.guild.fetch_member(userobj.id)

if member:
    # 优先取当前服务器专属头像,不存在则 fallback 到全局默认头像
    target_avatar = member.guild_avatar_url if member.guild_avatar else member.avatar_url
    print(target_avatar)

补充说明

  • 如需自定义头像的尺寸、格式,可调用URL对象的对应方法,例如target_avatar.with_size(2048)获取2048px尺寸的头像,target_avatar.with_format("webp")获取WebP格式的头像。
  • 如果你使用的是discord.py 1.x旧版本,没有内置相关属性,可以手动从成员的原始数据中提取服务器头像哈希,拼接格式为https://cdn.discordapp.com/guilds/{服务器ID}/users/{用户ID}/avatars/{服务器头像哈希}.png,更推荐直接升级discord.py到2.0+版本简化开发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:36:00