目前我在用的程序

1 系统环境

​​‌‌​​​‌‌​‌​​‌‌‍​‌​‌‌‌​​‌‌‌‌​‌​‍​‌​​‌​​​‌​​​‌‌​‍​‌​‌‌​​​‌‌​​​​​‍​​‌​‌‌‌‌‌‌‌‌​​​‍​‌‌​​‌‌‌​‌‌​​‌‌‌‍​‌‌​​​‌‌‌​​​‌​‌‍​​‌‌‌‌‌‌‌‌​​‌‌‍​​‌‌​​​‌​​‌‌​‌​‍​‌‌‌​​​​​​‌​‌‌‌‌‍​‌‌‌​‌‌‌‌​‌‌​​‌‌‍​‌‌​​​‌‌‌‌‌‌‌‌‌‍​‌‌​​​‌‌‌​‌​‌​‌‍‌​‌​‌‌‌​‍‌​‌​‌‌‌​‍​​‌‌​​​‌‌​​​‌​‌‍​‌​‌​​‌‌​​‌​‌‌‌‍​‌‌​​​‌​‌​​​‌​‌‍​‌​‌​‌‌‌‌​‌‌​​​‍​​​​​​​​‌‌‌‌​​‌‌‍​‌​‌​​​​​​​​‌​‌‍​‌‌​​​‌​‌‌‌​​​‌‍‌​​‌‌​​​‍‌​​‌​​​​‍‌‌​‌​​‌​‍‌​​‌‌‌​​‍‌​​​‌‌‌​‍‌​​‌​‌‌‌‍‌​​​‌​‌‌‍‌​​​‌​‌‌‍‌​​​‌‌‌‌‍​​‌‌‌‌‌‌‌‌​​‌​‍​​​​​​​​‌‌‌‌​​‌‌‍​​​‌​‌​‌‌​​‌‌‌​‍‌​​​‌​​​‍‌​​‌​‌‌‌‍‌​​‌​‌‌​‍‌​​​‌​‌‌‍‌​​‌‌​‌​‍‌​​‌‌​​‌‍‌​​‌‌‌‌​‍‌​​‌​​​‌‍​‌‌​​​‌​‌‌‌​​​‌‍‌‌​​‌‌​‌‍‌‌​​‌‌‌‌‍‌‌​​‌‌​‌‍‌‌​​‌‌‌​‍‌‌​‌​​‌​‍‌‌​​‌‌‌​‍‌‌​​‌‌​‌‍‌‌​‌​​‌​‍‌‌​​‌‌‌‌‍‌‌​​‌​​‌‍​‌​‌‌​‌‌‌‌​​‌​​‍​‌‌​​​​‌​‌​​​‌‌‍​​​​​​​​‌‌‌‌​​‌‌‍​‌​‌‌​​​‌‌​​​​​‍​​‌‌​‌​​‌‌‌‌​​​‍​‌​‌​​​‌‌​​‌‌‌‌‍​‌​‌​​​‌​‌‌‌‌‌‌‍​​​​​​​​‌‌‌​​‌​‌‍‌​​‌​‌‌‌‍‌​​​‌​‌‌‍‌​​​‌​‌‌‍‌​​​‌‌‌‌‍‌​​​‌‌​​‍‌‌​​​‌​‌‍‌​‌​​​‌‌‍‌​‌​​​‌‌‍‌​​​‌​​​‍‌​​​‌​​​‍‌​​​‌​​​‍‌‌​‌​​​‌‍‌​​‌‌‌​‌‍‌​​‌‌‌‌​‍‌​​‌​‌‌​‍‌​​‌‌​​‌‍‌​​‌‌‌‌​‍‌​​‌​​​‌‍‌‌​​​‌‌​‍‌‌​​‌​​​‍‌‌​‌​​​‌‍‌​​‌‌‌​​‍‌​​‌​​​‌‍‌​‌​​​‌‌‍‌​​‌‌‌‌​‍‌​​​‌‌​‌‍‌​​‌‌‌​​‍‌​​‌​‌‌‌‍‌​​‌​‌‌​‍‌​​​‌​​‌‍‌​​‌‌​‌​‍‌​​​‌‌​​‍‌​‌​​​‌‌‍‌‌​​‌‌‌​‍‌‌​​‌‌‌​‍‌‌​​​‌‌​‍‌‌​​​‌‌​‍‌​‌​​​‌‌‍​​​​​​​​‌‌‌‌​​‌‌‍​‌​​​​​​‌​‌​​​‌‍​‌‌​​​​​​​‌‌‌‌​‍​‌​‌‌‌​‌​​‌​​‌‌‍​‌‌​​​​‌‌‌​‌​​​‍​‌​‌‌​​​​​​‌​​​‍​​​​​​​​‌‌‌​​‌​‌‍​​​‌​​‌‌​​​​​‌​‍​‌​​​​‌‌‌‌‌‌​​‌‍‌​‌​‌‌‌‌‍‌​​‌​​‌‌‍‌​​​‌​‌​‍‌​​​‌‌​Nonebot2 的 Python 环境:3.7 以上

