Version: 2.3.3
会话更新
在 NoneBot 中,在某个事件响应器对事件响应后,即是进入了会话状态,会话状态会持续到整个事件响应流程结束。会话过程中,机器人可以与用户进行多次交互。每次需要等待用户事件时,NoneBot 将会复制一个新的临时事件响应器,并更新该事件响应器使其响应当前会话主体的消息,这个过程称为会话更新。
更新事件响应器类型
通常情况下,与机器人用户进行的会话都是通过消息事件进行的,因此会话更新后的默认响应事件类型为 message
。如果希望接收一个特定类型的消息,比如 notice
等,我们需要自定义响应事件类型更新函数。响应事件类型更新函数是一个 Dependent
,可以使用依赖注入。
foo = on_message()
@foo.type_updater
async def _() -> str:
return "notice"
在注册了上述响应事件类型更新函数后,当我们需要等待用户事件时,将只会响应 notice
类型的事件。如果希望在会话过程中的不同阶段响应不同类型的事件,我们就需要使用更复杂的逻辑来更新响应事件类型(如:根据会话状态),这里将不再展示。