我的if语句在我的whois命令|discord.py中不起作用



所以我正在制作一个whois命令,我正在制作的if语句使它成为这样,如果用户没有角色,则值=None。不过,我有麻烦了。这是代码

@commands.command(aliases=["whois"])
async def userinfo(self, ctx, member: discord.Member = None):
if not member: 
member = ctx.message.author
embed = discord.Embed(colour=discord.Colour(random.randint(1, 16777215)), timestamp=ctx.message.created_at,title=f"User Info - {member}")
embed.set_thumbnail(url=member.avatar_url)
embed.add_field(name="Name", value=member.name)
embed.add_field(name="ID:", value=member.id)
embed.add_field(name="Nickname:", value=member.display_name)
embed.add_field(name="Status", value=member.status)
embed.add_field(name="Created Account On:", value=member.created_at.strftime("%a, %#d %B %Y, %I:%M  UTC"))
embed.add_field(name="Joined Server On:", value=(member.joined_at.strftime("%a, %#d %B %Y, %I:%M %p UTC")))
roles = [role.mention for role in member.roles[1:]]
embed.add_field(name=f"Roles({len(roles)}):",value=",".join(roles), 
inline=False)
embed.add_field(name="Highest Role:", value=member.top_role.mention)
await ctx.send(embed=embed)
if roles == None: 
embed.add_field(name="Roles", value="None", inline=False)

所以我问了我的朋友谁擅长python,他给我发了这个:

@commands.command(aliases=["whois"])
async def userinfo(self, ctx, member: discord.Member = None):
if not member: 
member = ctx.message.author
embed = discord.Embed(colour=discord.Colour(random.randint(1, 16777215)), timestamp=ctx.message.created_at,title=f"User Info - {member}")
embed.set_thumbnail(url=member.avatar_url)
embed.add_field(name="Name", value=member.name)
embed.add_field(name="ID:", value=member.id)
embed.add_field(name="Nickname:", value=member.display_name)
embed.add_field(name="Status", value=member.status)
embed.add_field(name="Created Account On:", value=member.created_at.strftime("%a, %#d %B %Y, %I:%M  UTC"))
embed.add_field(name="Joined Server On:", value=(member.joined_at.strftime("%a, %#d %B %Y, %I:%M %p UTC")))
roles = [role.mention for role in member.roles[1:]]
if roles == None:    embed.add_field(name=f"Roles({len(roles)}):",value=",".join(roles), inline=False)
embed.add_field(name="Highest Role:", value=member.top_role.mention)
await ctx.send(embed=embed)

这是错误

In embed.fields.6.value: This field is required

它是有效的,但问题是它显示了@@every的角色,我如何摆脱@@every角色?

这是固定代码,@everyone角色始终是成员的第一个角色,因此只需通过从第二个元素访问列表(member.roles[1:](将其排除在外。此外,当您尝试发送嵌入,但用户除了@everyone角色之外没有其他角色时,它会抛出错误,因为roles列表是空的,因此必须包含检查以防止插入空值。

commands.command(aliases=["whois"])
async def userinfo(self, ctx, member: discord.Member = None):
if not member: 
member = ctx.message.author
embed = discord.Embed(colour=discord.Colour(random.randint(1, 16777215)), timestamp=ctx.message.created_at,title=f"User Info - {member}")
embed.set_thumbnail(url=member.avatar_url)
embed.add_field(name="Name", value=member.name)
embed.add_field(name="ID:", value=member.id)
embed.add_field(name="Nickname:", value=member.display_name)
embed.add_field(name="Status", value=member.status)
embed.add_field(name="Created Account On:", value=member.created_at.strftime("%a, %#d %B %Y, %I:%M  UTC"))
embed.add_field(name="Joined Server On:", value=(member.joined_at.strftime("%a, %#d %B %Y, %I:%M %p UTC")))
# Fixed part
roles = [role.mention for role in member.roles[1:]]
if len(member.roles[1:]) < 1:
embed.add_field(name=f"Roles:",value="None", inline=False)
embed.add_field(name="Highest Role:", value="None")
elif roles != None:
embed.add_field(name=f"Roles({len(roles)}):",value=",".join(roles), inline=False)
embed.add_field(name="Highest Role:", value=member.top_role.mention)
# End of fix

await ctx.send(embed=embed)

最新更新