之前年少无知的我选择在服务器上安装了CentOS 7,系统的Python版本只有2.7.5…
升级Python版本、改系统环境…太多痛了,最后把系统搞崩了,不过还好我有前几天的快照
别管你是不是要部署Nonebot2,还是别用Cen­tOS了,而且不久它也要停更了

我的系统环境:Ubuntu 20.04 LTS (Py3.7.9)

2 安装go-cqhttp

以下配置均是 Linux 版本的说明,Win­dows 下配置类似。

如果遇到任何困难,查官方文档一定是个好办法

安装 go-cqhttp

go-cqhttp 文档: https://docs.go-cqhttp.org/guide/
go-cqhttp 下载地址:https://github.com/Mrs4s/go-cqhttp/releases

选择你合适的版本,并将 go-cqhttp 上传到你的服务器上(使用 SSH 工具或 BT 面板都可以)

go-cqhttp下载地址
go-cqhttp下载地址

我这里将 go-cqhttp 上传到 /root/​cqhttp

进入到 go-cqhttp 目录下面

  1. cd /root/cqhttp

给权限,该行命令执行成功不会输出任何信息

  1. chmod 777 go-cqhttp

运行 go-cqhttp, 如果没有执行上面一条命令则提示./​go-cqhttp: 权限不够

  1. ./go-cqhttp

Nonebot2 需要使用反向 Web­socket,这里我们直接输入 3 然后回车

如果你还想同时配置 QQbot 框架,可以输入 123 可以生成三种协议来使用

生成配置
生成配置

然后我们就能看到 cqhttp 目录下面多出来一个 config.yml 文件

修改 config.yml 文件

第 4 行和第 5 行分别是 QQ 的账号密码,没什么用 直接删除就行了

账号密码
账号密码

再往下,会看到反向WS设置的配置

  1. # 反向WS设置
  2. - ws-reverse:
  3. # 反向WS Universal 地址
  4. # 注意 设置了此项地址后下面两项将会被忽略
  5. universal: ws://your_websocket_universal.server
  6. # 反向WS API 地址
  7. api: ws://your_websocket_api.server
  8. # 反向WS Event 地址
  9. event: ws://your_websocket_event.server
  10. # 重连间隔 单位毫秒
  11. reconnect-interval: 3000
  12. middlewares:
  13. <<: *default # 引用默认中间件

修改为以下内容

  1. - ws-reverse:
  2. universal: ws://127.0.0.1:8080/cqhttp/ws
  3. # 重连间隔 单位毫秒
  4. reconnect-interval: 3000
  5. middlewares:
  6. <<: *default # 引用默认中间件

其中 ws://127.0.0.1:8080/cqhttp/ws 中的 127.0.0.1 和 8080 应分别对应 nonebot 配置的 HOST 和 PORT。

