From 33dc032d8290bd4fc9b28e87a15626d51a4d4965 Mon Sep 17 00:00:00 2001 From: Wbucket <2595141012@stu.hqu.edu.cn> Date: Fri, 6 Nov 2026 21:06:51 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=B8=8D=E6=AD=A3=E7=A1=AE=E7=9A=84?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 10 ++++++---- service/timer.py | 44 +++++++++++++++++++++++++++++++++++--------- 2 files changed, 41 insertions(+), 13 deletions(-) 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