melobot.handle

处理流

class melobot.handle.Flow[源代码]

基类:object

处理流

变量:

name (str) -- 处理流的标识

__init__(name: str, *edge_maps: Iterable[Iterable[FlowNode] | FlowNode], priority: HandleLevel = HandleLevel.NORMAL, temp: bool = False) None[源代码]

初始化处理流

参数:
返回类型:

None

property priority: HandleLevel

处理流的优先级

async reset_priority(new_prior: HandleLevel) None[源代码]

重设处理流的优先级

不会立即生效,通常会在下一次进入处理流前生效。 因此返回时不代表已经更改优先级,只是添加了计划重设优先级的任务

参数:

new_prior (HandleLevel) -- 新优先级

返回类型:

None

连接另一处理流返回新处理流,并设置新优先级

参数:
  • flow (Flow) -- 连接的新流

  • priority (HandleLevel | None) -- 新优先级,若为空,则使用两者中较小的优先级

返回:

新的处理流

返回类型:

Flow

class melobot.handle.FlowNode[源代码]

基类:object

处理流结点

处理节点

melobot.handle.node(func: AsyncCallable[..., bool | None]) FlowNode[源代码]

处理结点装饰器,将当前异步可调用对象装饰为一个处理结点

参数:

func (AsyncCallable[..., bool | None])

返回类型:

FlowNode

melobot.handle.no_deps_node(func: AsyncCallable[..., bool | None]) FlowNode[源代码]

node() 类似,但是不自动为结点标记依赖注入。

需要后续使用 inject_deps() 手动标记依赖注入, 这适用于某些对处理结点进行再装饰的情况

参数:

func (AsyncCallable[..., bool | None])

返回类型:

FlowNode

处理流控制

async melobot.handle.nextn() None[源代码]

运行下一处理结点(在处理流中使用)

返回类型:

None

async melobot.handle.block() None[源代码]

阻止当前事件向更低优先级的处理流传播(在处理流中使用)

返回类型:

None

async melobot.handle.bypass() NoReturn[源代码]

立即跳过当前处理结点剩下的步骤,运行下一处理结点(在处理流中使用)

返回类型:

NoReturn

async melobot.handle.rewind() NoReturn[源代码]

立即重新运行当前处理结点(在处理流中使用)

返回类型:

NoReturn

async melobot.handle.stop() NoReturn[源代码]

立即停止当前处理流(在处理流中使用)

返回类型:

NoReturn

async melobot.handle.flow_to(flow: Flow) None[源代码]

立即进入一个其他处理流(在处理流中使用)

参数:

flow (Flow)

返回类型:

None

处理流状态

class melobot.handle.FlowStore[源代码]

基类:dict[str, Any]

流存储,将会在流运行前初始化,运行结束后销毁

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
flow_name: str
node_name: str
event: model.Event
prompt: str = ''
melobot.handle.get_flow_store() FlowStore[源代码]

获取当前上下文中的流存储

返回:

流存储

返回类型:

FlowStore

melobot.handle.get_flow_records() tuple[FlowRecord, ...][源代码]

获取当前上下文中的流记录

返回:

流记录

返回类型:

tuple[FlowRecord, ...]

melobot.handle.get_event() Event[源代码]

获取当前上下文中的事件

返回:

事件

返回类型:

Event

melobot.handle.try_get_event() Event | None[源代码]

尝试获取当前上下文中的事件

返回:

事件或空

返回类型:

Event | None