我希望機器人在調用命令時僅切換發送消息權限。代碼: @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 回答

收到一只叮咚
TA貢獻1821條經驗 獲得超5個贊
使用<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)
添加回答
舉報
0/150
提交
取消