机器人真的很有意思呢,可是由于腾讯一直以来对机器人社区打击,不断更新加密算法,mirai用起来越来越麻烦了

所以切换到 lagrange (拉格朗日? 这个qq机器人框架

LagrangeDev/Lagrange.Core: An Implementation of NTQQ Protocol, with Pure C#, Derived from Konata.Core (github.com)

Onebot是什么?

统一的聊天机器人应用接口标准

简洁、通用、可扩展,只需使用一套标准即可为各种平台编写聊天机器人

OneBot 是一个聊天机器人应用接口标准,旨在统一不同聊天平台上的机器人应用开发接口,使开发者只需编写一次业务逻辑代码即可应用到多种机器人平台。

对于QQ的Onebot,我们使用lagrange作为与腾讯交互的消息平台

下载

从github 下载nightly release

Release Nightly Release · LagrangeDev/Lagrange.Core (github.com)

wget https://github.com/LagrangeDev/Lagrange.Core/releases/download/nightly/Lagrange.OneBot_linux-x64_8.0.zip
unzip Lagrange.OneBot_linux-x64_8.0.zip 
cd publish
chmod +x Lagrange.OneBot 
./Lagrange.OneBot

运行后提示

No exist config file, create it now...

Please Edit the appsettings.json to set configs and press any key to continue

首次运行的时候生成了 appsettings.json 文件这个时候按Ctrl+C 退出

配置

我们需要编辑lagrange的配置文件

nano appsettings.json

{
    "Logging": {
        "LogLevel": {
            "Default": "Information",
            "Microsoft": "Warning",
            "Microsoft.Hosting.Lifetime": "Information"
        }
    },
    "SignServerUrl": "https://sign.lagrangecore.org/api/sign",
    "MusicSignServerUrl": "",
    "Account": {
        "Uin": 0,
        "Password": "",
        "Protocol": "Linux",
        "AutoReconnect": true,
        "GetOptimumServer": true
    },
    "Message": {
        "IgnoreSelf": true,
        "StringPost": false
    },
    "QrCode": {
        "ConsoleCompatibilityMode": false
    },
    "Implementations": [
        {
            "Type": "ReverseWebSocket",
            "Host": "127.0.0.1",
            "Port": 8080,
            "Suffix": "/onebot/v11/ws",
            "ReconnectInterval": 5000,
            "HeartBeatInterval": 5000,
            "AccessToken": ""
        }
    ]
}

其中重要的信息是

  1. Implementations,消息平台的通信方式,默认是ReverseWebSocket反向web socket,注意这里需要和你的程序/脚本里面的用一样的协议

  2. Port端口,和你的程序/脚本交流的端口

  3. Account

    1. Uin: QQ的账号

    2. Password QQ密码

  4. SignServerUrl:签名服务器的API,非常重要,用于处理腾讯签名算法

    1. 哪里获取?lagrange的tg服务器上面)

登录

现在我们处理QQ登录的问题

lagrange使用扫码登录,登录的时候使用linux客户端的登录协议

运行后lagrange会在终端打印一个二维码,拿手机qq扫一下就好了

注意手机登录的qq得是和lagrange上配置的是一样的

./Lagrange.OneBot

需要后台运行的话,就用screen吧

screen允许你在一个ssh里面有多个会话

screen ./Lagrange.OneBot
# 按 ctrl+a,再按d,挂起会话
# screen -r  可以恢复会话