Skip to content

Seiryuu-Qiu/fix-protocol-version

 
 

Repository files navigation

临时性协议修复插件

Downloads

目前对于 code=45 的处理:

1.7.0+ 中加入了 TLV544Provider, 但实际效果有限

1.9.0+ 中加入了 KFCFactory, 以对接第三方签名服务

本插件不内置签名服务,你需要修改配置,根据版本指定第三方签名服务

第三方签名服务

KFCFactory

ANDROID_PHONE / ANDROID_PAD

KFCFactory.json

UnidbgFetchQsign(fuqiuluo/unidbg-fetch-qsign) / ViVo50(kiliokuara/magic-signer-guide)

KFCFactory 会根据登录协议版本从配置文件(KFCFactory.json)获取签名服务的配置信息

请确保第三方签名服务可用!!!
请确保第三方签名服务可用!!!
请确保第三方签名服务可用!!!

目前支持的第三方签名服务有 (你需要准备至少一个可用的服务)

请确认第三方签名服务 支持的协议版本 和 登录的协议版本 匹配

下面是配置文件 KFCFactory.json 示例,你可以根据实际情况调整

{
    "8.9.63": {
        "base_url": "http://127.0.0.1:8080",
        "type": "fuqiuluo/unidbg-fetch-qsign",
        "key": "114514"
    },
    "8.9.58": {
        "base_url": "http://127.0.0.1:8888",
        "type": "kiliokuara/magic-signer-guide",
        "server_identity_key": "vivo50",
        "authorization_key": "kfc"
    }
}

修改配置文件 KFCFactory.json 无需重启 Mirai

JVM 参数

property default desc
xyz.cssxsh.mirai.tool.KFCFactory.config KFCFactory.json KFCFactory config file path
xyz.cssxsh.mirai.tool.ViVo50.Session.timeout 60000 Session except timeout (ms)
xyz.cssxsh.mirai.tool.UnidbgFetchQsign.token.interval 2400000 RequestToken interval, 0 is stop

以上参数在 1.9.5 中加入

Mirai Console 使用方法

下载 mirai2.jar 放到 plugins ,重启 Mirai Console 即可
出现 Mirai版本低于预期,将升级协议版本 就表示工作正常,因为这只是临时性修复,之后的Mirai版本会另外再修复
出现 协议版本检查更新... 就表示插件开始工作

命令

since 1.6.0

  • protocol sync <type> 在线同步协议
    例如 protocol sync ANDROID_PAD

  • protocol info 显示当前协议信息

since 1.8.0

  • protocol load 加载本地协议文件
    例如 protocol load ANDROID_PHONE

since 1.9.6

  • protocol fetch <type> <version> 在线获取协议
    例如 protocol fetch ANDROID_PAD 8.9.63

Mirai Core 使用方法

since 1.1.0

下载 mirai2.jar, 然后作为 lib 引用
1.9.0+ 中加入了 async-http-client 作为依赖,请自行补全

然后在代码中调用 FixProtocolVersion 的静态方法
java示例:

import xyz.cssxsh.mirai.tool.FixProtocolVersion;
import net.mamoe.mirai.utils.BotConfiguration.MiraiProtocol;

import java.io.FileNotFoundException;
import java.util.Map;

public class Example {
    // 获取指定协议版本
    public static void fetch() {
        // 获取最新版本协议
        FixProtocolVersion.fetch(BotConfiguration.MiraiProtocol.ANDROID_PAD, "latest");
        // 获取 8.9.63 版本协议
        FixProtocolVersion.fetch(BotConfiguration.MiraiProtocol.ANDROID_PHONE, "8.9.63");
    }

    // 从本地文件加载协议版本
    public static void load() {
        try {
            FixProtocolVersion.load(BotConfiguration.MiraiProtocol.ANDROID_PAD);
        } catch (FileNotFoundException ignored) {
            FixProtocolVersion.fetch(BotConfiguration.MiraiProtocol.ANDROID_PAD, "8.9.63");
        }
    }

    // 获取协议版本信息
    public static Map<BotConfiguration.MiraiProtocol, String> info() {
        return FixProtocolVersion.info();
    }
}

since 1.9.0

关于 KFCFactory, 正常来说
它会根据 SPI 机制被自动加载
如果项目结构特殊,也可用使用 KFCFactory.install() 手动注册

相关项目

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Kotlin 100.0%