如何在discord.py中更改频道权限?

时间:2020-09-03 07:36:55

标签: python discord discord.py

我希望机器人在调用命令时切换仅发送消息的权限。 代码:

    @commands.command()
    @commands.has_permissions(manage_channels=True)
    async def lock(self,ctx):
        await ctx.channel.set_permissions(ctx.guild.default_role, send_messages=False)

这有效,它将默认角色的“发送消息”权限更改为false,但也会影响其他权限,将其设置为“中立”(默认)。我不想要那样,我只希望它切换发送消息并将所有内容保持原样。

1 个答案:

答案 0 :(得分:3)

使用<TextChannel>.overwrites_for()获取该角色的当前权限,然后根据其拥有的权限将send_message设置为False。

    @commands.command()
    @commands.has_permissions(manage_channels=True)
    async def lock(self,ctx):
        perms = ctx.channel.overwrites_for(ctx.guild.default_role)
        perms.send_messages=False
        await ctx.channel.set_permissions(ctx.guild.default_role, overwrite=perms)