开始创建机器人¶
预先配置¶
我们先从最简单的 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:
通过
Bot
创建一个 bot;通过
ForwardWebSocketIO
添加一个 OneBot v11 协议的输入输出源;通过
v11.Adapter
添加 OneBot v11 协议的适配器;通过
load_plugin()
创建并加载插件启动 bot
(
Bot(__name__)
.add_io(ForwardWebSocketIO("ws://127.0.0.1:8080"))
.add_adapter(Adapter())
.load_plugin(test_plugin)
.run()
)
相关知识
更多 OneBot v11 输入输出源类型,请参考:输入输出源类型
到这里,你已经学会如何创建一个 melobot 机器人。接下来,让我们试试其他有趣的操作!