更改角色中的特定权限,discord.py 重写

时间:2021-01-31 13:56:05

标签: python discord.py

我想为服务器中的每个角色禁用mention_everyone 权限。 我尝试了两件事:

@client.command()
async def removeper(ctx):
        roles=ctx.guild.roles
        perms=discord.Permissions()
        perms.update(mention_everyone=False)
        for role in roles:
            print(role)
            try:
               await role.edit(permissions=perms)
            except:
                print("can't")
                continue

这里的问题是,它不仅禁用了mention_everyone 权限,还禁用了所有权限。

@client.command()
async def removeper(ctx):
        roles=ctx.guild.roles
        perms=discord.PermissionOverwrite(mention_everyone=False)
        for role in roles:
            print(role)
            try:
                await role.edit(overwrite=perms)
            except:
                print("can't")
                continue

我并不真正了解 PermissionOverwrite() 的作用,显然我也不了解 Permissions()。因此,此代码甚至不会更改一项权限。

有没有办法只禁用一个权限?

1 个答案:

答案 0 :(得分:0)

您可以获取当前角色的权限,然后更新这些权限并进行设置。

@client.command()
async def removeper(ctx):
        roles=ctx.guild.roles
        for role in roles:
            perms=role.permissions
            perms.update(mention_everyone=False)
            print(role)
            try:
               await role.edit(permissions=perms)
            except:
                print("can't")
                continue