Python 如何获得用户';s角色不和谐.py
正如您所看到的,我正在尝试执行info命令,但在角色部分,我无法显示用户的角色。 起初我做了一个有效的命令,但它也显示了“@everyone”角色,所以我做了一个字符串来删除它(Python 如何获得用户';s角色不和谐.py,python,discord,discord.py-rewrite,Python,Discord,Discord.py Rewrite,正如您所看到的,我正在尝试执行info命令,但在角色部分,我无法显示用户的角色。 起初我做了一个有效的命令,但它也显示了“@everyone”角色,所以我做了一个字符串来删除它(提及.remove(“everyone”)),但它不起作用,它给出了以下错误: Command raised an exception: ValueError: list.remove(x): x not in list 我也试着用“@everyone”来代替“everyone”,但还是不起作用 @client.com
提及.remove(“everyone”)
),但它不起作用,它给出了以下错误:
Command raised an exception: ValueError: list.remove(x): x not in list
我也试着用“@everyone”来代替“everyone”,但还是不起作用
@client.command()
async def info(ctx, user: discord.Member):
mention = []
for role in user.roles:
mention.append(role.mention)
mention.remove("everyone")
b = ", ".join(mention)
embed = discord.Embed(title="Info:", description=f"Info of: {user.mention}", color=discord.Color.orange())
embed.add_field(name="Top role:", value=user.top_role)
embed.add_field(name="Roles:", value=b)
await ctx.send(embed=embed)
在添加到列表之前,您只需使用
if
检查值,然后就不需要删除
mention = []
for role in user.roles:
if role.mention != "@everyone":
mention.append(role.mention)
与列表理解相同
mention = [role.mention for role in user.roles if role.mention != "@everyone"]
顺便说一句:如果要删除某个元素,请在
for
-循环之后只执行一次,如果也可以使用检查元素是否存在
mention = []
for role in user.roles:
mention.append(role.mention)
if "@everyone" in mention:
mention.remove("@everyone")
在添加到列表之前,您只需使用if
检查值,然后就不需要删除
mention = []
for role in user.roles:
if role.mention != "@everyone":
mention.append(role.mention)
与列表理解相同
mention = [role.mention for role in user.roles if role.mention != "@everyone"]
顺便说一句:如果要删除某个元素,请在for
-循环之后只执行一次,如果也可以使用检查元素是否存在
mention = []
for role in user.roles:
mention.append(role.mention)
if "@everyone" in mention:
mention.remove("@everyone")
您可以使用if
语句检查角色的名称是否为@everybody
@client.command()
async def info(ctx, user: discord.Member):
mention = []
for role in user.roles:
if role.name != "@everyone":
mention.append(role.mention)
b = ", ".join(mention)
embed = discord.Embed(title="Info:", description=f"Info of: {user.mention}", color=discord.Color.orange())
embed.add_field(name="Top role:", value=user.top_role)
embed.add_field(name="Roles:", value=b)
await ctx.send(embed=embed)
您可以使用if
语句检查角色的名称是否为@everybody
@client.command()
async def info(ctx, user: discord.Member):
mention = []
for role in user.roles:
if role.name != "@everyone":
mention.append(role.mention)
b = ", ".join(mention)
embed = discord.Embed(title="Info:", description=f"Info of: {user.mention}", color=discord.Color.orange())
embed.add_field(name="Top role:", value=user.top_role)
embed.add_field(name="Roles:", value=b)
await ctx.send(embed=embed)
始终将完整的错误消息(从单词“Traceback”开始)作为文本(而不是屏幕截图)进行讨论(不是评论)。还有其他有用的信息。请使用打印(提及)
查看列表中的内容-确保列表中没有“所有人”
或“@everyone”
。我不明白你为什么期望名单上的每个人都是。以及为什么要在每个循环中删除它,在删除之前,如果提到“everyone”,则应使用。或者更好的if role.notice!=“everyone”
在追加之前。我看不到回溯,因为我有一个错误处理程序,所以,我现在将删除它,并将完整错误@furasalways put完整错误消息(从单词“traceback”开始)以文本形式发送给您(而不是屏幕截图)。还有其他有用的信息。请使用打印(提及)
查看列表中的内容-确保列表中没有“所有人”
或“@everyone”
。我不明白你为什么期望名单上的每个人都是。以及为什么要在每个循环中删除它,在删除之前,如果提到“everyone”,则应使用。或者更好的if role.notice!=“everyone”
在附加之前。我看不到回溯,因为我有一个错误处理程序,所以我现在将其删除,并将完整错误发送给您@furasThe bot now send“@@everyone”,所以我添加了if role.notice!=“@everyone”或角色。提及!=“@@everyone”
但它不起作用。我解决了删除的问题。现在您有了新问题,所以在新页面上创建新问题-您将有更多的空间放置代码、错误消息和其他信息。机器人现在发送“@@everyone”,因此我添加了if role.note!=“@everyone”或角色。提及!=“@@everyone”
但它不起作用。我解决了删除的问题。现在你们有了新的问题,所以在新的页面上创建新的问题——你们将有更多的空间来存放代码、错误表和其他信息