python-3.x - Discord.py ~ 显示用户信息的命令
问题描述
我正在尝试创建一个 userinfo 命令,该命令有效,但仅没有提及“获取我的信息,但在我提及某人时不起作用”。当我提到某人查看他们的信息时,该命令给了我这
Command raised an exception: AttributeError: 'ClientUser' object has no attribute 'joined_at'
是代码
@bot.command()
async def userinfo(ctx, *, user: discord.User = None): # b'\xfc'
if user is None:
user = ctx.author
date_format = "%a, %d %b %Y %I:%M %p"
embed = discord.Embed(color=0xdfa3ff, description=user.mention)
embed.set_author(name=str(user), icon_url=user.avatar_url)
embed.set_thumbnail(url=user.avatar_url)
embed.add_field(name="Joined", value=user.joined_at.strftime(date_format))
members = sorted(ctx.guild.members, key=lambda m: m.joined_at)
embed.add_field(name="Join position", value=str(members.index(user)+1))
embed.add_field(name="Registered", value=user.created_at.strftime(date_format))
if len(user.roles) > 1:
role_string = ' '.join([r.mention for r in user.roles][1:])
embed.add_field(name="Roles [{}]".format(len(user.roles)-1), value=role_string, inline=False)
perm_string = ', '.join([str(p[0]).replace("_", " ").title() for p in user.guild_permissions if p[1]])
embed.add_field(name="Guild permissions", value=perm_string, inline=False)
embed.set_footer(text='ID: ' + str(user.id))
return await ctx.send(embed=embed)
解决方案
discord.User
没有joined_at
变量。
改用这个:
@bot.command()
async def userinfo(ctx, *, user: discord.Member = None):
...
我还建议您检查该命令是否未在私人聊天中执行,否则会引发错误。
if isinstance(ctx.channel, discord.DMChannel):
return
推荐阅读
- r - 在 RStudio 中确定最佳集群数
- python-3.8 - 在目录层次结构中查找和/或编辑文件名
- arrays - realloc时,现有和新插入的数据包含奇怪的值
- angular - Angular - 将 Datepicker 转换为 JS 日期并发送到 API - 时区恐怖
- c# - 根据属性属性反序列化特定属性
- ios - 基本视图 UI 导航栏对方向的响应
- qt - 为什么gui线程在槽中调用QLabel控件的setText方法响应慢?
- python - 尝试使用熊猫将 json 转换为 csv 时,将 dicts 与非系列错误混合,但仅当从 url 检索到 json 时
- flutter - Flutter BLoC 不断重建 CircularProgressIndicator
- c# - 如何使用控制台应用程序中 Main 函数的参数在 app.config 中设置连接字符串的值