From 3b4cc48fa0c73f1c6e6f60e316849102ceede050 Mon Sep 17 00:00:00 2001 From: Soulter <905617992@qq.com> Date: Wed, 19 Feb 2025 16:22:42 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=91=8C=20perf:=20=E5=BC=80=E5=90=AF?= =?UTF-8?q?=E5=AF=B9=E8=AF=9D=E9=9A=94=E7=A6=BB=E7=9A=84=E7=BE=A4=E8=81=8A?= =?UTF-8?q?=E4=BB=A5=E5=8F=8A=E7=A7=81=E8=81=8A=E4=B8=8B=EF=BC=8C=E9=9D=9E?= =?UTF-8?q?op=E5=8F=AF=E4=BB=A5=E5=8F=AF=E4=BB=A5=E4=BD=BF=E7=94=A8=20/del?= =?UTF-8?q?=20=E5=92=8C=20/reset=20#519?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/astrbot/main.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/astrbot/main.py b/packages/astrbot/main.py index 61a1d500e..cd4811654 100644 --- a/packages/astrbot/main.py +++ b/packages/astrbot/main.py @@ -350,16 +350,20 @@ UID: {user_id} 此 ID 可用于设置管理员。/op 授权管理员, /deo else: event.set_result(MessageEventResult().message("无效的参数。")) - @filter.permission_type(filter.PermissionType.ADMIN) @filter.command("reset") async def reset(self, message: AstrMessageEvent): '''重置 LLM 会话''' + is_unique_session = self.context.get_config()['platform_settings']['unique_session'] + if message.get_group_id() and not is_unique_session and message.role != "admin": + # 群聊,没开独立会话,发送人不是管理员 + message.set_result(MessageEventResult().message(f"会话处于群聊,并且未开启独立会话,并且您 (ID {message.get_sender_id()}) 不是管理员,因此没有权限重置当前对话。")) + return + if not self.context.get_using_provider(): message.set_result(MessageEventResult().message("未找到任何 LLM 提供商。请先配置。")) return provider = self.context.get_using_provider() - print(provider.meta()) if provider and provider.meta().type == 'dify': assert isinstance(provider, ProviderDify) await provider.forget(message.unified_msg_origin) @@ -432,7 +436,6 @@ UID: {user_id} 此 ID 可用于设置管理员。/op 授权管理员, /deo message.set_result( MessageEventResult().message(f"切换模型到 {self.context.get_using_provider().get_model()}。")) - @filter.command("history") async def his(self, message: AstrMessageEvent, page: int = 1): '''查看对话记录''' @@ -611,10 +614,14 @@ UID: {user_id} 此 ID 可用于设置管理员。/op 授权管理员, /deo await self.context.conversation_manager.update_conversation_title(message.unified_msg_origin, new_name) message.set_result(MessageEventResult().message("重命名对话成功。")) - @filter.permission_type(filter.PermissionType.ADMIN) @filter.command("del") async def del_conv(self, message: AstrMessageEvent): '''删除当前对话''' + is_unique_session = self.context.get_config()['platform_settings']['unique_session'] + if message.get_group_id() and not is_unique_session and message.role != "admin": + # 群聊,没开独立会话,发送人不是管理员 + message.set_result(MessageEventResult().message(f"会话处于群聊,并且未开启独立会话,并且您 (ID {message.get_sender_id()}) 不是管理员,因此没有权限删除当前对话。")) + return provider = self.context.get_using_provider() if provider and provider.meta().type == 'dify': @@ -633,7 +640,6 @@ UID: {user_id} 此 ID 可用于设置管理员。/op 授权管理员, /deo await self.context.conversation_manager.delete_conversation(message.unified_msg_origin, session_curr_cid) message.set_result(MessageEventResult().message("删除当前对话成功。不再处于对话状态,使用 /switch 序号 切换到其他对话或 /new 创建。")) - @filter.permission_type(filter.PermissionType.ADMIN) @filter.command("key") async def key(self, message: AstrMessageEvent, index: int=None):