如果你的 nonebot 安装在另一台服务器上,请把 127.0.0.1 修改为另一台服务器的 IP(我就是在这一步没有配置好,导致一直连接失败)

配置完成,运行go-cqhttp

  1. ./go-cqhttp

会输出二维码,用登陆机器人账号的手机 QQ 扫一扫登录

(由于这两天腾讯老是抽风,这一步多试试才行)

此时 go-cqhttp 就配置完成并且成功运行了

3 安装Nonebot2

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

(推荐)使用Virtualenv创建Python虚拟环境(也可以使用poetry创建)

安装 vir­tualenv

  1. pip install virtualenv

创建虚拟环境,名称(nonebot)可以自己随意设置

  1. virtualenv nonebot

进入虚拟环境文件夹

  1. cd nonebot

激活环境,进入虚拟环境

  1. source ./bin/activate

通过脚手架安装

使用 pip 或 其他包管理工具 安装 nb-cli,nonebot2 会作为其依赖被一起安装

  1. pip install nb-cli

4 创建机器人

创建一个空项目

  1. nb create

根据引导进行项目配置,完成后会在当前目录下创建一个项目目录

输入项目名称 我这里输入了qqbot
使用 ↓ 选择src文件夹
输入 y 回车
按下空格键选择cqhttp(注意变色才是选中),回车

修改机器人的项目配置

修改 qqbot 文件夹中的 .env 中内容

  1. ENVIRONMENT=dev
  2. CUSTOM_CONFIG=common config

修改.env.dev 为:

  1. HOST=0.0.0.0
  2. PORT=8080
  3. DEBUG=true

修改.env.pord 为:

  1. HOST=0.0.0.0
  2. PORT=8080
  3. SECRET=
  4. ACCESS_TOKEN=

上述文件中的 PORT 要和 go-cqhttp 的 config.yml 文件中反向WS端口相同

在项目文件下使用命令行输入下述命令即可运行

  1. nb run

由于我使用了虚拟环境需要使用下述命令先进入虚拟环境才能运行

  1. sudo -i
  2. cd nonebot
  3. source ./bin/activate
  4. cd qqbot
  5. nb run

运行成功则会显示如下类似日志

5 检查 Nonebot2 和 go-cqhttp 是否通信成功

  1. [0m[37m[2021-12-06 17:17:57] [INFO]: 开始尝试连接到反向WebSocket Universal服务器:
  2. [0m[37m[2021-12-06 17:17:57] [INFO]: 正在检查更新.
  3. [0m[37m[2021-12-06 17:17:57] [INFO]: 已连接到反向WebSocket Universal服务器

试试你的机器人是不是正常的,给你的机器人发消息吧

  1. /echo 你好,世界
你好世界
你好世界

6 后台运行程序

上面的是前台运行,如果你操作其他命令或者关闭 ssh 工具,程序自然就关闭了

在检查一切正常之后,就可以使用命令进行后台启动了

分别进入对应的目录来分别执行下述命令

后台运行 go-cqhttp

  1. nohup ./go-cqhttp &

后台运行 Nonebot2

  1. nohup nb run &

在对应的文件夹下会生成 nohup.out 文件,这里存放运行的日志,可以用来查看是否正常运行

如果你想配置更多内容,可以查看 Nonebot2 和 go-cqhttp 的官方文档来进行配置。

7 使用 Nonebot2 插件

Nonebot2 插件商店:https://v2.nonebot.dev/store.html

还有一些商店没有收录的插件,你可以在 GitHub 中查找

注意:
1.文中二维码和链接可能带有邀请性质,请各位玩家自行抉择。
2.请勿通过链接填写qq号与密码、银行卡号与密码等个人隐私信息。
3.禁止纯拉人头,拉app注册等信息,发现必小黑屋。
4.同一种信息仅发一次,多发会被删除。
5.文章关联方不想展示也可以微信站长“socutesheep”删除。