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)