Merge remote-tracking branch 'origin/master'

This commit is contained in:
liujiahua123123 2019-12-15 17:00:29 +08:00
commit 5f7b72229c
7 changed files with 45 additions and 19 deletions

14
.github/workflows/main.yml vendored Normal file
View File

@ -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

View File

@ -4,6 +4,10 @@
开发版本. 频繁更新, 不保证高稳定性 开发版本. 频繁更新, 不保证高稳定性
### `0.8.2` *2019/12/15*
- 修复 GroupId.toGroupInternalId 错误
- 修复解析群消息时小概率出现的一个错误
### `0.8.1` *2019/12/15* ### `0.8.1` *2019/12/15*
- 修复有时群资料无法获取的情况 - 修复有时群资料无法获取的情况
- 现在 `At.qq`, `Long.qq` 等函数不再是 `suspend` - 现在 `At.qq`, `Long.qq` 等函数不再是 `suspend`

View File

@ -1,7 +1,7 @@
# style guide # style guide
kotlin.code.style=official kotlin.code.style=official
# config # config
mirai_version=0.8.1 mirai_version=0.8.2
kotlin.incremental.multiplatform=true kotlin.incremental.multiplatform=true
kotlin.parallel.tasks.in.project=true kotlin.parallel.tasks.in.project=true
# kotlin # kotlin

View File

@ -117,7 +117,6 @@ internal class BotImpl @PublishedApi internal constructor(
@JvmSynthetic @JvmSynthetic
override fun getQQ(id: UInt): QQ = qqs.delegate.getOrAdd(id) { QQ(this, id, coroutineContext) } override fun getQQ(id: UInt): QQ = qqs.delegate.getOrAdd(id) { QQ(this, id, coroutineContext) }
// NO INLINE!! to help Java
@UseExperimental(MiraiInternalAPI::class) @UseExperimental(MiraiInternalAPI::class)
override fun getQQ(@PositiveNumbers id: Long): QQ = getQQ(id.coerceAtLeastOrFail(0).toUInt()) 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) } return groups.delegate.getOrAdd(id.value) { Group(this, id, info, coroutineContext) }
} }
// NO INLINE!! to help Java
@UseExperimental(MiraiInternalAPI::class) @UseExperimental(MiraiInternalAPI::class)
override suspend fun getGroup(@PositiveNumbers id: Long): Group = id.coerceAtLeastOrFail(0).toUInt().let { override suspend fun getGroup(@PositiveNumbers id: Long): Group = id.coerceAtLeastOrFail(0).toUInt().let {
groups.delegate.getOrNull(it) ?: inline { groups.delegate.getOrNull(it) ?: inline {

View File

@ -13,20 +13,22 @@ fun GroupId.toInternalId(): GroupInternalId {
if (this.value <= `10EXP6`) { if (this.value <= `10EXP6`) {
return GroupInternalId(this.value) return GroupInternalId(this.value)
} }
val left: Long = this.value.toString().dropLast(6).toLong() val stringValue = this.value.toString()
val right: Long = this.value.toString().takeLast(6).toLong()
fun plusLeft(leftIncrement: Int, rightLength: Int): String =
stringValue.let { (it.dropLast(rightLength).toLong() + leftIncrement).toString() + it.takeLast(rightLength) }
return GroupInternalId( return GroupInternalId(
when (left) { when (stringValue.dropLast(6).toInt()) {
in 1..10 -> ((left + 202).toString() + right.toString()).toUInt() in 1..10 -> plusLeft(202, 6)
in 11..19 -> ((left + 469).toString() + right.toString()).toUInt() in 11..19 -> plusLeft(469, 6)
in 20..66 -> ((left + 208).toString() + right.toString()).toUInt() in 20..66 -> plusLeft(208, 7)
in 67..156 -> ((left + 1943).toString() + right.toString()).toUInt() in 67..156 -> plusLeft(1943, 6)
in 157..209 -> ((left + 199).toString() + right.toString()).toUInt() in 157..209 -> plusLeft(1997, 7)
in 210..309 -> ((left + 389).toString() + right.toString()).toUInt() in 210..309 -> plusLeft(389, 7)
in 310..499 -> ((left + 349).toString() + right.toString()).toUInt() in 310..499 -> plusLeft(349, 7)
else -> this.value else -> null
} }?.toUInt() ?: this.value
) )
} }

View File

@ -183,13 +183,13 @@ internal object PacketDebugger {
* 7. 运行完 `mov eax,dword ptr ss:[ebp+10]` * 7. 运行完 `mov eax,dword ptr ss:[ebp+10]`
* 8. 查看内存, `eax` `eax+10` 16 字节就是 `sessionKey` * 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 // TODO: 2019/12/7 无法访问 internal 是 kotlin bug, KT-34849
/** /**
* null 则不筛选 * null 则不筛选
*/ */
val qq: UInt? = null val qq: UInt? = 761025446u
/** /**
* 打开后则记录每一个包到文件. * 打开后则记录每一个包到文件.
*/ */

View File

@ -4,9 +4,17 @@ import net.mamoe.mirai.test.shouldBeEqualTo
import org.junit.Test import org.junit.Test
import kotlin.random.Random import kotlin.random.Random
@UseExperimental(ExperimentalUnsignedTypes::class)
internal class GroupIdConversionsKtTest { internal class GroupIdConversionsKtTest {
@UseExperimental(ExperimentalUnsignedTypes::class) @Test
fun checkToInternalId() {
GroupId(221056495u).toInternalId().value shouldBeEqualTo 4111056495u
// 61 056495
//4111 056495
}
@Test @Test
fun toInternalId() { fun toInternalId() {
repeat(1000000) { _ -> repeat(1000000) { _ ->