我希望机器人在调用命令时切换仅发送消息的权限。 代码:
@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,但也会影响其他权限,将其设置为“中立”(默认)。我不想要那样,我只希望它切换发送消息并将所有内容保持原样。
答案 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)