这两天在搭qqBot,记录一下

整体技术

我使用的是go-cqhttpnonebot2

在遇到风控问题时,我使用了unidbg-fetch-qsign

过程

  • 整个过程比我着手搭建前所想的要困难许多,踩了许多坑。不过很棒的一点是,这三个项目的issue都十分活跃。我踩的坑,在issue中几乎都能搜到。我使用过的开源项目不多,但这三个给了我很好的印象,希望自己以后能做些自己的贡献。

  • 之前没想到最难的一点不是机器人程序的编写,而在于登录。我使用的号是新号(创建一个礼拜左右),风控等级比较高。

而我的需求是:将bot部署在地点在非我所在地的一个服务器上,这更是增加了被风控的概率。

尝试许多种方法后,我最终的解决方法是:

  1. 在本地先使用手表协议扫码登录。( "sort_version_name":8.9.73,protocol:2)
  2. 成功登录后将得到的文件移至服务器上并配置signsever,再次进行登录

感想

  1. 想起搭telegram bot时,只需要申请一个token,甚至教程官方都有在写。而这里却是道高一尺魔高一丈般的猫鼠游戏。不免五味杂陈。
  2. nonebot这种插件系统我觉得很棒。省了不少力气。
  3. 感觉qqBot可玩性还是蛮高的,在其他群里也常常能见到些有趣的bot。但可惜的是腾讯的态度。

收获

  1. nohup
  • 使用: 例: nphup nb run
  • 关闭: 例:
    ps aux | grep `nb` #找到对应的进程号
    kill $进程号
    
  1. 守护进程(Systemd) 注:以下复制自使用 NoneBot2 和 go-cqhttp 打造自己的 FF14 QQ 机器人
    • 创建
    # vim /lib/systemd/system/go-cqhttp.service
    
        [Unit]
        Description=GO-CQHTTP
        Wants=network-online.target
        After=network-online.target
        [Service]
        Type=simple
        User=root
        WorkingDirectory= GO-CQHTTP的运行目录
        ExecStart= nohup go-cqhttp
        KillMode=process
    
        [Install]
        WantedBy=multi-user.target
    
    • 使用
    systemctl status go-cqhttp #查看状态
    systemctl enable go-cqhttp #启用开机自启
    systemctl restart go-cqhttp #重启进程
    systemctl stop go-cqhttp #停止进程
    systemctl start go-cqhttp #开始进程
    
  2. python虚拟环境
    • 新建
    python -m venv myenv # 创建一个名为myenv的虚拟环境
    
    • 激活
    source ./qqVenv/bin/activate # bash
    
    source ./qqVenv/bin/activate.fish # fish
    

尾巴

  1. go-cqhttpQQ Bot的未来以及迁移建议中宣布不再维护
  2. 不久后,QQ Bot的未来以及迁移建议上所提到的可能的替代方案也相继无法使用

我感谢这些作者!

参考