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 c983ff475..b3140ee04 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
@@ -55,6 +55,7 @@ internal class TIMPCBotNetworkHandler internal constructor(coroutineContext: Cor
 
     private var heartbeatJob: Job? = null
 
+    @MiraiInternalAPI
     override suspend fun login() {
 
         TIMProtocol.SERVER_IP.shuffled().forEach { ip ->
diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/io/InputUtils.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/io/InputUtils.kt
index 3bd8002ae..5b87a8c70 100644
--- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/io/InputUtils.kt
+++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/io/InputUtils.kt
@@ -54,6 +54,10 @@ fun ByteReadPacket.readIoBuffer(
     n: Int = remaining.toInt()//not that safe but adequate
 ): IoBuffer = IoBuffer.Pool.borrow().also { this.readFully(it, n) }
 
+fun ByteReadPacket.readPacket(
+    n: Int = remaining.toInt()//not that safe but adequate
+): ByteReadPacket = this.readBytes(n).toReadPacket()
+
 fun ByteReadPacket.readIoBuffer(n: Short) = this.readIoBuffer(n.toInt())
 
 fun Input.readIP(): String = buildString(4 + 3) {