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.message import run_preprocessor, run_postprocessor, IgnoredException | ||||
|  | ||||
| _running_matcher: Dict[str, bool] = {} | ||||
| _running_matcher: Dict[str, int] = {} | ||||
|  | ||||
|  | ||||
| @run_preprocessor | ||||
| async def _(matcher: Matcher, bot: Bot, event: Event, state: T_State): | ||||
|     # TODO | ||||
|     pass | ||||
|     session_id = event.get_session_id() | ||||
|     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 | ||||
| async def _(matcher: Matcher, exception: Optional[Exception], bot: Bot, event: Event, state: T_State): | ||||
|     # TODO | ||||
|     pass | ||||
|     session_id = event.get_session_id() | ||||
|     if session_id in _running_matcher: | ||||
|         del _running_matcher[session_id] | ||||
|   | ||||
		Reference in New Issue
	
	Block a user