准备工作

若不熟悉使用 vim 进行命令行文本文件编辑,可提前安装宝塔面板方便编辑文件内容。

创建 Bot 文件夹:

mkdir bot
cd bot

查看系统 Python3 版本:

python3 --version

本教程要求 Python 版本 >= 3.7.3 且 < 3.10 ,推荐使用 Python3.8 或 Python3.9 。

Python 虚拟环境

为防止对系统 Python 环境造成影响,建议使用虚拟环境工具为项目创建纯净的依赖环境。

创建 Python 虚拟环境:

python3 -m venv venv

此时 bot 文件夹下会新增一个 venv 文件夹,为 Python 虚拟环境。

创建 Bot

新建一个 screen ,用于运行 Bot 程序:

screen -S mybot

退出当前窗口使用 Ctrl + A + D ,查看窗口列表使用:

screen -ls

恢复指定窗口使用:

screen -r -D mybot

其中 -D 非必要,如果窗口为 Attached 状态无法恢复时,需要加上 -D 参数解除占用。

mybot 窗口中,进入 Python 虚拟环境:

source ./venv/bin/activate

此时命令行首端会多出 (venv) ,代表进入了虚拟环境,运行 which python ,得到的路径为 ./venv/bin/python

如需退出虚拟环境,使用:

deactivate

进入虚拟环境后,安装 nb-cli

pip install nb-cli

安装完成后,在命令行输入 nb ,使用箭头选择 Create a New Project 或者直接使用创建命令:

nb create

依次输入工程名,选择插件文件夹名,选择内置插件,适配器。可参考以下配置:

[?] Project Name: mybot
[?] Where to store the plugin? 2) In a "src" folder
[?] Which builtin plugin(s) would you like to use? echo
[?] Which adapter(s) would you like to use? OneBot V11

创建完成后,当前目录会多出一个 mybot 文件夹。

安装 go-cqhttp

退出 mybot 窗口,新建 gocq 窗口并进入:

screen -S gocq

创建并进入 gocq 文件夹:

mkdir gocq
cd gocq

下载并解压 go-cqhttp

wget https://github.com/Mrs4s/go-cqhttp/releases/download/v1.0.0-beta8-fix2/go-cqhttp_linux_amd64.tar.gz
tar -xzf go-cqhttp_linux_amd64.tar.gz

运行 go-cqhttp

./go-cqhttp

输入选择 3 选择反向 WS 通信之后,按 Ctrl + C 退出。

编辑 config.yml ,修改 uin 为机器人的 QQ 号,反向 WS 部分按以下方式配置:

# 连接服务列表
servers:
  # 反向WS设置
  - ws-reverse:
      # 反向WS Universal 地址
      # 注意 设置了此项地址后下面两项将会被忽略
      universal: ws://127.0.0.1:8080/onebot/v11/
      # 反向WS API 地址
      api: ws://your_websocket_api.server
      # 反向WS Event 地址
      event: ws://your_websocket_event.server
      # 重连间隔 单位毫秒
      reconnect-interval: 3000
      middlewares:
        <<: *default # 引用默认中间件

保存文件后重新运行 go-cqhttp ,扫码登录即可。此时会提示反向 WS 连接失败,是因为还没有运行 Bot 程序,保持 go-cqhttp 运行退出当前窗口即可。

运行 Bot 程序

恢复 mybot 窗口:

screen -r mybot

在命令行输入 nb ,使用箭头选择 Run the Bot ... 或者直接使用运行命令:

nb run

若结果包含以下内容,没有报错则运行成功:

[DEBUG] nonebot | Succeeded to load adapter "OneBot V11"
[SUCCESS] nonebot | Succeeded to import "nonebot.plugins.echo"
[SUCCESS] nonebot | Running NoneBot...
[DEBUG] nonebot | Loaded adapters: OneBot V11
[INFO] uvicorn | Started server process [2864115]
[INFO] uvicorn | Waiting for application startup.
[INFO] uvicorn | Application startup complete.
[INFO] uvicorn | Uvicorn running on http://127.0.0.1:8080 (Press CTRL+C to quit)
[INFO] uvicorn | ('127.0.0.1', xxxxx) - "WebSocket /onebot/v11/" [accepted]
[INFO] nonebot | OneBot V11 | Bot xxxxxxxxxx connected
[INFO] websockets | connection open

切换到 gocq 窗口,应显示:

[INFO]: 已连接到反向WebSocket Universal服务器 ws://127.0.0.1:8080/onebot/v11/

测试

私聊机器人账号发送 /echo 1 ,若得到回复 1 ,说明运行成功。

Last modification:January 22, 2022
如果觉得我的文章对你有用,请随意赞赏