Commit 59e15a30 authored by Him188's avatar Him188

Add ConnectionOccupiedEvent support

parent f9986ffb
...@@ -527,6 +527,8 @@ internal class TIMBotNetworkHandler internal constructor(coroutineContext: Corou ...@@ -527,6 +527,8 @@ internal class TIMBotNetworkHandler internal constructor(coroutineContext: Corou
class HeartbeatTimeoutException : CancellationException("heartbeat timeout") class HeartbeatTimeoutException : CancellationException("heartbeat timeout")
if (withTimeoutOrNull(configuration.heartbeatTimeout.millisecondsLong) { if (withTimeoutOrNull(configuration.heartbeatTimeout.millisecondsLong) {
// TODO: 2019/11/26 启动被挤掉线检测
HeartbeatPacket( HeartbeatPacket(
bot.qqAccount, bot.qqAccount,
sessionKey sessionKey
......
...@@ -81,7 +81,6 @@ enum class KnownPacketId(override inline val value: UShort, override inline val ...@@ -81,7 +81,6 @@ enum class KnownPacketId(override inline val value: UShort, override inline val
inline REQUEST_PROFILE_DETAILS(0x003Cu, RequestProfileDetailsPacket), inline REQUEST_PROFILE_DETAILS(0x003Cu, RequestProfileDetailsPacket),
inline QUERY_PREVIOUS_NAME(0x01BCu, QueryPreviousNamePacket), inline QUERY_PREVIOUS_NAME(0x01BCu, QueryPreviousNamePacket),
// 031F 查询 "新朋友" 记录 // 031F 查询 "新朋友" 记录
......
@file:Suppress("EXPERIMENTAL_API_USAGE", "EXPERIMENTAL_UNSIGNED_LITERALS")
package net.mamoe.mirai.network.protocol.tim.packet.event
import kotlinx.io.core.ByteReadPacket
import kotlinx.io.core.discardExact
import kotlinx.io.core.readBytes
import net.mamoe.mirai.Bot
import net.mamoe.mirai.utils.io.encodeToString
/**
* 被挤下线. 只能获取到中文的消息
*/
inline class ConnectionOccupiedEvent(val message: String) : EventPacket {
override fun toString(): String = "ConnectionOccupiedEvent(${message.replace("\n", "")})"
}
internal object ConnectionOccupiedPacketFactory : KnownEventParserAndHandler<ConnectionOccupiedEvent>(0x0030u) {
override suspend fun ByteReadPacket.parse(bot: Bot, identity: EventPacketIdentity): ConnectionOccupiedEvent {
discardExact(6)
return ConnectionOccupiedEvent(readBytes((remaining - 8).toInt()).encodeToString())
}
}
\ No newline at end of file
...@@ -95,6 +95,7 @@ abstract class KnownEventParserAndHandler<TPacket : Packet>(override val id: USh ...@@ -95,6 +95,7 @@ abstract class KnownEventParserAndHandler<TPacket : Packet>(override val id: USh
GroupMessageEventParserAndHandler, GroupMessageEventParserAndHandler,
FriendMessageEventParserAndHandler, FriendMessageEventParserAndHandler,
FriendAddRequestEventPacket, FriendAddRequestEventPacket,
BeingKickEventPacketHandler BeingKickEventPacketHandler,
ConnectionOccupiedPacketFactory
) )
} }
\ No newline at end of file
...@@ -103,7 +103,9 @@ object CaptchaPacket : PacketFactory<CaptchaPacket.CaptchaResponse, CaptchaKey>( ...@@ -103,7 +103,9 @@ object CaptchaPacket : PacketFactory<CaptchaPacket.CaptchaResponse, CaptchaKey>(
sealed class CaptchaResponse : Packet { sealed class CaptchaResponse : Packet {
lateinit var token00BA: ByteArray//56 bytes lateinit var token00BA: ByteArray//56 bytes
class Correct : CaptchaResponse() class Correct : CaptchaResponse() {
override fun toString(): String = "CaptchaResponse.Correct"
}
class Transmission : CaptchaResponse() { class Transmission : CaptchaResponse() {
lateinit var captchaSectionN: IoBuffer lateinit var captchaSectionN: IoBuffer
......
...@@ -38,7 +38,12 @@ actual var DefaultCaptchaSolver: CaptchaSolver = { ...@@ -38,7 +38,12 @@ actual var DefaultCaptchaSolver: CaptchaSolver = {
} }
tempFile.inputStream().use { tempFile.inputStream().use {
MiraiLogger.info(ImageIO.read(it).createCharImg()) val img = ImageIO.read(it)
if (img == null) {
MiraiLogger.info("无法创建字符图片. 请查看文件")
} else {
MiraiLogger.info(img.createCharImg())
}
} }
} }
MiraiLogger.info("若要更换验证码, 请直接回车") MiraiLogger.info("若要更换验证码, 请直接回车")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment