繁体   English   中英

Discord.py 如何测试成员在角色字典中是否具有特定角色?

[英]Discord.py how can I test if a member has certain role in a dictionary of roles?

AdminRoles = ["Moderation","Administration","Emperor"]
@client.command()
async def Commands(ctx):
    member = ctx.author
    if AdminRoles in member.roles:
        ShowCommand = discord.Embed(
            title = "Moderation Commands",
            description = "All commands",
            colour = discord.Colour.red()
        )
        await ctx.send(embed = ShowCommand)
    else:
        ShowCommand = discord.Embed(
            title = "Member Commands",
            description = "All commands",
            colour = discord.Colour.red()
        )
        await ctx.send(embed = ShowCommand)

我确实修复了上面的代码,因为当我输入命令时,它会一直显示正常的播放器命令,并且假设会显示 Mod 命令。

您正在查看列表AdminRoles是否在 member.roles 中,整个列表为:

if ["a","b","m"] in members.roles:

但是您希望 AdminRoles 中的项目之一在 members.role 中,因此您需要以下内容:

test = [e for e in AdminRoles if e in members.roles]
if len(test) > 0:
    doTheRightModeratorThing()
else:
    doTheRightCommonerThing()

(最后一次检查 adminRoles 中是否至少有一个角色在 member.roles 中)

在您的代码中, if AdminRoles in member.roles: 这意味着 if 成员拥有所有AdminRoles 所以你可以像这样改变你的代码:

AdminRoles = ["Moderation","Administration","Emperor"]
@client.command()
async def Commands(ctx):
    member = ctx.author
    for role in member.roles:
        if role.name in AdminRoles:
            ShowCommand = discord.Embed(
                title = "Moderation Commands",
                description = "All commands",
                colour = discord.Colour.red()
            )
            await ctx.send(embed = ShowCommand)
            return
    ShowCommand = discord.Embed(
        title = "Member Commands",
        description = "All commands",
        colour = discord.Colour.red()
    )
    await ctx.send(embed = ShowCommand)

在此代码中,如果成员具有任何AdminRoles ,则将发送审核命令。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM