为测试 mirai 添加外置 EncryptService
-
我们为 mirai 添加了新的协议内容,需要登录测试但被风控登不上时,就需要配置外置 EncryptService 辅助登录。
关闭 android target
PC 测试运行需要关闭 android target,在 mirai 项目根目录下创建
local.properties,添加以下属性:projects.mirai-core.targets=jvm;!android添加完后重新加载 gradle 项目即可。
配置程序运行入口
在
mirai-core/src/jvmTest/kotlinsourceSet 中创建一个新的文件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,添加运行配置


注意 classpath of module 选择
mirai.mirai-core.jvmTest,main class 为RunMirai.kt的类名。保存之后直接运行即可。

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