【问题标题】:User role list in discord.pydiscord.py 中的用户角色列表
【发布时间】:2022-07-06 20:32:57
【问题描述】:

    rlist = []
    for role in user.roles:
        if role.name != "@everyone":
            rlist.append(role.mention)
        else:
            rlist.append("No roles")

目前我正在为该服务器中的用户角色创建一个列表,但我的输出始终是无角色 |这里的角色,当没有角色为真时它可以工作,但是当有用户角色时,我怎样才能让它不说没有角色

这是我的全部代码

@client.command()
@commands.cooldown(1, 5, commands.BucketType.user)
async def whois(ctx, *, user: discord.Member = None):
    guild = ctx.guild
    if user == None:
        user = ctx.author

    rlist = []
    for role in user.roles:
        if role.name != "@everyone":
            rlist.append(role.mention)
        else:
            rlist.append("No roles")

    b = " | ".join(rlist)

    badgelist = ""

    if user.public_flags.hypesquad_brilliance:
        badgelist += f"Hypesquad Brilliance <:brillance:958385039870136361>\n"
    elif user.public_flags.hypesquad_bravery:
        badgelist += f"Hypesquad Bravery <:bravery:958384913344786463>\n"
    elif user.public_flags.hypesquad_balance:
        badgelist += f"Hypesquad Balance <:balance:958384787951857744>\n"
    else:
        badgelist += f"No badges\n"

    embed = discord.Embed(timestamp=ctx.message.created_at, color=0x2F3136)
    embed.set_author(name=user, icon_url=user.avatar_url)
    embed.set_thumbnail(url=user.avatar_url)
    embed.add_field(name=f"???? Display Name:", value=f"{user.mention}")
    embed.add_field(name=f"<:Hypesquad:958382023028928532> Badges:", value=badgelist, inline=False)
    embed.add_field(name=f"Avatar", value=f"[Avatar link]({user.avatar_url})")
    embed.add_field(name=f'<:settings:958374936605499452> Created Account on:',value=user.created_at.strftime("%d/%m/%Y %H:%M"),inline=False)
    embed.add_field(name=f'<:joined_at:958375038971699200> Joined {guild.name} on:',value=user.joined_at.strftime("%d/%m/%Y"),inline=False)
    embed.add_field(name=f'<:mention:958374345812627467> Roles:',value=''.join([b]),inline=False)
    embed.set_footer(text=f"ID: {user.id}")
    await ctx.send(embed=embed)

【问题讨论】:

    标签: python discord.py


    【解决方案1】:

    你的逻辑有点偏离你的要求;您当前所做的核心工作是将@everyone 角色有效地替换为列表中显示No roles 的条目,无论实际上是否确实没有与该用户关联的角色。

    看起来你应该应该做的是continue,如果你当前在循环中操作的角色是@everyone,则不要采取任何行动,同时还要添加一个逻辑门到辨别何时真正“没有角色”(似乎只有@everyone 角色):

    rlist = []
    if len(user.roles) <= 1:
        rlist.append("No roles")
    else:
        for role in user.roles:
            if role.name != "@everyone":
                rlist.append(role.mention)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-06
      • 2019-08-11
      • 1970-01-01
      • 1970-01-01
      • 2021-04-08
      • 1970-01-01
      • 2021-07-31
      • 2021-09-30
      相关资源
      最近更新 更多