mirror of
https://github.com/mamoe/mirai.git
synced 2025-04-09 02:10:10 +08:00
Support heartbeatStrategy in autologin config (#1903)
* support heartbeatStrategy in autologin config
* doc: update tips
8d641c1d4c/docs/Bots.md
This commit is contained in:
parent
77e2a5c3b4
commit
3d3a995aae
mirai-console/backend/mirai-console
src/internal
test
@ -256,6 +256,16 @@ internal class MiraiConsoleImplementationBridge(
|
||||
)
|
||||
}
|
||||
}
|
||||
account.configuration[ConfigurationKey.heartbeatStrategy]?.let { heartStrate ->
|
||||
this.heartbeatStrategy = runCatching {
|
||||
BotConfiguration.HeartbeatStrategy.valueOf(heartStrate.toString())
|
||||
}.getOrElse {
|
||||
throw IllegalArgumentException(
|
||||
"Bad auto-login config value for `heartbeatStrategy` for account $id",
|
||||
it
|
||||
)
|
||||
}
|
||||
}
|
||||
account.configuration[ConfigurationKey.device]?.let { device ->
|
||||
fileBasedDeviceInfo(device.toString())
|
||||
}
|
||||
|
@ -39,6 +39,7 @@ public class AutoLoginConfig : AutoSavePluginConfig("AutoLogin") {
|
||||
"protocol": "ANDROID_PHONE" / "ANDROID_PAD" / "ANDROID_WATCH" /"MAC" / "IPAD"
|
||||
"device": "device.json"
|
||||
"enable": true
|
||||
"heartbeatStrategy": "STAT_HB" / "REGISTER" / "NONE"
|
||||
"""
|
||||
)
|
||||
val configuration: Map<ConfigurationKey, @Serializable(with = YamlDynamicSerializer::class) Any> = mapOf(),
|
||||
@ -69,6 +70,7 @@ public class AutoLoginConfig : AutoSavePluginConfig("AutoLogin") {
|
||||
protocol,
|
||||
device,
|
||||
enable,
|
||||
heartbeatStrategy,
|
||||
|
||||
;
|
||||
|
||||
@ -106,7 +108,8 @@ public class AutoLoginConfig : AutoSavePluginConfig("AutoLogin") {
|
||||
configuration = mapOf(
|
||||
Account.ConfigurationKey.protocol to "ANDROID_PHONE",
|
||||
Account.ConfigurationKey.device to "device.json",
|
||||
Account.ConfigurationKey.enable to true
|
||||
Account.ConfigurationKey.enable to true,
|
||||
Account.ConfigurationKey.heartbeatStrategy to "STAT_HB"
|
||||
)
|
||||
)
|
||||
)
|
||||
|
@ -0,0 +1,45 @@
|
||||
/*
|
||||
* Copyright 2019-2022 Mamoe Technologies and contributors.
|
||||
*
|
||||
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
|
||||
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
|
||||
*
|
||||
* https://github.com/mamoe/mirai/blob/dev/LICENSE
|
||||
*/
|
||||
|
||||
package net.mamoe.mirai.console.configuration
|
||||
|
||||
import net.mamoe.mirai.console.MiraiConsoleImplementation.Companion.start
|
||||
import net.mamoe.mirai.console.internal.data.builtins.AutoLoginConfig
|
||||
import net.mamoe.mirai.console.testFramework.AbstractConsoleInstanceTest
|
||||
import net.mamoe.mirai.console.testFramework.MockConsoleImplementation
|
||||
import net.mamoe.mirai.event.events.BotOnlineEvent
|
||||
import net.mamoe.mirai.event.globalEventChannel
|
||||
import net.mamoe.mirai.utils.BotConfiguration
|
||||
import org.junit.jupiter.api.Disabled
|
||||
import org.junit.jupiter.api.Test
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
class AutoLoginTest : AbstractConsoleInstanceTest() {
|
||||
|
||||
@Disabled // no mock login
|
||||
@Test
|
||||
fun testHeartbeatStrategy() {
|
||||
stopConsole() // stop previous console
|
||||
val console = MockConsoleImplementation()
|
||||
val config = AutoLoginConfig()
|
||||
config.accounts.clear()
|
||||
config.accounts.add(
|
||||
AutoLoginConfig.Account(
|
||||
"111",
|
||||
AutoLoginConfig.Account.Password(AutoLoginConfig.Account.PasswordKind.PLAIN, "pwd"),
|
||||
configuration = mapOf(AutoLoginConfig.Account.ConfigurationKey.heartbeatStrategy to "REGISTER")
|
||||
)
|
||||
)
|
||||
console.consoleDataScope.addAndReloadConfig(config)
|
||||
console.globalEventChannel().subscribeAlways<BotOnlineEvent> {
|
||||
assertEquals(BotConfiguration.HeartbeatStrategy.REGISTER, this.bot.configuration.heartbeatStrategy)
|
||||
}
|
||||
console.start()
|
||||
}
|
||||
}
|
@ -10,7 +10,6 @@
|
||||
package net.mamoe.mirai.console.data
|
||||
|
||||
import net.mamoe.mirai.console.MiraiConsole
|
||||
import net.mamoe.mirai.console.testFramework.AbstractConsoleInstanceTest
|
||||
import net.mamoe.mirai.console.internal.data.mkdir
|
||||
import net.mamoe.mirai.console.plugin.PluginManager
|
||||
import net.mamoe.mirai.console.plugin.PluginManager.INSTANCE.load
|
||||
@ -18,7 +17,7 @@ import net.mamoe.mirai.console.plugin.id
|
||||
import net.mamoe.mirai.console.plugin.jvm.JvmPluginDescription
|
||||
import net.mamoe.mirai.console.plugin.jvm.KotlinPlugin
|
||||
import net.mamoe.mirai.console.plugin.name
|
||||
import org.junit.jupiter.api.Disabled
|
||||
import net.mamoe.mirai.console.testFramework.AbstractConsoleInstanceTest
|
||||
import org.junit.jupiter.api.Test
|
||||
|
||||
class PluginMovingTests : AbstractConsoleInstanceTest() {
|
||||
@ -30,7 +29,7 @@ class PluginMovingTests : AbstractConsoleInstanceTest() {
|
||||
|
||||
private fun mkdir(abstractPath: String) = PluginManager.pluginsDataPath.resolve(abstractPath).mkdir()
|
||||
|
||||
@Disabled // disabled since test framework fails
|
||||
//@Disabled // disabled since test framework fails
|
||||
@Test
|
||||
fun movingPluginPath() {
|
||||
// Normal move
|
||||
|
Loading…
Reference in New Issue
Block a user