快速上手
你好,来张涩图
现在,我们来尝试编写第一个插件,让我们在插件目录下创建一个 hello.py
插件
py
# plugins/hello.py
from nonebot import on_message
from nonebot.adapter import Event
hello_setu = on_message()
@hello_setu.handle()
async def hello_handle(event: Event):
message = event.get_message()
# await hello.send(f"不要说{message},来张涩图") # 普通发送,完成后继续后续流程
await hello.finish(f"不要说{message},来张涩图") # 最终发送,完成后停止整个流程
值得注意的是,在执行 finish
方法时,NoneBot 会在向机器人用户发送消息内容后抛出异常来结束事件响应流程。也就是说,在 finish
被执行后,后面的程序是不会被执行的(类似于 return
)。如果你需要回复机器人用户消息但不想结束事件处理流程,可以使用注释的部分中展示的 send
方法。
提示
如果偷懒把代码缩成这种形式,我们可以通过设定 matcher
参数来调用事件响应器操作。
py
# plugins/hello.py
from nonebot import on_message
from nonebot.adapter import Event
from nonebot.matcher import Matcher
@on_message().handle()
async def hello_handle(event: Event, matcher: Matcher):
message = event.get_message()
await matcher.finish(f"不要说{message},来张涩图")
你好,来张涩图
所以说了这么多,on_message
是什么?
初识事件响应器
事件响应器(Matcher)是用于对接收到的事件进行响应的重要工具。通过定义简单的规则,事件响应器可以帮助你捕获特定类型的事件,并执行相应的操作。
例如,在 Hello 插件中,我们创建了一个名为 hello_setu
的事件响应器。它会检查事件是否满足一些条件(on_message()
可以构造一个消息事件响应器,它会响应所有消息事件),如果满足,就会触发预先定义的操作(hello_handle
)。这是插件与用户交互的基础。