diff --git a/cores/astrbot/core.py b/cores/astrbot/core.py index 824a8fcb8..611ade77b 100644 --- a/cores/astrbot/core.py +++ b/cores/astrbot/core.py @@ -378,8 +378,13 @@ async def oper_msg(message: AstrBotMessage, llm_result_str = "" # check commands and plugins + message_str_no_wake_prefix = message_str + for wake_prefix in _global_object.nick: # nick: tuple + if message_str.startswith(wake_prefix): + message_str_no_wake_prefix = message_str.removeprefix(wake_prefix) + break hit, command_result = await llm_command_instance[chosen_provider].check_command( - message_str, + message_str_no_wake_prefix, session_id, role, reg_platform, diff --git a/cores/astrbot/types.py b/cores/astrbot/types.py index f44318fa1..c95ab33cf 100644 --- a/cores/astrbot/types.py +++ b/cores/astrbot/types.py @@ -95,6 +95,9 @@ class RegisteredPlatform: platform_instance: Platform origin: str = None # 注册来源 + def __str__(self) -> str: + return self.platform_name + @dataclass class RegisteredLLM: @@ -111,7 +114,7 @@ class GlobalObject: 存放一些公用的数据,用于在不同模块(如core与command)之间传递 ''' version: str # 机器人版本 - nick: str # 用户定义的机器人的别名 + nick: tuple # 用户定义的机器人的别名 base_config: dict # config.json 中导出的配置 cached_plugins: List[RegisteredPlugin] # 加载的插件 platforms: List[RegisteredPlatform] diff --git a/model/command/command.py b/model/command/command.py index a25e10d6c..32a198936 100644 --- a/model/command/command.py +++ b/model/command/command.py @@ -76,6 +76,7 @@ class Command: else: raise TypeError("插件返回值格式错误。") if hit: + logger.debug("hit plugin: " + plugin.metadata.plugin_name) return True, res except TypeError as e: # 参数不匹配,尝试使用旧的参数方案 @@ -199,10 +200,10 @@ class Command: nick: 存储机器人的昵称 ''' - def set_nick(self, message: str, platform: str, role: str = "member"): + def set_nick(self, message: str, platform: RegisteredPlatform, role: str = "member"): if role != "admin": return True, "你无权使用该指令 :P", "nick" - if platform == PLATFORM_GOCQ: + if str(platform) == PLATFORM_GOCQ: l = message.split(" ") if len(l) == 1: return True, "【设置机器人昵称】示例:\n支持多昵称\nnick 昵称1 昵称2 昵称3", "nick" @@ -210,7 +211,7 @@ class Command: cc.put("nick_qq", nick) self.global_object.nick = tuple(nick) return True, f"设置成功!现在你可以叫我这些昵称来提问我啦~", "nick" - elif platform == PLATFORM_QQCHAN: + elif str(platform) == PLATFORM_QQCHAN: nick = message.split(" ")[2] return False, "QQ频道平台不支持为机器人设置昵称。", "nick" diff --git a/model/command/openai_official.py b/model/command/openai_official.py index 3edf530e7..bd7b9cc24 100644 --- a/model/command/openai_official.py +++ b/model/command/openai_official.py @@ -2,7 +2,10 @@ from model.command.command import Command from model.provider.openai_official import ProviderOpenAIOfficial from util.personality import personalities from cores.astrbot.types import GlobalObject +from SparkleLogging.utils.core import LogManager +from logging import Logger +logger: Logger = LogManager.GetLogger(log_name='astrbot-core') class CommandOpenAIOfficial(Command): def __init__(self, provider: ProviderOpenAIOfficial, global_object: GlobalObject): @@ -28,6 +31,8 @@ class CommandOpenAIOfficial(Command): message_obj ) + logger.debug(f"基础指令hit: {hit}, res: {res}") + # 这里是这个 LLM 的专属指令 if hit: return True, res