diff --git a/marshoai/__plugin__.py b/marshoai/__plugin__.py index 47045db..8610088 100644 --- a/marshoai/__plugin__.py +++ b/marshoai/__plugin__.py @@ -1,11 +1,14 @@ import traceback from azure.ai.inference.aio import ChatCompletionsClient from azure.ai.inference.models import UserMessage, AssistantMessage, TextContentItem, ImageContentItem, ImageUrl, CompletionsFinishReason -from melobot import Plugin, send_text +from melobot import send_text +from melobot.handle import on_start_match, on_command from melobot.log import get_logger -from melobot.protocols.onebot.v11 import on_start_match, on_message, on_command, on_notice, on_event, Adapter -from melobot.protocols.onebot.v11.handle import Args -from melobot.protocols.onebot.v11.utils import MsgChecker, LevelRole, MsgCheckerFactory, StartMatcher, ParseArgs, Parser +from melobot.plugin import PluginPlanner +from melobot.protocols.onebot.v11 import on_message, on_notice, on_event, Adapter +from melobot.utils.match import StartMatcher +from melobot.utils.parse import Parser, CmdArgs +from melobot.protocols.onebot.v11.utils import MsgChecker, LevelRole, MsgCheckerFactory from melobot.protocols.onebot.v11.adapter.event import MessageEvent, PokeNotifyEvent, GroupMessageEvent, PrivateMessageEvent from melobot.protocols.onebot.v11.adapter.segment import PokeSegment from azure.core.credentials import AzureKeyCredential @@ -38,12 +41,12 @@ else: logger.info("マルショは、高性能ですから!") @on_command(checker=superuser_checker, cmd_start="/", cmd_sep=" ", targets="usermsg") -async def add_usermsg(event: MessageEvent, args: ParseArgs = Args()): +async def add_usermsg(event: MessageEvent, args: CmdArgs): context.append(UserMessage(content=" ".join(args.vals)).as_dict(), get_target_id(event), event.is_private) await send_text("已添加用户消息") @on_command(checker=superuser_checker, cmd_start="/", cmd_sep=" ", targets="assistantmsg") -async def add_assistantmsg(event: MessageEvent, args: ParseArgs = Args()): +async def add_assistantmsg(event: MessageEvent, args: CmdArgs): context.append(AssistantMessage(content=" ".join(args.vals)).as_dict(), get_target_id(event), event.is_private) await send_text("已添加助手消息") @@ -52,19 +55,19 @@ async def praises(): await send_text(build_praises()) @on_command(checker=superuser_checker, cmd_start="/", cmd_sep=" ", targets="savecontext") -async def save_context(event: MessageEvent, args: ParseArgs = Args()): +async def save_context(event: MessageEvent, args: CmdArgs): contexts = context.build(get_target_id(event), event.is_private)[1:] await save_context_to_json(" ".join(args.vals), contexts) await send_text("已保存上下文") @on_command(checker=superuser_checker, cmd_start="/", cmd_sep=" ", targets="loadcontext") -async def load_context(event: MessageEvent, args: ParseArgs = Args()): +async def load_context(event: MessageEvent, args: CmdArgs): context.set_context(await load_context_from_json(" ".join(args.vals)), get_target_id(event), event.is_private) await send_text("已加载并覆盖上下文") @on_command(checker=superuser_checker, cmd_start="/", cmd_sep=" ", targets="changemodel") -async def changemodel(args: ParseArgs = Args()): +async def changemodel(args: CmdArgs): global model_name model_name = args.vals[0] await send_text("已切换") @@ -179,7 +182,12 @@ async def poke(event: PokeNotifyEvent, adapter: Adapter): # 尚未实现私聊 await adapter.send_custom(str(e)+suggest_solution(str(e)),group_id=event.group_id) traceback.print_exc() return + +Plugin = PluginPlanner(version = VERSION, + flows = [changemodel,marsho,reset,poke,contexts,praises,nickname,add_assistantmsg,add_usermsg,load_context,save_context]) +""" class MarshoAI(Plugin): version = VERSION flows = [changemodel,marsho,reset,poke,contexts,praises,nickname,add_assistantmsg,add_usermsg,load_context,save_context] +""" \ No newline at end of file diff --git a/marshoai/checkers.py b/marshoai/checkers.py index e4474df..d696bed 100644 --- a/marshoai/checkers.py +++ b/marshoai/checkers.py @@ -1,7 +1,11 @@ from melobot.protocols.onebot.v11.adapter.event import Event, MessageEvent, PokeNotifyEvent -from melobot.protocols.onebot.v11.utils import MsgChecker, LevelRole, MsgCheckerFactory, StartMatcher, ParseArgs, Checker +from melobot.protocols.onebot.v11.utils import MsgChecker, LevelRole, MsgCheckerFactory from melobot.protocols.onebot.v11.adapter.segment import PokeRecvSegment +from melobot.utils.parse import CmdArgs +from melobot.utils.match import StartMatcher +from melobot.utils.check import Checker + from .config import Config from .extra_segment import TouchSegment config = Config() diff --git a/marshoai/util.py b/marshoai/util.py index cb73ec9..ad73d66 100644 --- a/marshoai/util.py +++ b/marshoai/util.py @@ -14,6 +14,12 @@ from .config import Config from .constants import PLUGIN_NAME config = Config() store = PluginStore(PLUGIN_NAME) + +# 时间参数相关 +if config.marshoai_enable_time_prompt: + _weekdays = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"] + _time_prompt = "现在的时间是{date_time}{weekday_name},{lunar_date}。" + async def get_image_b64(url): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' @@ -118,10 +124,15 @@ def get_prompt(): praises_prompt = build_praises() prompts += praises_prompt if config.marshoai_enable_time_prompt: - current_time = datetime.now().strftime('%Y.%m.%d %H:%M:%S') - current_lunar_date = DateTime.now().to_lunar().date_hanzify()[5:] #库更新之前使用切片 - time_prompt = f"现在的时间是{current_time},农历{current_lunar_date}。" - prompts += time_prompt + prompts += _time_prompt.format( + date_time=(current_time := DateTime.now()).strftime( + "%Y年%m月%d日 %H:%M:%S" + ), + weekday_name=_weekdays[current_time.weekday()], + lunar_date=current_time.chinesize.date_hanzify( + "农历{干支年}{生肖}年{月份}月{数序日}" + ), + ) marsho_prompt = config.marshoai_prompt spell = SystemMessage(content=marsho_prompt+prompts).as_dict() return spell