如何更改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,但它也会影响其他权限,它将它们设置为中性(默认)。我不希望这样,我希望它只是切换发送消息并保留所有内容不变。


扬帆大鱼
浏览 77回答 1
1回答

收到一只叮咚

使用<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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python