diff --git a/main.py b/main.py index 5cdfbf0..803688b 100644 --- a/main.py +++ b/main.py @@ -4,7 +4,7 @@ from astrbot.api.star import Context, Star, register from astrbot.api import logger from astrbot.api.provider import (ProviderRequest,LLMResponse ) from astrbot.core.agent.message import TextPart -from .service.timer import timer +from .service.timer import TimerService @register("wait_msg", "Wbucket", "一个简单的 llm等待回复插件", "0.0.1") @@ -12,6 +12,8 @@ class MyPlugin(Star): def __init__(self, context: Context): super().__init__(context) + self.Timer = TimerService(self) + async def initialize(self): """可选择实现异步的插件初始化方法,当实例化该插件类之后会自动调用该方法。""" @@ -41,9 +43,9 @@ class MyPlugin(Star): ) )) - @filter.on_llm_response() - async def pattern_extract(self,event:AstrMessageEvent,req:LLMResponse): - await timer(event,req) + @filter.on_decorating_result() + async def pattern_extract(self,event:AstrMessageEvent): + await self.Timer.timer(event) async def terminate(self): """可选择实现异步的插件销毁方法,当插件被卸载/停用时会调用。""" diff --git a/service/timer.py b/service/timer.py index ae2d768..a03c478 100644 --- a/service/timer.py +++ b/service/timer.py @@ -1,15 +1,41 @@ from astrbot.api.event import AstrMessageEvent from astrbot.api.provider import LLMResponse from astrbot.api import logger -from astrbot.core.message.message_event_result import MessageChain +from astrbot.core.message.message_event_result import MessageChain,Plain from ..tool.pattern import Pattern +from astrbot.api.star import Star +import asyncio -# 解析模板并进行定时 -async def timer(event:AstrMessageEvent,req:LLMResponse): - if not req.role == 'assistant': - return +class TimerService: + def __init__(self,star:Star) -> None: + self.star = star + pass - logger.info("[wait_msg]:开始解析模板") - llm_res = req.completion_text - dump = Pattern(llm_res) - await event.send(MessageChain().message("awa定时时间消息:{0}过滤后:{1}".format(dump.count,dump.string))) \ No newline at end of file + # 解析模板并进行定时 + async def parse(self,event:AstrMessageEvent): + res = event.get_result() + if not res: + return + + Second:int|None = None + logger.info("[wait_msg]:开始解析模板") + + chain = res.chain + for i in chain : + if not isinstance(i,Plain): + continue + dump = Pattern(i.text) + i.text = dump.string + Second = dump.count + if not Second is None: + self.timer(event,Second) + + yield + + # 定时: + def timer(self,event:AstrMessageEvent,Sec:int): + asyncio.create_task(self.timer_task()) + + async def timer_task(self): + await asyncio.sleep(1) + logger.warning("awa现在过去一秒了哦") \ No newline at end of file