diff --git a/mirai-core-timpc/src/commonMain/kotlin/net.mamoe.mirai.timpc/network/TIMPCBotNetworkHandler.kt b/mirai-core-timpc/src/commonMain/kotlin/net.mamoe.mirai.timpc/network/TIMPCBotNetworkHandler.kt index b1f3e6443..eb34395d1 100644 --- a/mirai-core-timpc/src/commonMain/kotlin/net.mamoe.mirai.timpc/network/TIMPCBotNetworkHandler.kt +++ b/mirai-core-timpc/src/commonMain/kotlin/net.mamoe.mirai.timpc/network/TIMPCBotNetworkHandler.kt @@ -255,9 +255,8 @@ internal class TIMPCBotNetworkHandler internal constructor(coroutineContext: Cor if (e.cause !is CancellationException) { bot.logger.error("Caught SendPacketInternalException: ${e.cause?.message}") } - val configuration = bot.configuration - delay(configuration.firstReconnectDelayMillis) - bot.tryReinitializeNetworkHandler(configuration, e) + delay(bot.configuration.firstReconnectDelayMillis) + bot.tryReinitializeNetworkHandler(e) return@withContext } finally { buffer.release(IoBuffer.Pool) @@ -468,7 +467,7 @@ internal class TIMPCBotNetworkHandler internal constructor(coroutineContext: Cor } == null) { bot.logger.warning("Heartbeat timed out") delay(configuration.firstReconnectDelayMillis) - bot.tryReinitializeNetworkHandler(configuration, HeartbeatTimeoutException()) + bot.tryReinitializeNetworkHandler(HeartbeatTimeoutException()) return@launch } } diff --git a/mirai-core-timpc/src/jvmTest/kotlin/PacketDebugger.kt b/mirai-core-timpc/src/jvmTest/kotlin/PacketDebugger.kt index a95de8e3f..51ec13712 100644 --- a/mirai-core-timpc/src/jvmTest/kotlin/PacketDebugger.kt +++ b/mirai-core-timpc/src/jvmTest/kotlin/PacketDebugger.kt @@ -379,7 +379,7 @@ when (idHex.substring(0, 5)) { internal object DebugNetworkHandler : BotNetworkHandler(), CoroutineScope { override val supervisor: CompletableJob = SupervisorJob() - override val bot: Bot = TIMPC.run { this@DebugNetworkHandler.Bot(qq ?: 0L, "", null) } + override val bot: Bot = TIMPC.Bot(qq ?: 0L, "", null) override suspend fun login() {} diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/ReceiveFriendAddRequestEvent.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/ReceiveFriendAddRequestEvent.kt index 0a7d591b1..fbb549286 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/ReceiveFriendAddRequestEvent.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/ReceiveFriendAddRequestEvent.kt @@ -22,6 +22,6 @@ class ReceiveFriendAddRequestEvent( * * @param remark 备注名, 不设置则需为 `null` */ - @JvmOverloads // TODO: 2019/12/17 协议抽象 + @JvmOverloads suspend fun approve(remark: String? = null): Unit = qq.bot.approveFriendAddRequest(qq.id, remark) } diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/io/OutputUtils.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/io/OutputUtils.kt index bc176c2c3..b5186aef2 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/io/OutputUtils.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/io/OutputUtils.kt @@ -33,11 +33,13 @@ fun BytePacketBuilder.writeShortLVByteArray(byteArray: ByteArray) { this.writeFully(byteArray) } -fun BytePacketBuilder.writeShortLVPacket(tag: UByte? = null, lengthOffset: ((Long) -> Long)? = null, builder: BytePacketBuilder.() -> Unit) = +fun BytePacketBuilder.writeShortLVPacket(tag: UByte? = null, lengthOffset: ((Long) -> Long)? = null, builder: BytePacketBuilder.() -> Unit): Int = BytePacketBuilder().apply(builder).build().use { if (tag != null) writeUByte(tag) - writeUShort((lengthOffset?.invoke(it.remaining) ?: it.remaining).coerceAtMostOrFail(0xFFFFL).toUShort()) + val length = (lengthOffset?.invoke(it.remaining) ?: it.remaining).coerceAtMostOrFail(0xFFFFL) + writeUShort(length.toUShort()) writePacket(it) + return length.toInt() } fun BytePacketBuilder.writeUVarIntLVPacket(tag: UByte? = null, lengthOffset: ((Long) -> Long)? = null, builder: BytePacketBuilder.() -> Unit) = diff --git a/mirai-demos/mirai-demo-android/src/main/kotlin/net/mamoe/mirai/demo/MiraiService.kt b/mirai-demos/mirai-demo-android/src/main/kotlin/net/mamoe/mirai/demo/MiraiService.kt index 9fd8fd2e0..9ec9138df 100644 --- a/mirai-demos/mirai-demo-android/src/main/kotlin/net/mamoe/mirai/demo/MiraiService.kt +++ b/mirai-demos/mirai-demo-android/src/main/kotlin/net/mamoe/mirai/demo/MiraiService.kt @@ -41,17 +41,17 @@ class MiraiService : Service() { private fun login(qq: Long, pwd: String) { GlobalScope.launch { - mBot = TIMPC.Bot(qq, pwd).apply { + mBot = TIMPC.Bot(qq, pwd) { + captchaSolver = { + val bytes = it.readBytes() + val bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.size) + mCaptchaDeferred = CompletableDeferred() + mCallback?.get()?.onCaptcha(bitmap) + mCaptchaDeferred.await() + } + }.apply { try { - login { - captchaSolver = { - val bytes = it.readBytes() - val bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.size) - mCaptchaDeferred = CompletableDeferred() - mCallback?.get()?.onCaptcha(bitmap) - mCaptchaDeferred.await() - } - } + login() mCallback?.get()?.onSuccess() } catch (e: LoginFailedException) { mCallback?.get()?.onFailed()