Module graia.broadcast.entities.dispatcher
Expand source code
from abc import ABCMeta, abstractstaticmethod
from types import TracebackType
from typing import List, Optional, TYPE_CHECKING
if TYPE_CHECKING:
from graia.broadcast.interfaces.dispatcher import DispatcherInterface
class BaseDispatcher(metaclass=ABCMeta):
"""所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持."""
mixin: List["BaseDispatcher"]
"""声明该 Dispatcher 所包含的来自其他 Dispatcher 提供的参数解析支持,
若某参数该 Dispatcher 无法解析, 将跳转到该列表中并交由其中的 Dispatcher 进行解析,
该列表中的 Dispatcher 全部被调用过且都不返回一有效值时才会将解析权交由其他的 Dispatcher.
"""
@abstractstaticmethod
async def catch(interface: "DispatcherInterface"):
"""该方法可以是 `staticmethod`, `classmethod` 亦或是普通的方法/函数.
唯一的要求是 `Dispatcher.catch` 获取到的必须为一可调用异步 Callable.
Args:
interface (DispatcherInterface): `Dispatcher` 服务的主要对象, 可以从其中获取以下信息:
- 当前解析中的参数的信息;
- 当前执行的信息, 比如正在处理的事件, `Listener`/`ExecTarget` etc.;
"""
pass
def beforeDispatch(self, interface: "DispatcherInterface"):
"""生命周期钩子: 在解析参数前被调用
Args:
interface (DispatcherInterface): `Dispatcher` 服务的主要对象, 可以从其中获取以下信息:
- 当前解析中的参数的信息;
- 当前执行的信息, 比如正在处理的事件, `Listener`/`ExecTarget` etc.;
"""
pass
def afterDispatch(
self,
interface: "DispatcherInterface",
exception: Optional[Exception],
tb: Optional[TracebackType],
):
"""生命周期钩子: 在参数被解析完后被调用
Args:
interface (DispatcherInterface): `Dispatcher` 服务的主要对象, 可以从其中获取以下信息:
- 当前解析中的参数的信息;
- 当前执行的信息, 比如正在处理的事件, `Listener`/`ExecTarget` etc.;
exception (Optional[Exception]): 可能存在的异常对象, 若为 None 则表示无异常被抛出, 执行顺利完成.
tb (Optional[TracebackType]): 可能存在的异常堆栈对象, 若为 None 则表示无异常被抛出, 执行顺利完成.
"""
pass
def beforeExecution(self, interface: "DispatcherInterface"):
"""生命周期钩子: 在整个执行流程(包括参数解析)开始前被调用
Args:
interface (DispatcherInterface): `Dispatcher` 服务的主要对象, 可以从其中获取以下信息:
- 当前解析中的参数的信息;
- 当前执行的信息, 比如正在处理的事件, `Listener`/`ExecTarget` etc.;
"""
pass
def afterExecution(
self,
interface: "DispatcherInterface",
exception: Optional[Exception],
tb: Optional[TracebackType],
):
"""生命周期钩子: 在整个执行流程(包括参数解析)完成(包含因异常被抛出而退出)后被调用.
Args:
interface (DispatcherInterface): `Dispatcher` 服务的主要对象, 可以从其中获取以下信息:
- 当前解析中的参数的信息;
- 当前执行的信息, 比如正在处理的事件, `Listener`/`ExecTarget` etc.;
exception (Optional[Exception]): 可能存在的异常对象, 若为 None 则表示无异常被抛出, 执行顺利完成.
tb (Optional[TracebackType]): 可能存在的异常堆栈对象, 若为 None 则表示无异常被抛出, 执行顺利完成.
"""
pass
def beforeTargetExec(self, interface: "DispatcherInterface"):
"""生命周期钩子: 在参数解析完成后, 准备执行事件执行主体前被调用.
Args:
interface (DispatcherInterface): `Dispatcher` 服务的主要对象, 可以从其中获取以下信息:
- 当前解析中的参数的信息;
- 当前执行的信息, 比如正在处理的事件, `Listener`/`ExecTarget` etc.;
"""
pass
def afterTargetExec(
self,
interface: "DispatcherInterface",
exception: Optional[Exception],
tb: Optional[TracebackType],
):
"""生命周期钩子: 在事件执行主体被执行完成后被调用.
Args:
interface (DispatcherInterface): `Dispatcher` 服务的主要对象, 可以从其中获取以下信息:
- 当前解析中的参数的信息;
- 当前执行的信息, 比如正在处理的事件, `Listener`/`ExecTarget` etc.;
exception (Optional[Exception]): 可能存在的异常对象, 若为 None 则表示无异常被抛出, 执行顺利完成.
tb (Optional[TracebackType]): 可能存在的异常堆栈对象, 若为 None 则表示无异常被抛出, 执行顺利完成.
"""
pass
def onActive(self, interface: "DispatcherInterface"):
"""生命周期钩子: 在该 Dispatcher 可用于参数解析时被立即调用.
Args:
interface (DispatcherInterface): `Dispatcher` 服务的主要对象, 可以从其中获取以下信息:
- 当前解析中的参数的信息;
- 当前执行的信息, 比如正在处理的事件, `Listener`/`ExecTarget` etc.;
"""
pass
Classes
class BaseDispatcher
-
所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.
Expand source code
class BaseDispatcher(metaclass=ABCMeta): """所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.""" mixin: List["BaseDispatcher"] """声明该 Dispatcher 所包含的来自其他 Dispatcher 提供的参数解析支持, 若某参数该 Dispatcher 无法解析, 将跳转到该列表中并交由其中的 Dispatcher 进行解析, 该列表中的 Dispatcher 全部被调用过且都不返回一有效值时才会将解析权交由其他的 Dispatcher. """ @abstractstaticmethod async def catch(interface: "DispatcherInterface"): """该方法可以是 `staticmethod`, `classmethod` 亦或是普通的方法/函数. 唯一的要求是 `Dispatcher.catch` 获取到的必须为一可调用异步 Callable. Args: interface (DispatcherInterface): `Dispatcher` 服务的主要对象, 可以从其中获取以下信息: - 当前解析中的参数的信息; - 当前执行的信息, 比如正在处理的事件, `Listener`/`ExecTarget` etc.; """ pass def beforeDispatch(self, interface: "DispatcherInterface"): """生命周期钩子: 在解析参数前被调用 Args: interface (DispatcherInterface): `Dispatcher` 服务的主要对象, 可以从其中获取以下信息: - 当前解析中的参数的信息; - 当前执行的信息, 比如正在处理的事件, `Listener`/`ExecTarget` etc.; """ pass def afterDispatch( self, interface: "DispatcherInterface", exception: Optional[Exception], tb: Optional[TracebackType], ): """生命周期钩子: 在参数被解析完后被调用 Args: interface (DispatcherInterface): `Dispatcher` 服务的主要对象, 可以从其中获取以下信息: - 当前解析中的参数的信息; - 当前执行的信息, 比如正在处理的事件, `Listener`/`ExecTarget` etc.; exception (Optional[Exception]): 可能存在的异常对象, 若为 None 则表示无异常被抛出, 执行顺利完成. tb (Optional[TracebackType]): 可能存在的异常堆栈对象, 若为 None 则表示无异常被抛出, 执行顺利完成. """ pass def beforeExecution(self, interface: "DispatcherInterface"): """生命周期钩子: 在整个执行流程(包括参数解析)开始前被调用 Args: interface (DispatcherInterface): `Dispatcher` 服务的主要对象, 可以从其中获取以下信息: - 当前解析中的参数的信息; - 当前执行的信息, 比如正在处理的事件, `Listener`/`ExecTarget` etc.; """ pass def afterExecution( self, interface: "DispatcherInterface", exception: Optional[Exception], tb: Optional[TracebackType], ): """生命周期钩子: 在整个执行流程(包括参数解析)完成(包含因异常被抛出而退出)后被调用. Args: interface (DispatcherInterface): `Dispatcher` 服务的主要对象, 可以从其中获取以下信息: - 当前解析中的参数的信息; - 当前执行的信息, 比如正在处理的事件, `Listener`/`ExecTarget` etc.; exception (Optional[Exception]): 可能存在的异常对象, 若为 None 则表示无异常被抛出, 执行顺利完成. tb (Optional[TracebackType]): 可能存在的异常堆栈对象, 若为 None 则表示无异常被抛出, 执行顺利完成. """ pass def beforeTargetExec(self, interface: "DispatcherInterface"): """生命周期钩子: 在参数解析完成后, 准备执行事件执行主体前被调用. Args: interface (DispatcherInterface): `Dispatcher` 服务的主要对象, 可以从其中获取以下信息: - 当前解析中的参数的信息; - 当前执行的信息, 比如正在处理的事件, `Listener`/`ExecTarget` etc.; """ pass def afterTargetExec( self, interface: "DispatcherInterface", exception: Optional[Exception], tb: Optional[TracebackType], ): """生命周期钩子: 在事件执行主体被执行完成后被调用. Args: interface (DispatcherInterface): `Dispatcher` 服务的主要对象, 可以从其中获取以下信息: - 当前解析中的参数的信息; - 当前执行的信息, 比如正在处理的事件, `Listener`/`ExecTarget` etc.; exception (Optional[Exception]): 可能存在的异常对象, 若为 None 则表示无异常被抛出, 执行顺利完成. tb (Optional[TracebackType]): 可能存在的异常堆栈对象, 若为 None 则表示无异常被抛出, 执行顺利完成. """ pass def onActive(self, interface: "DispatcherInterface"): """生命周期钩子: 在该 Dispatcher 可用于参数解析时被立即调用. Args: interface (DispatcherInterface): `Dispatcher` 服务的主要对象, 可以从其中获取以下信息: - 当前解析中的参数的信息; - 当前执行的信息, 比如正在处理的事件, `Listener`/`ExecTarget` etc.; """ pass
Subclasses
- ApplicationDispatcher
- EmptyDispatcher
- MessageChainCatcher
- ApplicationLaunched.Dispatcher
- ApplicationLaunchedBlocking.Dispatcher
- ApplicationShutdowned.Dispatcher
- Forward.Dispatcher
- FriendMessage.Dispatcher
- GroupMessage.Dispatcher
- SourceElementDispatcher
- TempMessage.Dispatcher
- BotJoinGroupEvent.Dispatcher
- BotLeaveEventActive.Dispatcher
- BotLeaveEventKick.Dispatcher
- BotMuteEvent.Dispatcher
- BotUnmuteEvent.Dispatcher
- GroupAllowAnonymousChatEvent.Dispatcher
- GroupAllowConfessTalkEvent.Dispatcher
- GroupAllowMemberInviteEvent.Dispatcher
- GroupEntranceAnnouncementChangeEvent.Dispatcher
- GroupMuteAllEvent.Dispatcher
- GroupNameChangeEvent.Dispatcher
- GroupRecallEvent.Dispatcher
- MemberCardChangeEvent.Dispatcher
- MemberJoinEvent.Dispatcher
- MemberLeaveEventKick.Dispatcher
- MemberLeaveEventQuit.Dispatcher
- MemberMuteEvent.Dispatcher
- MemberPermissionChangeEvent.Dispatcher
- MemberSpecialTitleChangeEvent.Dispatcher
- MemberUnmuteEvent.Dispatcher
- Literature
- AppMiddlewareAsDispatcher
- ExceptionThrowed.Dispatcher
- AsyncDispatcherContextManager
- DispatcherContextManager
- DecoratorInterface
- EmptyEvent.Dispatcher
Class variables
var mixin : List[BaseDispatcher]
-
声明该 Dispatcher 所包含的来自其他 Dispatcher 提供的参数解析支持, 若某参数该 Dispatcher 无法解析, 将跳转到该列表中并交由其中的 Dispatcher 进行解析, 该列表中的 Dispatcher 全部被调用过且都不返回一有效值时才会将解析权交由其他的 Dispatcher.
Static methods
async def catch(interface: DispatcherInterface)
-
该方法可以是
staticmethod
,classmethod
亦或是普通的方法/函数. 唯一的要求是Dispatcher.catch
获取到的必须为一可调用异步 Callable.Args
interface
:DispatcherInterface
Dispatcher
服务的主要对象, 可以从其中获取以下信息:
- 当前解析中的参数的信息;
- 当前执行的信息, 比如正在处理的事件,
Listener
/ExecTarget
etc.;
Expand source code
@abstractstaticmethod async def catch(interface: "DispatcherInterface"): """该方法可以是 `staticmethod`, `classmethod` 亦或是普通的方法/函数. 唯一的要求是 `Dispatcher.catch` 获取到的必须为一可调用异步 Callable. Args: interface (DispatcherInterface): `Dispatcher` 服务的主要对象, 可以从其中获取以下信息: - 当前解析中的参数的信息; - 当前执行的信息, 比如正在处理的事件, `Listener`/`ExecTarget` etc.; """ pass
Methods
def afterDispatch(self, interface: DispatcherInterface, exception: Union[Exception, NoneType], tb: Union[traceback, NoneType])
-
生命周期钩子: 在参数被解析完后被调用
Args
interface
:DispatcherInterface
Dispatcher
服务的主要对象, 可以从其中获取以下信息:
- 当前解析中的参数的信息;
-
- 当前执行的信息, 比如正在处理的事件,
Listener
/ExecTarget
etc.; exception
:Optional[Exception]
- 可能存在的异常对象, 若为 None 则表示无异常被抛出, 执行顺利完成.
- 当前执行的信息, 比如正在处理的事件,
tb
:Optional[TracebackType]
- 可能存在的异常堆栈对象, 若为 None 则表示无异常被抛出, 执行顺利完成.
Expand source code
def afterDispatch( self, interface: "DispatcherInterface", exception: Optional[Exception], tb: Optional[TracebackType], ): """生命周期钩子: 在参数被解析完后被调用 Args: interface (DispatcherInterface): `Dispatcher` 服务的主要对象, 可以从其中获取以下信息: - 当前解析中的参数的信息; - 当前执行的信息, 比如正在处理的事件, `Listener`/`ExecTarget` etc.; exception (Optional[Exception]): 可能存在的异常对象, 若为 None 则表示无异常被抛出, 执行顺利完成. tb (Optional[TracebackType]): 可能存在的异常堆栈对象, 若为 None 则表示无异常被抛出, 执行顺利完成. """ pass
def afterExecution(self, interface: DispatcherInterface, exception: Union[Exception, NoneType], tb: Union[traceback, NoneType])
-
生命周期钩子: 在整个执行流程(包括参数解析)完成(包含因异常被抛出而退出)后被调用.
Args
interface
:DispatcherInterface
Dispatcher
服务的主要对象, 可以从其中获取以下信息:
- 当前解析中的参数的信息;
-
- 当前执行的信息, 比如正在处理的事件,
Listener
/ExecTarget
etc.; exception
:Optional[Exception]
- 可能存在的异常对象, 若为 None 则表示无异常被抛出, 执行顺利完成.
- 当前执行的信息, 比如正在处理的事件,
tb
:Optional[TracebackType]
- 可能存在的异常堆栈对象, 若为 None 则表示无异常被抛出, 执行顺利完成.
Expand source code
def afterExecution( self, interface: "DispatcherInterface", exception: Optional[Exception], tb: Optional[TracebackType], ): """生命周期钩子: 在整个执行流程(包括参数解析)完成(包含因异常被抛出而退出)后被调用. Args: interface (DispatcherInterface): `Dispatcher` 服务的主要对象, 可以从其中获取以下信息: - 当前解析中的参数的信息; - 当前执行的信息, 比如正在处理的事件, `Listener`/`ExecTarget` etc.; exception (Optional[Exception]): 可能存在的异常对象, 若为 None 则表示无异常被抛出, 执行顺利完成. tb (Optional[TracebackType]): 可能存在的异常堆栈对象, 若为 None 则表示无异常被抛出, 执行顺利完成. """ pass
def afterTargetExec(self, interface: DispatcherInterface, exception: Union[Exception, NoneType], tb: Union[traceback, NoneType])
-
生命周期钩子: 在事件执行主体被执行完成后被调用.
Args
interface
:DispatcherInterface
Dispatcher
服务的主要对象, 可以从其中获取以下信息:
- 当前解析中的参数的信息;
-
- 当前执行的信息, 比如正在处理的事件,
Listener
/ExecTarget
etc.; exception
:Optional[Exception]
- 可能存在的异常对象, 若为 None 则表示无异常被抛出, 执行顺利完成.
- 当前执行的信息, 比如正在处理的事件,
tb
:Optional[TracebackType]
- 可能存在的异常堆栈对象, 若为 None 则表示无异常被抛出, 执行顺利完成.
Expand source code
def afterTargetExec( self, interface: "DispatcherInterface", exception: Optional[Exception], tb: Optional[TracebackType], ): """生命周期钩子: 在事件执行主体被执行完成后被调用. Args: interface (DispatcherInterface): `Dispatcher` 服务的主要对象, 可以从其中获取以下信息: - 当前解析中的参数的信息; - 当前执行的信息, 比如正在处理的事件, `Listener`/`ExecTarget` etc.; exception (Optional[Exception]): 可能存在的异常对象, 若为 None 则表示无异常被抛出, 执行顺利完成. tb (Optional[TracebackType]): 可能存在的异常堆栈对象, 若为 None 则表示无异常被抛出, 执行顺利完成. """ pass
def beforeDispatch(self, interface: DispatcherInterface)
-
生命周期钩子: 在解析参数前被调用
Args
interface
:DispatcherInterface
Dispatcher
服务的主要对象, 可以从其中获取以下信息:
- 当前解析中的参数的信息;
- 当前执行的信息, 比如正在处理的事件,
Listener
/ExecTarget
etc.;
Expand source code
def beforeDispatch(self, interface: "DispatcherInterface"): """生命周期钩子: 在解析参数前被调用 Args: interface (DispatcherInterface): `Dispatcher` 服务的主要对象, 可以从其中获取以下信息: - 当前解析中的参数的信息; - 当前执行的信息, 比如正在处理的事件, `Listener`/`ExecTarget` etc.; """ pass
def beforeExecution(self, interface: DispatcherInterface)
-
生命周期钩子: 在整个执行流程(包括参数解析)开始前被调用
Args
interface
:DispatcherInterface
Dispatcher
服务的主要对象, 可以从其中获取以下信息:
- 当前解析中的参数的信息;
- 当前执行的信息, 比如正在处理的事件,
Listener
/ExecTarget
etc.;
Expand source code
def beforeExecution(self, interface: "DispatcherInterface"): """生命周期钩子: 在整个执行流程(包括参数解析)开始前被调用 Args: interface (DispatcherInterface): `Dispatcher` 服务的主要对象, 可以从其中获取以下信息: - 当前解析中的参数的信息; - 当前执行的信息, 比如正在处理的事件, `Listener`/`ExecTarget` etc.; """ pass
def beforeTargetExec(self, interface: DispatcherInterface)
-
生命周期钩子: 在参数解析完成后, 准备执行事件执行主体前被调用.
Args
interface
:DispatcherInterface
Dispatcher
服务的主要对象, 可以从其中获取以下信息:
- 当前解析中的参数的信息;
- 当前执行的信息, 比如正在处理的事件,
Listener
/ExecTarget
etc.;
Expand source code
def beforeTargetExec(self, interface: "DispatcherInterface"): """生命周期钩子: 在参数解析完成后, 准备执行事件执行主体前被调用. Args: interface (DispatcherInterface): `Dispatcher` 服务的主要对象, 可以从其中获取以下信息: - 当前解析中的参数的信息; - 当前执行的信息, 比如正在处理的事件, `Listener`/`ExecTarget` etc.; """ pass
def onActive(self, interface: DispatcherInterface)
-
生命周期钩子: 在该 Dispatcher 可用于参数解析时被立即调用.
Args
interface
:DispatcherInterface
Dispatcher
服务的主要对象, 可以从其中获取以下信息:
- 当前解析中的参数的信息;
- 当前执行的信息, 比如正在处理的事件,
Listener
/ExecTarget
etc.;
Expand source code
def onActive(self, interface: "DispatcherInterface"): """生命周期钩子: 在该 Dispatcher 可用于参数解析时被立即调用. Args: interface (DispatcherInterface): `Dispatcher` 服务的主要对象, 可以从其中获取以下信息: - 当前解析中的参数的信息; - 当前执行的信息, 比如正在处理的事件, `Listener`/`ExecTarget` etc.; """ pass