Back

简单拥有一个QQ机器人

RIP 酷Q,来认识一下 Nonebot

酷Q停止运营好久了,一开始接触它时还是个啥也不懂的菜B(现在是懂一点的菜B),配置了人生第一个 bot,用的是 Wine noVNC………虽然酷Q的部分插件相当上古,乐趣仍然很多。

最近群里有人接了个 HoshinoBot,我也相当眼馋,因此囫囵了一下也配置了 Nonebot,感叹一下工作流真的蛮简单,便于开发,在此记录一下。

运行原理

Nonebot 的运作原理其实很简单,机器人功能由 Nonebot 运作,它提供接入自定义插件的平台,那么 cqhttp 则扮演了一个 Nonebot 与 QQ 交流的桥梁,负责将消息从QQ取回传递给 Nonebot,Nonebot 处理将反馈交还给 cqhttp,cqhttp 传递至QQ实现功能。

其实这里的无头客户端还有很多其它的工具,这里介绍的是 cqhttp(个人喜欢 golang,特点是轻量到处能跑)

要求环境

Debian / Ubuntu Python >= 3.7

配置 go-cqhttp

# 下载 latest release go-cqhttp
wget -c "https://github.com/Mrs4s/go-cqhttp/releases/download/latest/go-cqhttp_linux_amd64.tar.gz"
tar -xzvf go-cqhttp_linux_amd64.tar.gz -C go_cqhttp; rm go-cqhttp_linux_amd64.tar.gz; cd go_cqhttp

# 运行 go_cqhttp,令其生成默认配置文件
./go_cqhttp
# 这里只配置了 WebSocket 正向和 WebSocket 反向

修改 config.yml

反向 WebSocket 连接

account:
  uin: 机器人QQ号
  password: "机器人密码"

message:
  post-format: array

servers:
  - ws-reverse:
      universal: ws://127.0.0.1:8080/cqhttp/ws

反向 WebSocket 连接

account:
  uin: 机器人QQ号
  password: "机器人密码"

message:
  post-format: array

servers:
  - ws:
    host: 127.0.0.1
    port: 6700

配置完成,快速启动 go-cqhttp

# 跳过启动前5秒
./go-cqhttp faststart

配置 Nonebot

cd ~

# 通过脚手架安装, nonebot2 会被作为依赖安装
pip install nb-cli

# 创建一个空项目
nb create

# 新建项目 bot,选择 cqhttp 作为适配器。完成后会在当前目录生成一个 /bot 项目目录

cd /bot

# 编辑 `bot.py`,末尾添加一行 
CQHTTP_WS_URLS={"修改为机器人QQ号": "ws://127.0.0.1:6700/"}

# 运行 bot
nb run

最小实例配置完成,可以和你的机器人发送一句 /echo Hello world! 试试啦

简述 Nonebot 插件安装

在脚手架下很简单, nb plugin list 列出所有可用线上插件, nb plugin install 插件 即可安装,注意要在项目目录下运行。每个插件的具体使用方法需要查看对应 github 页面配置,可前往 Nonebot 商店页面查找

如果不能跑插件,基本是还没有配置信息或者没有装这些插件对应的依赖。一般会提供 requirement.txtpip install i-r requirement.txt 一键安装。

参考

Nonebot 文档:https://v2.nonebot.dev/guide/

go-cqhttp 文档:https://docs.go-cqhttp.org/guide/quick_start.html#基础教程

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy