如何检查用户在特定服务器中是否具有特定角色

时间:2020-09-19 22:15:31

标签: python discord discord.py discord.py-rewrite patreon

我想为我的机器人制作“ Patreon Only”命令,但我不知道如何做到这一点,因此我可以基于1个服务器中的1个角色来限制对命令的访问,我希望该命令在全局范围内起作用,但是我希望支持服务器上具有“ Patreon”角色的人员只能访问该命令。

2 个答案:

答案 0 :(得分:1)

您可以使用discord.utils.get来获得Patreon角色,然后遍历该成员的角色和一个简单的if-else

@client.command()
async def test(ctx):
    homeGuild = client.get_guild(7300646418576xxxxx)  # Home Guild/Support Server; where user has "Patreon" role.
    patreonRole = get(homeGuild.roles, id=7570088168301xxxxx)  # Patreon role ID that a user must have.
    member = []

    for pledger in homeGuild.members:
        if pledger == ctx.author:
            member = pledger

    if patreonRole in member.roles:
        await ctx.send("You are a Patreon.")
    else:
        await ctx.send("You are not a Patreon.")

答案 1 :(得分:0)

在您的命令中,使用get_guild获取支持服务器行会,然后使用Guild.get_member获取执行该命令的用户的成员对象(ctx.author.id)。然后,您可以检查您的Patreon角色是否在该成员的Member.roles中(我会使用utils.get),然后退出该命令。