Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
liujiahua123123 committed Dec 15, 2019
2 parents 0ea9d66 + 3f8eb2c commit 5f7b722
Show file tree
Hide file tree
Showing 7 changed files with 45 additions and 19 deletions.
14 changes: 14 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
name: CI

on: [push]

jobs:
build:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v1
- name: Gradle Android
uses: Raul6469/[email protected]

6 changes: 5 additions & 1 deletion UpdateLog.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`

Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 0 additions & 2 deletions mirai-core/src/commonMain/kotlin/net.mamoe.mirai/BotImpl.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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())

Expand All @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
/**
* 打开后则记录每一个包到文件.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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) { _ ->
Expand Down

0 comments on commit 5f7b722

Please sign in to comment.