From d81747db96cb7e849a62bd3622356ce471161462 Mon Sep 17 00:00:00 2001 From: Kyomotoi <0w0@imki.moe> Date: Fri, 4 Nov 2022 08:34:28 +0800 Subject: =?UTF-8?q?=F0=9F=8E=A8=20=E6=9B=B4=E6=94=B9=20matcher=20=E9=83=A8?= =?UTF-8?q?=E5=88=86=20log=20=E7=AD=89=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ATRI/patch.py | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 ATRI/patch.py diff --git a/ATRI/patch.py b/ATRI/patch.py new file mode 100644 index 0000000..ae203de --- /dev/null +++ b/ATRI/patch.py @@ -0,0 +1,60 @@ +from typing import Optional +from contextlib import AsyncExitStack + +from nonebot.log import logger +from nonebot.adapters import Bot, Event +from nonebot.typing import T_State, T_DependencyCache +from nonebot.matcher import ( + Matcher, + current_bot, + current_event, + current_handler, + current_matcher, +) +from nonebot.exception import SkippedException, StopPropagation + + +async def simple_run( + self: Matcher, + bot: Bot, + event: Event, + state: T_State, + stack: Optional[AsyncExitStack] = None, + dependency_cache: Optional[T_DependencyCache] = None, +): + logger.debug( + f"{self} run with incoming args: " + f"bot={bot}, event={event!r}, state={state!r}" + ) + b_t = current_bot.set(bot) + e_t = current_event.set(event) + m_t = current_matcher.set(self) + try: + # Refresh preprocess state + self.state.update(state) + + while self.handlers: + handler = self.handlers.pop(0) + current_handler.set(handler) + logger.debug(f"Running handler {handler}") + try: + await handler( + matcher=self, + bot=bot, + event=event, + state=self.state, + stack=stack, + dependency_cache=dependency_cache, + ) + except SkippedException: + logger.debug(f"Handler {handler} skipped") + except StopPropagation: + self.block = True + finally: + logger.info(f"{self} running complete") + current_bot.reset(b_t) + current_event.reset(e_t) + current_matcher.reset(m_t) + + +Matcher.simple_run = simple_run -- cgit v1.2.3