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

使用discord.py获取Discord用户名时出现<property object at 0x...>问题求助

问题解决与User/Member对象常用信息获取

你的代码错误修复

你当前代码的问题在于把discord.Member类本身赋值给了user变量,而不是获取一个实际的用户实例。类的name是未绑定的属性对象,所以输出<property object at 0x...>。

修改!t命令,通过ctx.author获取发送命令的用户实例:

@client.command()
async def t(ctx):
    # ctx.author 是发送命令的用户(Member/User实例)
    await ctx.send(ctx.author.name)

User/Member对象的常用有用信息

User是基础用户对象,Member是服务器内的用户对象(继承自User),以下是常用属性:

  • name: 用户基础用户名(不带后缀标签)
  • display_name: 用户在当前服务器的显示名称(优先显示昵称,无昵称则显示用户名)
  • id: 用户唯一ID(字符串/整数类型,可用于定位用户)
  • discriminator: 用户名后的四位标识(如#1234,新版Discord部分用户无此值)
  • avatar.url: 用户头像的直接链接(需先判断avatar是否存在,无头像则用默认头像default_avatar.url)
  • created_at: 用户账号创建时间(datetime对象,可格式化输出)
  • joined_at: 用户加入当前服务器的时间(仅Member对象拥有)
  • roles: 用户在服务器内的角色列表(仅Member对象拥有,可遍历获取角色信息)
  • status: 用户在线状态(如discord.Status.online、discord.Status.offline)
  • activity: 用户当前的活动(如正在玩的游戏、Spotify听歌状态,需开启相应intents)

示例:获取用户详细信息的命令

@client.command()
async def userinfo(ctx):
    user = ctx.author
    info_text = f"用户名: {user.name}\n显示名称: {user.display_name}\n用户ID: {user.id}\n账号创建时间: {user.created_at.strftime('%Y-%m-%d %H:%M:%S')}"
    
    # 如果是服务器内的成员,补充服务器相关信息
    if isinstance(user, discord.Member):
        info_text += f"\n加入服务器时间: {user.joined_at.strftime('%Y-%m-%d %H:%M:%S')}\n拥有角色数: {len(user.roles)-1}"  # 减1是排除@everyone角色
    
    await ctx.send(info_text)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 05:22:10