diff options
author | Kyomotoi <[email protected]> | 2022-11-04 08:34:28 +0800 |
---|---|---|
committer | Kyomotoi <[email protected]> | 2022-11-04 08:34:28 +0800 |
commit | d81747db96cb7e849a62bd3622356ce471161462 (patch) | |
tree | d9d319c5359b2e3aff9888d1116df4028cf31541 /ATRI/patch.py | |
parent | cca0e9fe6d3a04b258719e92adf7566f47a88bb5 (diff) | |
download | ATRI-d81747db96cb7e849a62bd3622356ce471161462.tar.gz ATRI-d81747db96cb7e849a62bd3622356ce471161462.tar.bz2 ATRI-d81747db96cb7e849a62bd3622356ce471161462.zip |
🎨 更改 matcher 部分 log ç‰çº§
Diffstat (limited to 'ATRI/patch.py')
-rw-r--r-- | ATRI/patch.py | 60 |
1 files changed, 60 insertions, 0 deletions
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 |