使用GO-CQHttp搭建QQ的机器人

本文结合@ATRI官方文档 大部分搬运@Ciraos葱苓的博客以及个人经验总结

Go-CQHttp + Atri

使用Linux部署

提前准备

  • 一台云服务器,或者一台电脑

    • 腾讯云轻量服务器1h2g Ubuntu64位系统(我的)
  • python>=3.8 的运行环境

  • QQ号(不建议使用大号)

配置Go-CQHttp

前往go-cqhttp release下载cqhttp对应的linux服务端go-cqhttp_linux_amd64.tar.gz文件。

使用ssh工具进入服务器,新建cqhttp文件夹

cd ~
mkdir cqhttp && cd cqhttp

go-cqhttp_linux_amd64.tar.gz上传到cqhttp文件夹,我推荐使用TermiusMac版工具连接服务器(Termius自带文件夹上传功能)

tar -xvzf go-cqhttp_linux_amd64.tar.gz  //解压文件

解压之后的文件使用GO-CQHttp搭建QQ的机器人_第1张图片

运行./go-cqhttp,等待出现以下:

使用GO-CQHttp搭建QQ的机器人_第2张图片

这里选择3: 反向 Websocket 通信,因为我们用的是atri,需要用到反向 websocket 通信,按下数字键

使用GO-CQHttp搭建QQ的机器人_第3张图片

此时,按下ctrl+c结束进程,然后修改config.yml

注释里有 // 的需要自己自定义。其他的我也弄不懂,所以建议不要动。

# go-cqhttp 默认配置文件

account: # 账号相关
  uin: 1437907718 # QQ账号
  password: '' # 密码为空时使用扫码登录
  encrypt: false  # 是否开启密码加密
  status: 0      # 在线状态 请参考 https://docs.go-cqhttp.org/guide/config.html#在线状态
  relogin: # 重连设置
    delay: 3   # 首次重连延迟, 单位秒
    interval: 3   # 重连间隔
    max-times: 0  # 最大重连次数, 0为无限制
    
    
    # 连接服务列表
servers:
  # 添加方式,同一连接方式可添加多个,具体配置说明请查看文档
  #- http: # http 通信
  #- ws:   # 正向 Websocket
  #- ws-reverse: # 反向 Websocket
  #- pprof: #性能分析服务器
  # 反向WS设置
  - ws-reverse:
      # 反向WS Universal 地址
      # 注意 设置了此项地址后下面两项将会被忽略
      universal:  ws://127.0.0.1:8080/onebot/v11/ws   // 反向 websockets 通信地址,按照我写的就行。
      # 反向WS API 地址
      api: ws://your_websocket_api.server
      # 反向WS Event 地址
      event: ws://your_websocket_event.server
      # 重连间隔 单位毫秒
      reconnect-interval: 3000
      middlewares:
        <<: *default # 引用默认中间件


_config.yml设置好之后,继续运行./go-cqhttp

使用GO-CQHttp搭建QQ的机器人_第4张图片

接下来会出现一个二维码,拿你的机器人qq扫码授权即可。第一次扫码就行,之后无需扫码,除非你动了文件。
虽然会出现黄色字段,但是不用管,等最后设置好nonebot后,就可以连通了:

[2022-03-05 15:29:03] [WARNING]: 连接到反向WebSocket Universal服务器 ws://127.0.0.1:8080/onebot/v11/ws 时出现错误: dial tcp 127.0.0.1:8080: connect: connection refused 

按下ctrl+c结束进程,并输入 cd ~返回home文件夹。到这,你的cqhttp就配置成功了!

配置atri

传送门:atri
高性能文爱萝卜子,糅杂了各类有趣小功能。

从Github库下载好ATRI-main.zip压缩包

使用GO-CQHttp搭建QQ的机器人_第5张图片

放进你的服务器目录中,然后通过unzip ATRI-main.zip命令解压此压缩包,

我建议把ATRI-main文件夹名称改为main,以方便后期的调试,

再通过cd main进入文件夹,并输入以下命令安装atri所需的依赖:

pip install -r requirements.txt

安装完依赖之后,再修改下文件夹中的config.yml文件,这里我们只做最初的改动:

记得将InlineGoCQHTTPenable改为false。我们暂时采用GO-CQHttpatri分开运行的方式。

BotSelfConfig:
  host: "127.0.0.1"  # 监听ip,要和cq-http中的设置保持一致。
  port: 20000        # 监听端口,要和cq-http中的设置保持一致。
  debug: false
  superusers: ["1234567890"]  # 超级用户qq号码。注意:这不是机器人qq号,这是一个和机器人沟通的账号。
  nickname: ["ATRI", "Atri", "atri", "亚托莉", "アトリ"]
  command_start: ["", "/"]
  command_sep: ["."]
  session_expire_timeout: 60
  proxy: ""  # 请参考文档

InlineGoCQHTTP: # 在atri文件夹内调用cqhttp,这边建议cq-http和atri分开跑比较好呢!
  enabled: false
  accounts: # 可多个账号,具体请参考文档
    - uin: 1234567890
      password: ""
      protocol: 3
  
  download_domain: "github.com"
  download_version: "v1.0.0-rc1"

SauceNAO:
  key: ""

Setu:
  reverse_proxy: true # 请参考文档
  reverse_proxy_domain: "i.pixiv.re"

修改好之后,就可以通过以下命令来启动atri啦!

python main.py

screen让你的机器人跑起来

安装screen模块:

    通过如下命令安装screen

yum install -y screen

screen简单命令

创建一个screen

    例如:screen -S [name]

screen -S cqhttp

    这样,你就创建好了一个screen,现在按住ctrl a+d来退出,如果你还想查看的话,也可以通过screen -r cqhttp来查看。

查看当前运行中的screen

    例如:screen -ls

ubuntu@VM-16-11-ubuntu:~$ screen -ls
There are screens on:
        2183677.cqhttp  (03/04/2022 09:55:58 PM)        (Detached)
        2182766.atri    (03/04/2022 09:52:23 PM)        (Detached)
2 Sockets in /run/screen/S-ubuntu.

    注意上述命令中的数字2183677.cqhttp,它非常有用,我们可以通过screen -r 2183677的方式来重新加入,也可以通过screen -r cqhttp来进入screen。

销毁一个screen

    例如:screen -X -S [name] quit。按上文所述,我们查到cqhttp的数字为2183677,那么我们就可以通过如下方式来杀死这个screen:

screen -X -S 2183677 quit

将atri和cqhttp连通

    大体思路:在cqhttp的文件夹内创建一个screen用来运行cqhttp,然后退出当前screen,cd到atri文件夹,仍按照上述步骤操作,这样,cqhttp才能和atri连通。

cd cqhttp
screen -S cqhttp

    此时,我们已经开启了cqhttp的screen窗口,这时,我们就可以先通过./go-cqhttp faststartcqhttp运行起来,然后通过ctrl a+d退出当前screen。再然后,进入到atri文件夹内。

cd ~
cd atri
screen -S atri

    同样的,atri窗口已经开启,通过python main.py让atri运行,然后ctrl a+d退出。
    此时,我们再screen -r cqhttp返回cq的screen,发现已经连接上atri辣!
    我们对机器人发一个/ping,机器人便会回复,

使用GO-CQHttp搭建QQ的机器人_第6张图片

你可能感兴趣的:(QQ机器人,python,机器学习,人工智能)