Compare commits

...

2 Commits

Author SHA1 Message Date
00605ad401 修改优先级 2025-02-27 23:24:25 +08:00
Akarin~
1cd60252b5 修复依赖注入问题? (#17)
* 实现缓存装饰器,优化数据获取和存储逻辑

* 重构代码,准备将聊天请求逻辑移入MarshoHandler

* 记录点(

* unfinished

* 🎨 重写基本完毕

* 移除未使用import,添加漏掉的换行

* 修复依赖注入问题?
2025-02-26 00:47:57 +08:00
5 changed files with 26 additions and 23 deletions

View File

@@ -133,7 +133,7 @@ class MarshoHandler:
# except:
# pass
tool_msg.append(choice.message)
for tool_call in tool_calls:
for tool_call in tool_calls: # type: ignore
try:
function_args = json.loads(tool_call.function.arguments)
except json.JSONDecodeError:
@@ -160,6 +160,7 @@ class MarshoHandler:
bot=self.bot,
event=self.event,
matcher=self.matcher,
state=None,
)
).call(**function_args)
else:
@@ -184,7 +185,7 @@ class MarshoHandler:
tools_list: list,
stream: bool = False,
tool_message: Optional[list] = None,
) -> Union[Tuple[UserMessage, ChatCompletionMessage], None]:
) -> Optional[Tuple[UserMessage, ChatCompletionMessage]]:
"""
处理一般聊天
"""

View File

@@ -32,20 +32,20 @@ async def at_enable():
changemodel_cmd = on_command(
"changemodel", permission=SUPERUSER, priority=10, block=True
"changemodel", permission=SUPERUSER, priority=96, block=True
)
# setprompt_cmd = on_command("prompt",permission=SUPERUSER)
praises_cmd = on_command("praises", permission=SUPERUSER, priority=10, block=True)
add_usermsg_cmd = on_command("usermsg", permission=SUPERUSER, priority=10, block=True)
praises_cmd = on_command("praises", permission=SUPERUSER, priority=96, block=True)
add_usermsg_cmd = on_command("usermsg", permission=SUPERUSER, priority=96, block=True)
add_assistantmsg_cmd = on_command(
"assistantmsg", permission=SUPERUSER, priority=10, block=True
"assistantmsg", permission=SUPERUSER, priority=96, block=True
)
contexts_cmd = on_command("contexts", permission=SUPERUSER, priority=10, block=True)
contexts_cmd = on_command("contexts", permission=SUPERUSER, priority=96, block=True)
save_context_cmd = on_command(
"savecontext", permission=SUPERUSER, priority=10, block=True
"savecontext", permission=SUPERUSER, priority=96, block=True
)
load_context_cmd = on_command(
"loadcontext", permission=SUPERUSER, priority=10, block=True
"loadcontext", permission=SUPERUSER, priority=96, block=True
)
marsho_cmd = on_alconna(
Alconna(
@@ -53,42 +53,42 @@ marsho_cmd = on_alconna(
Args["text?", AllParam],
),
aliases=tuple(config.marshoai_aliases),
priority=10,
priority=96,
block=True,
)
resetmem_cmd = on_alconna(
Alconna(
config.marshoai_default_name + ".reset",
),
priority=10,
priority=96,
block=True,
)
marsho_help_cmd = on_alconna(
Alconna(
config.marshoai_default_name + ".help",
),
priority=10,
priority=96,
block=True,
)
marsho_status_cmd = on_alconna(
Alconna(
config.marshoai_default_name + ".status",
),
priority=10,
priority=96,
block=True,
)
marsho_at = on_message(rule=to_me() & at_enable, priority=11)
marsho_at = on_message(rule=to_me() & at_enable, priority=97)
nickname_cmd = on_alconna(
Alconna(
"nickname",
Args["name?", str],
),
priority=10,
priority=96,
block=True,
)
refresh_data_cmd = on_command(
"refresh_data", permission=SUPERUSER, priority=10, block=True
"refresh_data", permission=SUPERUSER, priority=96, block=True
)
@@ -264,7 +264,7 @@ async def marsho(
context.append(context_user.as_dict(), target.id, target.private)
context.append(context_assistant.to_dict(), target.id, target.private)
else:
await UniMessage("没有回答").send()
return
except Exception as e:
await UniMessage(str(e) + suggest_solution(str(e))).send()
traceback.print_exc()

View File

@@ -72,7 +72,9 @@ class Caller:
# if self.ctx.state is None:
# return False, "State is None"
if self._rule and not await self._rule(self.ctx.bot, self.ctx.event):
if self._rule and not await self._rule(
self.ctx.bot, self.ctx.event, self.ctx.state
):
return False, "告诉用户 Rule Denied 规则不匹配"
return True, ""
@@ -113,9 +115,9 @@ class Caller:
# 检查函数签名,确定依赖注入参数
sig = inspect.signature(func)
for name, param in sig.parameters.items():
if param.annotation == T_State:
self.di.state = name
continue # 防止后续判断T_State子类时报错
# if param.annotation == T_State:
# self.di.state = name
# continue # 防止后续判断T_State子类时报错
if issubclass(param.annotation, Event) or isinstance(
param.annotation, Event

View File

@@ -19,7 +19,7 @@ class SessionContext(BaseModel):
bot: Bot
event: Event
matcher: Matcher
# state: T_State
state: T_State | None
caller: Any = None
class Config:

View File

@@ -16,7 +16,7 @@ marsho_memory_cmd = on_alconna(
Subcommand("view", alias={"v"}),
Subcommand("reset", alias={"r"}),
),
priority=10,
priority=96,
block=True,
)