MiraiForum

    • 注册
    • 登录
    • 搜索
    • 热门
    • 最新
    • 未解决
    • 标签
    • 群组
    • 友情链接

    为测试 mirai 添加外置 EncryptService

    技术交流板块
    1
    1
    571
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • StageGuard
      StageGuard 最后由 StageGuard 编辑

      我们为 mirai 添加了新的协议内容,需要登录测试但被风控登不上时,就需要配置外置 EncryptService 辅助登录。

      关闭 android target

      PC 测试运行需要关闭 android target,在 mirai 项目根目录下创建 local.properties,添加以下属性:

      projects.mirai-core.targets=jvm;!android
      

      添加完后重新加载 gradle 项目即可。

      配置程序运行入口

      在 mirai-core/src/jvmTest/kotlin sourceSet 中创建一个新的文件 RunMirai.kt 作为程序入口。

      fun main() {
          prepareEnvironmentForDebugRun()
      
          val bot = DebugRunHelper.newBot(123456789L, BotAuthorization { session, info ->
              session.authByPassword("password")
          }) {
              protocol = BotConfiguration.MiraiProtocol.ANDROID_PHONE
              fileBasedDeviceInfo()
          }
      
          runBlocking {
              bot.login()
              bot.join()
          }
      
      }
      

      prepareEnvironmentForDebugRun() 和 DebugRunHelper.newBot() 是位于 jvmTest 的工具函数。

      为测试模块添加依赖

      以 fix-protocol-version 为例,从 release 下载 jar,放在 mirai-core/src/jvmTest/lib 中。

      编辑 mirai-core/build.gradle.kts,找到以下配置代码:

      findByName("jvmTest")?.apply {
          dependencies {
              // ...
          }
      }
      

      在 dependencies 里添加:

      implementation(files("src/jvmTest/lib/fix-protocol-version-1.9.6.mirai2.jar"))
      implementation("org.asynchttpclient:async-http-client:2.12.3") // fix-protocol-version 的依赖项
      

      配置 EncryptService

      编辑 RunMirai.kt,在 DebugRunHelper.newBot() 之前手动注册 EncryptService。

      import net.mamoe.mirai.utils.Services
      import xyz.cssxsh.mirai.tool.KFCFactory
      
      fun main() {
          prepareEnvironmentForDebugRun()
      
          Services.register(
              EncryptService.Factory::class.qualifiedName!!,
              KFCFactory::class.qualifiedName!!,
          ) {
              KFCFactory(File("..."))
          }
      
          val bot = DebugRunHelper.newBot(...)
      }
      

      添加运行配置

      IDEA 点击 Edit Configurations,添加运行配置

      9a152ff0-ee2a-4627-bd37-01731aea546c-image.png

      bc3fd953-563c-481f-910d-7c9d8fed03dd-image.png

      注意 classpath of module 选择 mirai.mirai-core.jvmTest ,main class 为 RunMirai.kt 的类名。

      保存之后直接运行即可。

      b4b408d0-581e-4759-bbdb-8d1c8eeb9a9a-image.png

      注意:若准备提交 Pull Request,请注意不要提交 mirai-core/build.gradle.kts 的修改,我们只是临时修改构建配置,目的是登录测试。

      1 条回复 最后回复 回复 引用 0
      • Pinned by  StageGuard StageGuard 
      • 1 / 1
      • First post
        Last post
      Powered by Mamoe Technologies & NodeBB | 友情链接 | 服务监控 | Contact