From f28e50e0af26532a32f6b742972ac06c9aee1f8d Mon Sep 17 00:00:00 2001 From: Him188 Date: Thu, 9 Apr 2020 16:00:53 +0800 Subject: [PATCH] Add fail-fast check --- .../kotlin/net/mamoe/mirai/qqandroid/contact/MemberImpl.kt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/MemberImpl.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/MemberImpl.kt index c51261e0b..9a0b42624 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/MemberImpl.kt +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/MemberImpl.kt @@ -196,9 +196,13 @@ internal class MemberImpl constructor( net.mamoe.mirai.event.events.MemberUnmuteEvent(this@MemberImpl, null).broadcast() } + @OptIn(MiraiInternalAPI::class) @JvmSynthetic override suspend fun kick(message: String) { checkBotPermissionHigherThanThis() + check(group.members.getOrNull(this.id) != null) { + "Member ${this.id} had already been kicked from group ${group.id}" + } bot.network.run { val response: TroopManagement.Kick.Response = TroopManagement.Kick( client = bot.client, @@ -208,6 +212,7 @@ internal class MemberImpl constructor( check(response.success) { "kick failed: ${response.ret}" } + group.members.delegate.removeIf { it.id == this@MemberImpl.id } MemberLeaveEvent.Kick(this@MemberImpl, null).broadcast() } }