mirror of
				https://github.com/nonebot/nonebot2.git
				synced 2025-10-30 22:46:40 +00:00 
			
		
		
		
	⚗️ add processor to ensure single matcher
This commit is contained in:
		| @@ -5,16 +5,22 @@ from nonebot.matcher import Matcher | |||||||
| from nonebot.adapters import Bot, Event | from nonebot.adapters import Bot, Event | ||||||
| from nonebot.message import run_preprocessor, run_postprocessor, IgnoredException | from nonebot.message import run_preprocessor, run_postprocessor, IgnoredException | ||||||
|  |  | ||||||
| _running_matcher: Dict[str, bool] = {} | _running_matcher: Dict[str, int] = {} | ||||||
|  |  | ||||||
|  |  | ||||||
| @run_preprocessor | @run_preprocessor | ||||||
| async def _(matcher: Matcher, bot: Bot, event: Event, state: T_State): | async def _(matcher: Matcher, bot: Bot, event: Event, state: T_State): | ||||||
|     # TODO |     session_id = event.get_session_id() | ||||||
|     pass |     event_id = id(event) | ||||||
|  |  | ||||||
|  |     if _running_matcher.get(session_id, None) != event_id: | ||||||
|  |         raise IgnoredException("Annother matcher running") | ||||||
|  |  | ||||||
|  |     _running_matcher[session_id] = event_id | ||||||
|  |  | ||||||
|  |  | ||||||
| @run_postprocessor | @run_postprocessor | ||||||
| async def _(matcher: Matcher, exception: Optional[Exception], bot: Bot, event: Event, state: T_State): | async def _(matcher: Matcher, exception: Optional[Exception], bot: Bot, event: Event, state: T_State): | ||||||
|     # TODO |     session_id = event.get_session_id() | ||||||
|     pass |     if session_id in _running_matcher: | ||||||
|  |         del _running_matcher[session_id] | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user