🐛 fix missing update when reject or pause (fix #394)

This commit is contained in:
yanyongyu 2021-05-30 10:55:34 +08:00
parent 57cf8e9bd8
commit 45e1126f37

View File

@ -166,20 +166,25 @@ class Matcher(metaclass=MatcherMeta):
return repr(self) return repr(self)
@classmethod @classmethod
def new(cls, def new(
type_: str = "", cls,
rule: Optional[Rule] = None, type_: str = "",
permission: Optional[Permission] = None, rule: Optional[Rule] = None,
handlers: Optional[Union[List[T_Handler], List[Handler], permission: Optional[Permission] = None,
List[Union[T_Handler, Handler]]]] = None, handlers: Optional[Union[List[T_Handler], List[Handler],
temp: bool = False, List[Union[T_Handler, Handler]]]] = None,
priority: int = 1, temp: bool = False,
block: bool = False, priority: int = 1,
*, block: bool = False,
module: Optional[ModuleType] = None, *,
default_state: Optional[T_State] = None, module: Optional[ModuleType] = None,
default_state_factory: Optional[T_StateFactory] = None, expire_time: Optional[datetime] = None,
expire_time: Optional[datetime] = None) -> Type["Matcher"]: default_state: Optional[T_State] = None,
default_state_factory: Optional[T_StateFactory] = None,
default_parser: Optional[T_ArgsParser] = None,
default_type_updater: Optional[T_TypeUpdater] = None,
default_permission_updater: Optional[T_PermissionUpdater] = None
) -> Type["Matcher"]:
""" """
:说明: :说明:
@ -237,7 +242,13 @@ class Matcher(metaclass=MatcherMeta):
default_state or {}, default_state or {},
"_default_state_factory": "_default_state_factory":
staticmethod(default_state_factory) staticmethod(default_state_factory)
if default_state_factory else None if default_state_factory else None,
"_default_parser":
default_parser,
"_default_type_updater":
default_type_updater,
"_default_permission_updater":
default_permission_updater
}) })
matchers[priority].append(NewMatcher) matchers[priority].append(NewMatcher)
@ -586,17 +597,21 @@ class Matcher(metaclass=MatcherMeta):
else: else:
permission = USER(event.get_session_id(), perm=self.permission) permission = USER(event.get_session_id(), perm=self.permission)
Matcher.new(type_, Matcher.new(
Rule(), type_,
permission, Rule(),
self.handlers, permission,
temp=True, self.handlers,
priority=0, temp=True,
block=True, priority=0,
module=self.module, block=True,
default_state=self.state, module=self.module,
expire_time=datetime.now() + expire_time=datetime.now() + bot.config.session_expire_timeout,
bot.config.session_expire_timeout) default_state=self.state,
default_parser=self.__class__._default_parser,
default_type_updater=self.__class__._default_type_updater,
default_permission_updater=self.__class__.
_default_permission_updater)
except PausedException: except PausedException:
updater = self.__class__._default_type_updater updater = self.__class__._default_type_updater
if updater: if updater:
@ -610,17 +625,21 @@ class Matcher(metaclass=MatcherMeta):
else: else:
permission = USER(event.get_session_id(), perm=self.permission) permission = USER(event.get_session_id(), perm=self.permission)
Matcher.new(type_, Matcher.new(
Rule(), type_,
permission, Rule(),
self.handlers, permission,
temp=True, self.handlers,
priority=0, temp=True,
block=True, priority=0,
module=self.module, block=True,
default_state=self.state, module=self.module,
expire_time=datetime.now() + expire_time=datetime.now() + bot.config.session_expire_timeout,
bot.config.session_expire_timeout) default_state=self.state,
default_parser=self.__class__._default_parser,
default_type_updater=self.__class__._default_type_updater,
default_permission_updater=self.__class__.
_default_permission_updater)
except FinishedException: except FinishedException:
pass pass
except StopPropagation: except StopPropagation: