fix matcher decos

This commit is contained in:
yanyongyu 2020-08-22 15:22:46 +08:00
parent 5871330492
commit 87a848d8c3

View File

@ -109,14 +109,15 @@ class Matcher:
def receive(cls) -> Callable[[Handler], Handler]:
"""接收一条新消息并处理"""
def _decorator(func: Handler) -> Handler:
async def _handler(bot: Bot, event: Event, state: dict) -> NoReturn:
raise PausedException
if cls.handlers:
# 已有前置handlers则接受一条新的消息否则视为接收初始消息
cls.handlers.append(_handler)
def _decorator(func: Handler) -> Handler:
if cls.handlers[-1] is not func:
cls.handlers.append(func)
return func
@ -131,8 +132,6 @@ class Matcher:
args_parser: Optional[ArgsParser] = None
) -> Callable[[Handler], Handler]:
def _decorator(func: Handler) -> Handler:
async def _key_getter(bot: Bot, event: Event, state: dict):
if key not in state:
state["_current_key"] = key
@ -152,6 +151,9 @@ class Matcher:
# 已有前置handlers则接受一条新的消息否则视为接收初始消息
cls.handlers.append(_key_getter)
cls.handlers.append(_key_parser)
def _decorator(func: Handler) -> Handler:
if cls.handlers[-1] is not func:
cls.handlers.append(func)
return func