fix: 修复无法调用某些指令的问题

This commit is contained in:
Soulter
2024-05-16 23:04:47 +08:00
parent e39c1f9116
commit 99f94b2611
4 changed files with 19 additions and 5 deletions
+6 -1
View File
@@ -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,
+4 -1
View File
@@ -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]
+4 -3
View File
@@ -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"
+5
View File
@@ -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