From 09b746cdece6977de1ee3db82015587b5ebfcc84 Mon Sep 17 00:00:00 2001 From: Soulter <905617992@qq.com> Date: Sat, 23 Dec 2023 14:08:44 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=8F=92=E4=BB=B6=E3=80=81=E6=8C=87?= =?UTF-8?q?=E4=BB=A4=E8=BF=94=E5=9B=9E=E6=8E=A5=E5=8F=A3=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cores/qqbot/global_object.py | 15 ++++++++++++++- model/command/command.py | 16 +++++++++++++--- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/cores/qqbot/global_object.py b/cores/qqbot/global_object.py index d9871429e..1482a963f 100644 --- a/cores/qqbot/global_object.py +++ b/cores/qqbot/global_object.py @@ -69,4 +69,17 @@ class AstrMessageEvent(): self.role = role self.global_object = global_object self.llm_provider = llm_provider - self.session_id = session_id \ No newline at end of file + self.session_id = session_id + +class CommandResult(): + ''' + 用于在Command中返回多个值 + ''' + def __init__(self, hit: bool, success: bool, message_chain: list, command_name: str = "unknown_command") -> None: + self.hit = hit + self.success = success + self.message_chain = message_chain + self.command_name = command_name + + def _result_tuple(self): + return (self.success, self.message_chain, self.command_name) \ No newline at end of file diff --git a/model/command/command.py b/model/command/command.py index 907bf58f3..2227cddb5 100644 --- a/model/command/command.py +++ b/model/command/command.py @@ -25,6 +25,7 @@ from nakuru.entities.components import ( from PIL import Image as PILImage from cores.qqbot.global_object import GlobalObject, AstrMessageEvent from pip._internal import main as pipmain +from cores.qqbot.global_object import CommandResult PLATFORM_QQCHAN = 'qqchan' PLATFORM_GOCQ = 'gocq' @@ -55,7 +56,16 @@ class Command: ) for k, v in cached_plugins.items(): try: - hit, res = v["clsobj"].run(ame) + result = v["clsobj"].run(ame) + if isinstance(result, CommandResult): + hit = result.hit + res = result._result_tuple() + print(hit, res) + elif isinstance(result, tuple): + hit = result[0] + res = result[1] + else: + raise TypeError("插件返回值格式错误。") if hit: return True, res except TypeError as e: @@ -65,9 +75,9 @@ class Command: if hit: return True, res except BaseException as e: - gu.log(f"{k}插件加载出现问题,原因: {str(e)}\n已安装插件: {cached_plugins.keys}\n如果你没有相关装插件的想法, 请直接忽略此报错, 不影响其他功能的运行。", level=gu.LEVEL_WARNING) + gu.log(f"{k}插件异常,原因: {str(e)}\n已安装插件: {cached_plugins.keys}\n如果你没有相关装插件的想法, 请直接忽略此报错, 不影响其他功能的运行。", level=gu.LEVEL_WARNING) except BaseException as e: - gu.log(f"{k}插件加载出现问题,原因: {str(e)}\n已安装插件: {cached_plugins.keys}\n如果你没有相关装插件的想法, 请直接忽略此报错, 不影响其他功能的运行。", level=gu.LEVEL_WARNING) + gu.log(f"{k} 插件异常,原因: {str(e)}\n已安装插件: {cached_plugins.keys}\n如果你没有相关装插件的想法, 请直接忽略此报错, 不影响其他功能的运行。", level=gu.LEVEL_WARNING) if self.command_start_with(message, "nick"): return True, self.set_nick(message, platform, role)