From 22ade1afea4b96a3ffacc014e653209c9d6d22c3 Mon Sep 17 00:00:00 2001 From: Him188 Date: Tue, 24 Mar 2020 15:32:29 +0800 Subject: [PATCH] Correct classname --- .../kotlin/net/mamoe/mirai/contact/Contact.kt | 3 +- ...aHappyAPI.kt => ContactJavaFriendlyAPI.kt} | 8 ++-- .../kotlin/net/mamoe/mirai/contact/Member.kt | 2 +- .../kotlin/net.mamoe.mirai/contact/Contact.kt | 2 +- .../kotlin/net.mamoe.mirai/contact/Group.kt | 43 +++++++++++++++++-- .../kotlin/net.mamoe.mirai/contact/Member.kt | 2 +- .../net.mamoe.mirai/contact/jvmHappy.kt | 4 +- .../kotlin/net/mamoe/mirai/contact/Contact.kt | 3 +- ...aHappyAPI.kt => ContactJavaFriendlyAPI.kt} | 8 ++-- .../kotlin/net/mamoe/mirai/contact/Member.kt | 3 +- 10 files changed, 58 insertions(+), 20 deletions(-) rename mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/{ContactJavaHappyAPI.kt => ContactJavaFriendlyAPI.kt} (98%) rename mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/contact/{ContactJavaHappyAPI.kt => ContactJavaFriendlyAPI.kt} (98%) diff --git a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/Contact.kt b/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/Contact.kt index e39b3ff62..fcca591f4 100644 --- a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/Contact.kt +++ b/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/Contact.kt @@ -33,12 +33,13 @@ import net.mamoe.mirai.utils.WeakRefProperty * @author Him188moe */ @OptIn(MiraiInternalAPI::class, JavaHappyAPI::class) -actual abstract class Contact : CoroutineScope, ContactJavaHappyAPI() { +actual abstract class Contact : CoroutineScope, ContactJavaFriendlyAPI() { /** * 这个联系人所属 [Bot]. */ @WeakRefProperty actual abstract val bot: Bot + /** * 可以是 QQ 号码或者群号码. * diff --git a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/ContactJavaHappyAPI.kt b/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/ContactJavaFriendlyAPI.kt similarity index 98% rename from mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/ContactJavaHappyAPI.kt rename to mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/ContactJavaFriendlyAPI.kt index 9ccb5f3de..b83210719 100644 --- a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/ContactJavaHappyAPI.kt +++ b/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/ContactJavaFriendlyAPI.kt @@ -33,11 +33,11 @@ import java.util.concurrent.Future @MiraiInternalAPI @JavaHappyAPI @Suppress("INAPPLICABLE_JVM_NAME", "FunctionName", "unused") -actual abstract class ContactJavaHappyAPI { +actual abstract class ContactJavaFriendlyAPI { private inline fun runBlocking(crossinline block: suspend Contact.() -> R): R { @Suppress("CAST_NEVER_SUCCEEDS") - return kotlinx.coroutines.runBlocking { block(this@ContactJavaHappyAPI as Contact) } + return kotlinx.coroutines.runBlocking { block(this@ContactJavaFriendlyAPI as Contact) } } private inline fun future(crossinline block: suspend Contact.() -> R): Future { @@ -207,10 +207,10 @@ actual abstract class ContactJavaHappyAPI { @Suppress("INAPPLICABLE_JVM_NAME", "FunctionName", "unused", "unused") @MiraiInternalAPI @JavaHappyAPI -actual abstract class MemberJavaHappyAPI : QQ() { +actual abstract class MemberJavaFriendlyAPI : QQ() { private inline fun runBlocking(crossinline block: suspend Member.() -> R): R { @Suppress("CAST_NEVER_SUCCEEDS") - return kotlinx.coroutines.runBlocking { block(this@MemberJavaHappyAPI as Member) } + return kotlinx.coroutines.runBlocking { block(this@MemberJavaFriendlyAPI as Member) } } private inline fun future(crossinline block: suspend Member.() -> R): Future { diff --git a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/Member.kt b/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/Member.kt index 5c8ed9d37..083808cc1 100644 --- a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/Member.kt +++ b/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/Member.kt @@ -26,7 +26,7 @@ import net.mamoe.mirai.utils.WeakRefProperty */ @Suppress("INAPPLICABLE_JVM_NAME") @OptIn(MiraiInternalAPI::class, JavaHappyAPI::class) -actual abstract class Member : MemberJavaHappyAPI() { +actual abstract class Member : MemberJavaFriendlyAPI() { /** * 所在的群. */ diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Contact.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Contact.kt index 2eef49c68..941207161 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Contact.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Contact.kt @@ -36,7 +36,7 @@ import kotlin.jvm.JvmSynthetic * @author Him188moe */ // 不要删除多平台结构 !!! kotlin bug @OptIn(MiraiInternalAPI::class, JavaHappyAPI::class) -expect abstract class Contact() : CoroutineScope, ContactJavaHappyAPI { +expect abstract class Contact() : CoroutineScope, ContactJavaFriendlyAPI { /** * 这个联系人所属 [Bot]. */ diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Group.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Group.kt index 25d639ff3..8e7d7dab3 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Group.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Group.kt @@ -23,6 +23,7 @@ import net.mamoe.mirai.message.data.OfflineGroupImage import net.mamoe.mirai.utils.ExternalImage import net.mamoe.mirai.utils.MiraiExperimentalAPI import net.mamoe.mirai.utils.OverFileSizeMaxException +import net.mamoe.mirai.utils.SinceMirai import kotlin.jvm.JvmSynthetic /** @@ -147,7 +148,6 @@ expect abstract class Group() : Contact, CoroutineScope { abstract operator fun contains(id: Long): Boolean - /** * 让机器人退出这个群. 机器人必须为非群主才能退出. 否则将会失败 */ @@ -233,9 +233,6 @@ internal object CommonGroupCalculations { in 310 + 3800 - 310..499 + 3800 - 310 -> left -= 3800 - 310 } - return left * 1000000L + groupUin % 1000000L - } -} /** * 返回机器人是否正在被禁言 @@ -243,3 +240,41 @@ internal object CommonGroupCalculations { * @see Group.botMuteRemaining 剩余禁言时间 */ inline val Group.isBotMuted: Boolean get() = this.botMuteRemaining != 0 + + +internal object CommonGroupCalculations { + /** + * by @kar98k + */ + fun calculateGroupUinByGroupCode(groupCode: Long): Long { + var left: Long = groupCode / 1000000L + + when (left) { + in 0..10 -> left += 202 + in 11..19 -> left += 480 - 11 + in 20..66 -> left += 2100 - 20 + in 67..156 -> left += 2010 - 67 + in 157..209 -> left += 2147 - 157 + in 210..309 -> left += 4100 - 210 + in 310..499 -> left += 3800 - 310 + } + + return left * 1000000L + groupCode % 1000000L + } + + fun calculateGroupCodeByGroupUin(groupUin: Long): Long { + var left: Long = groupUin / 1000000L + + when (left) { + in 0 + 202..10 + 202 -> left -= 202 + in 11 + 480 - 11..19 + 480 - 11 -> left -= 480 - 11 + in 20 + 2100 - 20..66 + 2100 - 20 -> left -= 2100 - 20 + in 67 + 2010 - 67..156 + 2010 - 67 -> left -= 2010 - 67 + in 157 + 2147 - 157..209 + 2147 - 157 -> left -= 2147 - 157 + in 210 + 4100 - 210..309 + 4100 - 210 -> left -= 4100 - 210 + in 310 + 3800 - 310..499 + 3800 - 310 -> left -= 3800 - 310 + } + + return left * 1000000L + groupUin % 1000000L + } +} diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Member.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Member.kt index 54a5c574a..2c48dcf8a 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Member.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Member.kt @@ -27,7 +27,7 @@ import kotlin.time.ExperimentalTime */ // 不要删除多平台结构, kotlin bug @Suppress("INAPPLICABLE_JVM_NAME") @OptIn(MiraiInternalAPI::class, JavaHappyAPI::class) -expect abstract class Member() : MemberJavaHappyAPI { +expect abstract class Member() : MemberJavaFriendlyAPI { /** * 所在的群. */ diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/jvmHappy.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/jvmHappy.kt index 3653f8fac..3bcfe4d26 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/jvmHappy.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/jvmHappy.kt @@ -17,11 +17,11 @@ import net.mamoe.mirai.utils.MiraiInternalAPI */ @MiraiInternalAPI @JavaHappyAPI -expect abstract class ContactJavaHappyAPI +expect abstract class ContactJavaFriendlyAPI /** * [Member] 中为了让 `Java` 更容易调用的 API */ @MiraiInternalAPI @JavaHappyAPI -expect abstract class MemberJavaHappyAPI : QQ \ No newline at end of file +expect abstract class MemberJavaFriendlyAPI : QQ \ No newline at end of file diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/contact/Contact.kt b/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/contact/Contact.kt index 05f354eab..1e6267e86 100644 --- a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/contact/Contact.kt +++ b/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/contact/Contact.kt @@ -32,12 +32,13 @@ import net.mamoe.mirai.utils.WeakRefProperty * @author Him188moe */ @OptIn(MiraiInternalAPI::class, JavaHappyAPI::class) -actual abstract class Contact : CoroutineScope, ContactJavaHappyAPI() { +actual abstract class Contact : CoroutineScope, ContactJavaFriendlyAPI() { /** * 这个联系人所属 [Bot]. */ @WeakRefProperty actual abstract val bot: Bot + /** * 可以是 QQ 号码或者群号码. * diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/contact/ContactJavaHappyAPI.kt b/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/contact/ContactJavaFriendlyAPI.kt similarity index 98% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/contact/ContactJavaHappyAPI.kt rename to mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/contact/ContactJavaFriendlyAPI.kt index b6b4fd77b..47a8aabba 100644 --- a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/contact/ContactJavaHappyAPI.kt +++ b/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/contact/ContactJavaFriendlyAPI.kt @@ -33,11 +33,11 @@ import java.util.concurrent.Future @MiraiInternalAPI @JavaHappyAPI @Suppress("INAPPLICABLE_JVM_NAME", "FunctionName", "unused") -actual abstract class ContactJavaHappyAPI { +actual abstract class ContactJavaFriendlyAPI { private inline fun runBlocking(crossinline block: suspend Contact.() -> R): R { @Suppress("CAST_NEVER_SUCCEEDS") - return kotlinx.coroutines.runBlocking { block(this@ContactJavaHappyAPI as Contact) } + return kotlinx.coroutines.runBlocking { block(this@ContactJavaFriendlyAPI as Contact) } } private inline fun future(crossinline block: suspend Contact.() -> R): Future { @@ -205,10 +205,10 @@ actual abstract class ContactJavaHappyAPI { @Suppress("INAPPLICABLE_JVM_NAME", "FunctionName", "unused", "unused") @MiraiInternalAPI @JavaHappyAPI -actual abstract class MemberJavaHappyAPI : QQ() { +actual abstract class MemberJavaFriendlyAPI : QQ() { private inline fun runBlocking(crossinline block: suspend Member.() -> R): R { @Suppress("CAST_NEVER_SUCCEEDS") - return kotlinx.coroutines.runBlocking { block(this@MemberJavaHappyAPI as Member) } + return kotlinx.coroutines.runBlocking { block(this@MemberJavaFriendlyAPI as Member) } } private inline fun future(crossinline block: suspend Member.() -> R): Future { diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/contact/Member.kt b/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/contact/Member.kt index 830174c39..c785ce53a 100644 --- a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/contact/Member.kt +++ b/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/contact/Member.kt @@ -26,12 +26,13 @@ import net.mamoe.mirai.utils.WeakRefProperty */ @OptIn(MiraiInternalAPI::class, JavaHappyAPI::class) @Suppress("INAPPLICABLE_JVM_NAME") -actual abstract class Member : MemberJavaHappyAPI() { +actual abstract class Member : MemberJavaFriendlyAPI() { /** * 所在的群. */ @WeakRefProperty actual abstract val group: Group + /** * 成员的权限, 动态更新. *