From c7c83bcd03d7220152d79f1e14c38f28180c745b Mon Sep 17 00:00:00 2001 From: Him188 Date: Fri, 22 Jan 2021 11:00:04 +0800 Subject: [PATCH] Add BotConfiguration.autoReconnectOnForceOffline, close #835 --- .../src/commonMain/kotlin/event/events/bot.kt | 2 +- .../kotlin/utils/BotConfiguration.kt | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/mirai-core-api/src/commonMain/kotlin/event/events/bot.kt b/mirai-core-api/src/commonMain/kotlin/event/events/bot.kt index 23b6539ee..e8360d59c 100644 --- a/mirai-core-api/src/commonMain/kotlin/event/events/bot.kt +++ b/mirai-core-api/src/commonMain/kotlin/event/events/bot.kt @@ -60,7 +60,7 @@ public sealed class BotOfflineEvent : BotEvent, AbstractEvent() { public val title: String, public val message: String, ) : BotOfflineEvent(), Packet, BotPassiveEvent { - override var reconnect: Boolean = false + override var reconnect: Boolean = bot.configuration.autoReconnectOnForceOffline } /** diff --git a/mirai-core-api/src/commonMain/kotlin/utils/BotConfiguration.kt b/mirai-core-api/src/commonMain/kotlin/utils/BotConfiguration.kt index 1eec11725..f412c07f5 100644 --- a/mirai-core-api/src/commonMain/kotlin/utils/BotConfiguration.kt +++ b/mirai-core-api/src/commonMain/kotlin/utils/BotConfiguration.kt @@ -15,6 +15,7 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.SupervisorJob import kotlinx.serialization.json.Json import net.mamoe.mirai.Bot +import net.mamoe.mirai.event.events.BotOfflineEvent import java.io.File import kotlin.coroutines.CoroutineContext import kotlin.coroutines.EmptyCoroutineContext @@ -95,6 +96,15 @@ public open class BotConfiguration { // open for Java /** 最多尝试多少次重连 */ public var reconnectionRetryTimes: Int = Int.MAX_VALUE + /** + * 在被挤下线时 ([BotOfflineEvent.Force]) 自动重连. 默认为 `false`. + * + * 其他情况掉线都默认会自动重连, 详见 [BotOfflineEvent.reconnect] + * + * @since 2.1 + */ + public var autoReconnectOnForceOffline: Boolean = false + /** * 验证码处理器 * @@ -129,6 +139,14 @@ public open class BotConfiguration { // open for Java } }.getOrElse { Json {} } + /** + * 设置 [autoReconnectOnForceOffline] 为 `true`, 即在被挤下线时自动重连. + * @since 2.1 + */ + public fun autoReconnectOnForceOffline() { + autoReconnectOnForceOffline = true + } + /** * 使用随机设备信息. *