Skip to content

快速上手

你好,来张涩图

现在,我们来尝试编写第一个插件,让我们在插件目录下创建一个 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},来张涩图")  # 最终发送,完成后停止整个流程
Komorebi
你好
Hibiscus
不要说你好,来张涩图

值得注意的是,在执行 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},来张涩图")
你好,来张涩图 Doge

所以说了这么多,on_message 是什么?

初识事件响应器

事件响应器(Matcher)是用于对接收到的事件进行响应的重要工具。通过定义简单的规则,事件响应器可以帮助你捕获特定类型的事件,并执行相应的操作。

例如,在 Hello 插件中,我们创建了一个名为 hello_setu 的事件响应器。它会检查事件是否满足一些条件(on_message() 可以构造一个消息事件响应器,它会响应所有消息事件),如果满足,就会触发预先定义的操作(hello_handle)。这是插件与用户交互的基础。

MIT License