⬆️ 仅适配melobot3.1.2 (#1)

Co-authored-by: Envision <9063072+elapsingdreams@user.noreply.gitee.com>
This commit is contained in:
ElapsingDreams 2025-02-28 22:58:54 +08:00 committed by GitHub
parent da17d5b69d
commit 94ab4984ed
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 37 additions and 14 deletions

View File

@ -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("已切换")
@ -180,6 +183,11 @@ async def poke(event: PokeNotifyEvent, adapter: Adapter): # 尚未实现私聊
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]
"""

View File

@ -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()

View File

@ -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