Python 如何获得用户';s角色不和谐.py

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

正如您所看到的,我正在尝试执行info命令,但在角色部分,我无法显示用户的角色。 起初我做了一个有效的命令,但它也显示了“@everyone”角色,所以我做了一个字符串来删除它(
提及.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”
但它不起作用。我解决了
删除
的问题。现在你们有了新的问题,所以在新的页面上创建新的问题——你们将有更多的空间来存放代码、错误表和其他信息