From d5833ced26abea4cc876dd795eada7fc8146e007 Mon Sep 17 00:00:00 2001 From: Him188 Date: Sun, 15 Dec 2019 15:58:27 +0800 Subject: [PATCH 1/4] Remove mistaking comments --- mirai-core/src/commonMain/kotlin/net.mamoe.mirai/BotImpl.kt | 2 -- 1 file changed, 2 deletions(-) diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/BotImpl.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/BotImpl.kt index 2efa4d328d..342423bf15 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/BotImpl.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/BotImpl.kt @@ -117,7 +117,6 @@ internal class BotImpl @PublishedApi internal constructor( @JvmSynthetic override fun getQQ(id: UInt): QQ = qqs.delegate.getOrAdd(id) { QQ(this, id, coroutineContext) } - // NO INLINE!! to help Java @UseExperimental(MiraiInternalAPI::class) override fun getQQ(@PositiveNumbers id: Long): QQ = getQQ(id.coerceAtLeastOrFail(0).toUInt()) @@ -139,7 +138,6 @@ internal class BotImpl @PublishedApi internal constructor( return groups.delegate.getOrAdd(id.value) { Group(this, id, info, coroutineContext) } } - // NO INLINE!! to help Java @UseExperimental(MiraiInternalAPI::class) override suspend fun getGroup(@PositiveNumbers id: Long): Group = id.coerceAtLeastOrFail(0).toUInt().let { groups.delegate.getOrNull(it) ?: inline { From 6890ebf8e68adb75d28dc120414ff4d168e9d487 Mon Sep 17 00:00:00 2001 From: Him188 Date: Sun, 15 Dec 2019 16:47:58 +0800 Subject: [PATCH 2/4] Create main.yml --- .github/workflows/main.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 .github/workflows/main.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000000..8c523dad4f --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,14 @@ +name: CI + +on: [push] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v1 + - name: Gradle Android + uses: Raul6469/android-gradle-action@1.0.0 + From 3c408b90e0f19f931084ee1a540ef24af49e3460 Mon Sep 17 00:00:00 2001 From: Him188 Date: Sun, 15 Dec 2019 16:58:15 +0800 Subject: [PATCH 3/4] Fix GroupId.toGroupInternalId --- .../contact/GroupIdConvertions.kt | 26 ++++++++++--------- .../test/packetdebugger/PacketDebugger.kt | 4 +-- .../mirai/contact/GroupIdConversionsKtTest.kt | 10 ++++++- 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/GroupIdConvertions.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/GroupIdConvertions.kt index e383d3bb86..342c317688 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/GroupIdConvertions.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/GroupIdConvertions.kt @@ -13,20 +13,22 @@ fun GroupId.toInternalId(): GroupInternalId { if (this.value <= `10EXP6`) { return GroupInternalId(this.value) } - val left: Long = this.value.toString().dropLast(6).toLong() - val right: Long = this.value.toString().takeLast(6).toLong() + val stringValue = this.value.toString() + + fun plusLeft(leftIncrement: Int, rightLength: Int): String = + stringValue.let { (it.dropLast(rightLength).toLong() + leftIncrement).toString() + it.takeLast(rightLength) } return GroupInternalId( - when (left) { - in 1..10 -> ((left + 202).toString() + right.toString()).toUInt() - in 11..19 -> ((left + 469).toString() + right.toString()).toUInt() - in 20..66 -> ((left + 208).toString() + right.toString()).toUInt() - in 67..156 -> ((left + 1943).toString() + right.toString()).toUInt() - in 157..209 -> ((left + 199).toString() + right.toString()).toUInt() - in 210..309 -> ((left + 389).toString() + right.toString()).toUInt() - in 310..499 -> ((left + 349).toString() + right.toString()).toUInt() - else -> this.value - } + when (stringValue.dropLast(6).toInt()) { + in 1..10 -> plusLeft(202, 6) + in 11..19 -> plusLeft(469, 6) + in 20..66 -> plusLeft(208, 7) + in 67..156 -> plusLeft(1943, 6) + in 157..209 -> plusLeft(1997, 7) + in 210..309 -> plusLeft(389, 7) + in 310..499 -> plusLeft(349, 7) + else -> null + }?.toUInt() ?: this.value ) } diff --git a/mirai-core/src/jvmTest/kotlin/mirai/test/packetdebugger/PacketDebugger.kt b/mirai-core/src/jvmTest/kotlin/mirai/test/packetdebugger/PacketDebugger.kt index 0d078bde9e..bf333577c4 100644 --- a/mirai-core/src/jvmTest/kotlin/mirai/test/packetdebugger/PacketDebugger.kt +++ b/mirai-core/src/jvmTest/kotlin/mirai/test/packetdebugger/PacketDebugger.kt @@ -183,13 +183,13 @@ internal object PacketDebugger { * 7. 运行完 `mov eax,dword ptr ss:[ebp+10]` * 8. 查看内存, `eax` 到 `eax+10` 的 16 字节就是 `sessionKey` */ - val sessionKey: SessionKey = SessionKey("F3 4A 4E F4 79 C4 92 62 EF 0F D8 6E D3 AB E3 80".hexToBytes()) + val sessionKey: SessionKey = SessionKey("95 F3 24 8E 7B B6 62 AA 98 C0 EE 45 CE CE 2B 69".hexToBytes()) // TODO: 2019/12/7 无法访问 internal 是 kotlin bug, KT-34849 /** * null 则不筛选 */ - val qq: UInt? = null + val qq: UInt? = 761025446u /** * 打开后则记录每一个包到文件. */ diff --git a/mirai-core/src/jvmTest/kotlin/net/mamoe/mirai/contact/GroupIdConversionsKtTest.kt b/mirai-core/src/jvmTest/kotlin/net/mamoe/mirai/contact/GroupIdConversionsKtTest.kt index 2c03fae542..505b6e282f 100644 --- a/mirai-core/src/jvmTest/kotlin/net/mamoe/mirai/contact/GroupIdConversionsKtTest.kt +++ b/mirai-core/src/jvmTest/kotlin/net/mamoe/mirai/contact/GroupIdConversionsKtTest.kt @@ -4,9 +4,17 @@ import net.mamoe.mirai.test.shouldBeEqualTo import org.junit.Test import kotlin.random.Random +@UseExperimental(ExperimentalUnsignedTypes::class) internal class GroupIdConversionsKtTest { - @UseExperimental(ExperimentalUnsignedTypes::class) + @Test + fun checkToInternalId() { + GroupId(221056495u).toInternalId().value shouldBeEqualTo 4111056495u + // 61 056495 + //4111 056495 + } + + @Test fun toInternalId() { repeat(1000000) { _ -> From 3f8eb2c0baa7b4e69e96ca41bd91cea89e162005 Mon Sep 17 00:00:00 2001 From: Him188 Date: Sun, 15 Dec 2019 17:00:16 +0800 Subject: [PATCH 4/4] Fix GroupId.toGroupInternalId, 0.8.2 --- UpdateLog.md | 6 +++++- gradle.properties | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/UpdateLog.md b/UpdateLog.md index 336354f3af..0fb6a6c63b 100644 --- a/UpdateLog.md +++ b/UpdateLog.md @@ -4,7 +4,11 @@ 开发版本. 频繁更新, 不保证高稳定性 -### `0.8.1` *2019/12/15* +### `0.8.2` *2019/12/15* +- 修复 GroupId.toGroupInternalId 错误 +- 修复解析群消息时小概率出现的一个错误 + +### `0.8.1` *2019/12/15* - 修复有时群资料无法获取的情况 - 现在 `At.qq`, `Long.qq` 等函数不再是 `suspend` diff --git a/gradle.properties b/gradle.properties index 35e0fca5dd..467cba0c93 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ # style guide kotlin.code.style=official # config -mirai_version=0.8.1 +mirai_version=0.8.2 kotlin.incremental.multiplatform=true kotlin.parallel.tasks.in.project=true # kotlin