Feature: on_x 支持 expire_time 参数 (#1106)

Co-authored-by: Dobiichi-Origami <454470535@qq.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: yanyongyu <42488585+yanyongyu@users.noreply.github.com>
This commit is contained in:
Dobiichi-Origami
2022-07-20 10:21:31 +08:00
committed by GitHub
parent 19f4c01ad3
commit c03b0c73cb
7 changed files with 187 additions and 88 deletions

View File

@ -1,8 +1,8 @@
from types import ModuleType
from datetime import datetime
from contextvars import ContextVar
from collections import defaultdict
from contextlib import AsyncExitStack
from datetime import datetime, timedelta
from typing import (
TYPE_CHECKING,
Any,
@ -168,7 +168,7 @@ class Matcher(metaclass=MatcherMeta):
*,
plugin: Optional["Plugin"] = None,
module: Optional[ModuleType] = None,
expire_time: Optional[datetime] = None,
expire_time: Optional[Union[datetime, timedelta]] = None,
default_state: Optional[T_State] = None,
default_type_updater: Optional[Union[T_TypeUpdater, Dependent[str]]] = None,
default_permission_updater: Optional[
@ -216,7 +216,11 @@ class Matcher(metaclass=MatcherMeta):
if handlers
else [],
"temp": temp,
"expire_time": expire_time,
"expire_time": (
expire_time
if isinstance(expire_time, datetime)
else expire_time and datetime.now() + expire_time
),
"priority": priority,
"block": block,
"_default_state": default_state or {},
@ -682,7 +686,7 @@ class Matcher(metaclass=MatcherMeta):
block=True,
plugin=self.plugin,
module=self.module,
expire_time=datetime.now() + bot.config.session_expire_timeout,
expire_time=bot.config.session_expire_timeout,
default_state=self.state,
default_type_updater=self.__class__._default_type_updater,
default_permission_updater=self.__class__._default_permission_updater,
@ -701,7 +705,7 @@ class Matcher(metaclass=MatcherMeta):
block=True,
plugin=self.plugin,
module=self.module,
expire_time=datetime.now() + bot.config.session_expire_timeout,
expire_time=bot.config.session_expire_timeout,
default_state=self.state,
default_type_updater=self.__class__._default_type_updater,
default_permission_updater=self.__class__._default_permission_updater,