开始创建机器人

预先配置

我们先从最简单的 OneBot v11 协议开始学习如何搭建一个机器人,并以此学习 melobot 的基本特性。

首先需要一个“OneBot 实现程序”作为“前端”,完成与 qq 服务器的通信过程。请自行配置 OneBot 协议实现。

一个 demo

先来运行一段 demo 代码:(稍后我们会讲解其中的细节)

 1from melobot import Bot, PluginPlanner, send_text
 2from melobot.protocols.onebot.v11 import Adapter, ForwardWebSocketIO, on_start_match
 3
 4@on_start_match(".sayhi")
 5async def echo_hi() -> None:
 6    await send_text("Hello, melobot!")
 7
 8test_plugin = PluginPlanner(version="1.0.0", flows=[echo_hi])
 9
10if __name__ == "__main__":
11    (
12        Bot(__name__)
13        .add_io(ForwardWebSocketIO("ws://127.0.0.1:8080"))
14        .add_adapter(Adapter())
15        .load_plugin(test_plugin)
16        .run()
17    )

运行后,在机器人加入的任何一个群聊中,或与机器人的私聊中,输入以 .sayhi 起始的消息,即可回复:Hello, melobot!

demo 讲解

首先使用装饰器 on_start_match(),即可在本插件上添加一个字符串起始匹配的,消息事件处理方法

@on_start_match(".sayhi")
async def echo_hi() -> None:
    await send_text("Hello, melobot!")

这个事件处理方法做了件很简单的事:当收到一条消息时,如果消息内容以 .sayhi 起始,则通过 send_text() 发送一条消息:Hello, melobot!

由于 melobot 是基于插件化管理的,随后通过 PluginPlanner 创建一个插件管理器。插件管理器将被 melobot 用于创建插件。

# version 描述插件的版本
# flows 填入刚才的事件处理方法
test_plugin = PluginPlanner(version="1.0.0", flows=[echo_hi])

接下来开始按以下步骤创建、初始化和启动一个 bot:

  1. 通过 Bot 创建一个 bot;

  2. 通过 ForwardWebSocketIO 添加一个 OneBot v11 协议的输入输出源;

  3. 通过 v11.Adapter 添加 OneBot v11 协议的适配器;

  4. 通过 load_plugin() 创建并加载插件

  5. 启动 bot

(
    Bot(__name__)
    .add_io(ForwardWebSocketIO("ws://127.0.0.1:8080"))
    .add_adapter(Adapter())
    .load_plugin(test_plugin)
    .run()
)

相关知识

更多 OneBot v11 输入输出源类型,请参考:输入输出源类型

到这里,你已经学会如何创建一个 melobot 机器人。接下来,让我们试试其他有趣的操作!