melobot.handle¶
处理流¶
- class melobot.handle.Flow[源代码]¶
基类:
object
处理流
- 变量:
name (str) -- 处理流的标识
- __init__(name: str, *edge_maps: ~typing.Iterable[~typing.Iterable[~melobot.handle.base.FlowNode] | ~melobot.handle.base.FlowNode], priority: int = 0, guard: ~melobot.typ.base.SyncOrAsyncCallable[(<class 'melobot.adapter.model.Event'>,), bool | None] | None = None) None [源代码]¶
初始化处理流
- set_guard(guard: ~melobot.typ.base.SyncOrAsyncCallable[(<class 'melobot.adapter.model.Event'>,), bool | None]) None [源代码]¶
设置或重设守卫函数
- 参数:
guard (SyncOrAsyncCallable[(<class 'melobot.adapter.model.Event'>,), bool | None]) -- 守卫函数
- 返回类型:
None
- link(flow: Flow, priority: int | None = None) Flow [源代码]¶
连接另一处理流返回新处理流,并设置新优先级
新处理流守卫函数为空,使用
set_guard()
自行添加
处理结点¶
- melobot.handle.node(func: SyncOrAsyncCallable[..., bool | None]) FlowNode [源代码]¶
处理结点装饰器,将当前异步可调用对象装饰为一个处理结点
- 参数:
func (SyncOrAsyncCallable[..., bool | None])
- 返回类型:
- melobot.handle.no_deps_node(func: SyncOrAsyncCallable[..., bool | None]) FlowNode [源代码]¶
与
node()
类似,但是不自动为结点标记依赖注入。需要后续使用
inject_deps()
手动标记依赖注入, 这适用于某些对处理结点进行再装饰的情况- 参数:
func (SyncOrAsyncCallable[..., bool | None])
- 返回类型:
流装饰器¶
流装饰相关的组件,可以将一个普通函数装饰为一个处理流。
这些组件,在 melobot 的教程中,早期我们称它们为“事件绑定方法”或“事件绑定函数”。
- class melobot.handle.FlowDecorator[源代码]¶
基类:
object
- __init__(checker: ~melobot.utils.check.base.Checker | None | ~melobot.typ.base.SyncOrAsyncCallable[(<class 'melobot.adapter.model.Event'>,), bool] = None, matcher: ~melobot.utils.match.base.Matcher | None = None, parser: ~melobot.utils.parse.base.Parser | None = None, priority: int = 0, block: bool = False, temp: bool = False, decos: ~typing.Sequence[~typing.Callable[[~typing.Callable], ~typing.Callable]] | None = None, rule: ~melobot.session.option.Rule[~melobot.adapter.model.Event] | None = None) None [源代码]¶
处理流装饰器
- 参数:
checker (Checker | None | SyncOrAsyncCallable[(<class 'melobot.adapter.model.Event'>,), bool]) -- 检查器
matcher (Matcher | None) -- 匹配器(指定匹配器,需要先验证已经是文本事件)
parser (Parser | None) -- 解析器(指定解析器,需要先验证已经是文本事件)
priority (int) -- 优先级
block (bool) -- 是否阻断向低优先级传播
temp (bool) -- 是否临时使用(处理一次事件后停用)
decos (Sequence[Callable[[Callable], Callable]] | None) -- 装饰器组
- 返回类型:
None
- __call__(func: SyncOrAsyncCallable[..., bool | None]) Flow [源代码]¶
Call self as a function.
- 参数:
func (SyncOrAsyncCallable[..., bool | None])
- 返回类型:
- melobot.handle.on_event(checker: ~melobot.utils.check.base.Checker | None | ~melobot.typ.base.SyncOrAsyncCallable[(<class 'melobot.adapter.model.Event'>,), bool] = None, priority: int = 0, block: bool = False, temp: bool = False, decos: ~typing.Sequence[~typing.Callable[[~typing.Callable], ~typing.Callable]] | None = None, rule: ~melobot.session.option.Rule[~melobot.adapter.model.Event] | None = None) FlowDecorator [源代码]¶
绑定任意事件的处理流装饰方法
在前期的教程中,处理流装饰方法也称为绑定方法
- 参数:
- 返回:
处理流装饰器
- 返回类型:
- melobot.handle.on_text(checker: ~melobot.utils.check.base.Checker | None | ~melobot.typ.base.SyncOrAsyncCallable[(<class 'melobot.adapter.model.TextEvent'>,), bool] = None, matcher: ~melobot.utils.match.base.Matcher | None = None, parser: ~melobot.utils.parse.base.Parser | None = None, priority: int = 0, block: bool = False, temp: bool = False, decos: ~typing.Sequence[~typing.Callable[[~typing.Callable], ~typing.Callable]] | None = None, legacy_session: bool = False) FlowDecorator [源代码]¶
绑定文本事件的处理流装饰方法
在前期的教程中,处理流装饰方法也称为绑定方法
- 参数:
checker (Checker | None | SyncOrAsyncCallable[(<class 'melobot.adapter.model.TextEvent'>,), bool]) -- 检查器
matcher (Matcher | None) -- 匹配器
parser (Parser | None) -- 解析器
priority (int) -- 优先级
block (bool) -- 是否阻断向低优先级传播
temp (bool) -- 是否临时使用(处理一次事件后停用)
decos (Sequence[Callable[[Callable], Callable]] | None) -- 装饰器组
legacy_session (bool) -- 是否自动启用传统会话
- 返回:
处理流装饰器
- 返回类型:
- melobot.handle.on_start_match(target: str | ~typing.Sequence[str], logic_mode: ~melobot.typ._enum.LogicMode = LogicMode.OR, checker: ~melobot.utils.check.base.Checker | None | ~melobot.typ.base.SyncOrAsyncCallable[(<class 'melobot.adapter.model.TextEvent'>,), bool] = None, parser: ~melobot.utils.parse.base.Parser | None = None, priority: int = 0, block: bool = False, temp: bool = False, decos: ~typing.Sequence[~typing.Callable[[~typing.Callable], ~typing.Callable]] | None = None, legacy_session: bool = False) FlowDecorator [源代码]¶
绑定文本事件的“字符串起始匹配”处理流装饰方法
在前期的教程中,处理流装饰方法也称为绑定方法
- 参数:
logic_mode (LogicMode) -- 匹配的逻辑模式
checker (Checker | None | SyncOrAsyncCallable[(<class 'melobot.adapter.model.TextEvent'>,), bool]) -- 检查器
parser (Parser | None) -- 解析器
priority (int) -- 优先级
block (bool) -- 是否阻断向低优先级传播
temp (bool) -- 是否临时使用(处理一次事件后停用)
decos (Sequence[Callable[[Callable], Callable]] | None) -- 装饰器组
legacy_session (bool) -- 是否自动启用传统会话
- 返回:
处理流装饰器
- 返回类型:
- melobot.handle.on_contain_match(target: str | ~typing.Sequence[str], logic_mode: ~melobot.typ._enum.LogicMode = LogicMode.OR, checker: ~melobot.utils.check.base.Checker | None | ~melobot.typ.base.SyncOrAsyncCallable[(<class 'melobot.adapter.model.TextEvent'>,), bool] = None, parser: ~melobot.utils.parse.base.Parser | None = None, priority: int = 0, block: bool = False, temp: bool = False, decos: ~typing.Sequence[~typing.Callable[[~typing.Callable], ~typing.Callable]] | None = None, legacy_session: bool = False) FlowDecorator [源代码]¶
绑定文本事件的“字符串包含匹配”处理流装饰方法
在前期的教程中,处理流装饰方法也称为绑定方法
- 参数:
logic_mode (LogicMode) -- 匹配的逻辑模式
checker (Checker | None | SyncOrAsyncCallable[(<class 'melobot.adapter.model.TextEvent'>,), bool]) -- 检查器
parser (Parser | None) -- 解析器
priority (int) -- 优先级
block (bool) -- 是否阻断向低优先级传播
temp (bool) -- 是否临时使用(处理一次事件后停用)
decos (Sequence[Callable[[Callable], Callable]] | None) -- 装饰器组
legacy_session (bool) -- 是否自动启用传统会话
- 返回:
处理流装饰器
- 返回类型:
- melobot.handle.on_end_match(target: str | ~typing.Sequence[str], logic_mode: ~melobot.typ._enum.LogicMode = LogicMode.OR, checker: ~melobot.utils.check.base.Checker | None | ~melobot.typ.base.SyncOrAsyncCallable[(<class 'melobot.adapter.model.TextEvent'>,), bool] = None, parser: ~melobot.utils.parse.base.Parser | None = None, priority: int = 0, block: bool = False, temp: bool = False, decos: ~typing.Sequence[~typing.Callable[[~typing.Callable], ~typing.Callable]] | None = None, legacy_session: bool = False) FlowDecorator [源代码]¶
绑定文本事件的“字符串末尾匹配”处理流装饰方法
在前期的教程中,处理流装饰方法也称为绑定方法
- 参数:
logic_mode (LogicMode) -- 匹配的逻辑模式
checker (Checker | None | SyncOrAsyncCallable[(<class 'melobot.adapter.model.TextEvent'>,), bool]) -- 检查器
parser (Parser | None) -- 解析器
priority (int) -- 优先级
block (bool) -- 是否阻断向低优先级传播
temp (bool) -- 是否临时使用(处理一次事件后停用)
decos (Sequence[Callable[[Callable], Callable]] | None) -- 装饰器组
legacy_session (bool) -- 是否自动启用传统会话
- 返回:
处理流装饰器
- 返回类型:
- melobot.handle.on_full_match(target: str | ~typing.Sequence[str], logic_mode: ~melobot.typ._enum.LogicMode = LogicMode.OR, checker: ~melobot.utils.check.base.Checker | None | ~melobot.typ.base.SyncOrAsyncCallable[(<class 'melobot.adapter.model.TextEvent'>,), bool] = None, parser: ~melobot.utils.parse.base.Parser | None = None, priority: int = 0, block: bool = False, temp: bool = False, decos: ~typing.Sequence[~typing.Callable[[~typing.Callable], ~typing.Callable]] | None = None, legacy_session: bool = False) FlowDecorator [源代码]¶
绑定文本事件的“字符串完整匹配”处理流装饰方法
在前期的教程中,处理流装饰方法也称为绑定方法
- 参数:
logic_mode (LogicMode) -- 匹配的逻辑模式
checker (Checker | None | SyncOrAsyncCallable[(<class 'melobot.adapter.model.TextEvent'>,), bool]) -- 检查器
parser (Parser | None) -- 解析器
priority (int) -- 优先级
block (bool) -- 是否阻断向低优先级传播
temp (bool) -- 是否临时使用(处理一次事件后停用)
decos (Sequence[Callable[[Callable], Callable]] | None) -- 装饰器组
legacy_session (bool) -- 是否自动启用传统会话
- 返回:
处理流装饰器
- 返回类型:
- melobot.handle.on_regex_match(target: str, regex_flags: ~typing_extensions.Any = 0, checker: ~melobot.utils.check.base.Checker | None | ~melobot.typ.base.SyncOrAsyncCallable[(<class 'melobot.adapter.model.TextEvent'>,), bool] = None, parser: ~melobot.utils.parse.base.Parser | None = None, priority: int = 0, block: bool = False, temp: bool = False, decos: ~typing.Sequence[~typing.Callable[[~typing.Callable], ~typing.Callable]] | None = None, legacy_session: bool = False) FlowDecorator [源代码]¶
绑定文本事件的“正则匹配”处理流装饰方法
在前期的教程中,处理流装饰方法也称为绑定方法
- 参数:
target (str) -- 匹配的目标字符串
regex_flags (Any) -- 正则匹配的 flags
checker (Checker | None | SyncOrAsyncCallable[(<class 'melobot.adapter.model.TextEvent'>,), bool]) -- 检查器
parser (Parser | None) -- 解析器
priority (int) -- 优先级
block (bool) -- 是否阻断向低优先级传播
temp (bool) -- 是否临时使用(处理一次事件后停用)
decos (Sequence[Callable[[Callable], Callable]] | None) -- 装饰器组
legacy_session (bool) -- 是否自动启用传统会话
- 返回:
处理流装饰器
- 返回类型:
- melobot.handle.on_command(cmd_start: str | ~typing.Iterable[str], cmd_sep: str | ~typing.Iterable[str], targets: str | ~typing.Sequence[str], fmtters: ~typing.Sequence[~melobot.utils.parse.cmd.CmdArgFormatter | None] | None = None, checker: ~melobot.utils.check.base.Checker | None | ~melobot.typ.base.SyncOrAsyncCallable[(<class 'melobot.adapter.model.TextEvent'>,), bool] = None, matcher: ~melobot.utils.match.base.Matcher | None = None, priority: int = 0, block: bool = False, temp: bool = False, decos: ~typing.Sequence[~typing.Callable[[~typing.Callable], ~typing.Callable]] | None = None, legacy_session: bool = False) FlowDecorator [源代码]¶
绑定文本事件的“命令解析”处理流装饰方法
在前期的教程中,处理流装饰方法也称为绑定方法
- 参数:
fmtters (Sequence[CmdArgFormatter | None] | None) -- 命令参数格式化器
checker (Checker | None | SyncOrAsyncCallable[(<class 'melobot.adapter.model.TextEvent'>,), bool]) -- 检查器
matcher (Matcher | None) -- 匹配器
priority (int) -- 优先级
block (bool) -- 是否阻断向低优先级传播
temp (bool) -- 是否临时使用(处理一次事件后停用)
decos (Sequence[Callable[[Callable], Callable]] | None) -- 装饰器组
legacy_session (bool) -- 是否自动启用传统会话
- 返回:
处理流装饰器
- 返回类型:
处理流控制¶
处理流状态¶
- class melobot.handle.FlowRecordStage[源代码]¶
基类:
Enum
流记录阶段的枚举
- FLOW_START = 'fs'¶
- FLOW_EARLY_FINISH = 'fef'¶
- FLOW_FINISH = 'ff'¶
- NODE_START = 'ns'¶
- DEPENDS_NOT_MATCH = 'dnm'¶
- BLOCK = 'bl'¶
- STOP = 'st'¶
- BYPASS = 'by'¶
- REWIND = 're'¶
- NODE_EARLY_FINISH = 'nef'¶
- NODE_FINISH = 'nf'¶
- class melobot.handle.FlowRecord[源代码]¶
基类:
object
流记录
- stage: FlowRecordStage¶
- event: model.Event¶
- melobot.handle.get_flow_records() tuple[FlowRecord, ...] [源代码]¶
获取当前上下文中的流记录
- 返回:
流记录
- 返回类型:
tuple[FlowRecord, ...]
上下文动态变量¶
- melobot.handle.f_records¶
当前上下文中的流记录,类型为
tuple
[FlowRecord
, ...]