Commit 748581b1 authored by Him188's avatar Him188

enum Gender

parent 8d1a12d5
...@@ -185,25 +185,25 @@ internal object RequestProfileDetailsPacket : SessionPacketFactory<RequestProfil ...@@ -185,25 +185,25 @@ internal object RequestProfileDetailsPacket : SessionPacketFactory<RequestProfil
//map.mapValues { it.value.encodeToString() }.printTLVMap("Profile(qq=$qq) str=") //map.mapValues { it.value.encodeToString() }.printTLVMap("Profile(qq=$qq) str=")
val profile = Profile( val profile = Profile(
qq = qq, qq = qq,
nickname = map[0x4E22u]?.encodeToString() ?: "",//error("Cannot determine nickname") nickname = map[0x4E22]?.encodeToString() ?: "",//error("Cannot determine nickname")
englishName = map[0x4E54u]?.encodeToString(), englishName = map[0x4E54]?.encodeToString(),
chineseName = map[0x4E2Au]?.encodeToString(), chineseName = map[0x4E2A]?.encodeToString(),
qAge = map[0x6597u]?.get(0)?.toInt(), qAge = map[0x6597]?.get(0)?.toInt(),
zipCode = map[0x4E25u]?.encodeToString(), zipCode = map[0x4E25]?.encodeToString(),
phone = map[0x4E27u]?.encodeToString(), phone = map[0x4E27]?.encodeToString(),
gender = when (map[0x4E29u]?.let { it[0] }?.toUInt()) { gender = when (map[0x4E29]?.let { it[0] }?.toUInt()) {
null -> Gender.SECRET //error("Cannot determine gender, entry 0x4E29u not found") null -> Gender.SECRET //error("Cannot determine gender, entry 0x4E29u not found")
0x02u -> Gender.FEMALE 0x02u -> Gender.FEMALE
0x01u -> Gender.MALE 0x01u -> Gender.MALE
else -> Gender.SECRET // 猜的 else -> Gender.SECRET // 猜的
//else -> error("Cannot determine gender, bad value of 0x4E29u: ${map[0x4729u]!![0].toHexString()}") //else -> error("Cannot determine gender, bad value of 0x4E29u: ${map[0x4729u]!![0].toHexString()}")
}, },
birthday = map[0x4E3Fu]?.let { GMTDate(it.toUInt().toLong()) }, birthday = map[0x4E3F]?.let { GMTDate(it.toUInt().toLong()) },
personalStatement = map[0x4E33u]?.encodeToString(), personalStatement = map[0x4E33]?.encodeToString(),
homepage = map[0x4E2Du]?.encodeToString(), homepage = map[0x4E2D]?.encodeToString(),
company = map[0x5DC8u]?.encodeToString(), company = map[0x5DC8]?.encodeToString(),
school = map[0x4E35u]?.encodeToString(), school = map[0x4E35]?.encodeToString(),
email = map[0x4E2Bu]?.encodeToString() email = map[0x4E2B]?.encodeToString()
) )
map.clear() map.clear()
......
...@@ -31,14 +31,14 @@ internal object GroupMessageEventParserAndHandler : KnownEventParserAndHandler<G ...@@ -31,14 +31,14 @@ internal object GroupMessageEventParserAndHandler : KnownEventParserAndHandler<G
var senderPermission: MemberPermission = MemberPermission.MEMBER var senderPermission: MemberPermission = MemberPermission.MEMBER
var senderName = "" var senderName = ""
val map = readTLVMap(true) val map = readTLVMap(true, 1)
if (map.containsKey(18u)) { if (map.containsKey(18)) {
map.getValue(18u).read { map.getValue(18).read {
val tlv = readTLVMap(true) val tlv = readTLVMap(true, 1)
senderPermission = when (tlv.takeIf { it.containsKey(0x04u) }?.get(0x04u)?.getOrNull(3)?.toUInt()) { senderPermission = when (tlv.takeIf { it.containsKey(0x04) }?.get(0x04)?.getOrNull(3)?.toInt()) {
null -> MemberPermission.MEMBER null -> MemberPermission.MEMBER
0x08u -> MemberPermission.OWNER 0x08 -> MemberPermission.OWNER
0x10u -> MemberPermission.ADMINISTRATOR 0x10 -> MemberPermission.ADMINISTRATOR
else -> { else -> {
tlv.printTLVMap("TLV(tag=18) Map") tlv.printTLVMap("TLV(tag=18) Map")
MiraiLogger.warning("Could not determine member permission, default permission MEMBER is being used") MiraiLogger.warning("Could not determine member permission, default permission MEMBER is being used")
...@@ -47,8 +47,8 @@ internal object GroupMessageEventParserAndHandler : KnownEventParserAndHandler<G ...@@ -47,8 +47,8 @@ internal object GroupMessageEventParserAndHandler : KnownEventParserAndHandler<G
} }
senderName = when { senderName = when {
tlv.containsKey(0x01u) -> kotlinx.io.core.String(tlv.getValue(0x01u))//这个人的qq昵称 tlv.containsKey(0x01) -> kotlinx.io.core.String(tlv.getValue(0x01))//这个人的qq昵称
tlv.containsKey(0x02u) -> kotlinx.io.core.String(tlv.getValue(0x02u))//这个人的群名片 tlv.containsKey(0x02) -> kotlinx.io.core.String(tlv.getValue(0x02))//这个人的群名片
else -> { else -> {
tlv.printTLVMap("TLV(tag=18) Map") tlv.printTLVMap("TLV(tag=18) Map")
MiraiLogger.warning("Could not determine senderName") MiraiLogger.warning("Could not determine senderName")
......
...@@ -6,6 +6,7 @@ import kotlinx.coroutines.runBlocking ...@@ -6,6 +6,7 @@ import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import net.mamoe.mirai.Bot import net.mamoe.mirai.Bot
import net.mamoe.mirai.timpc.TIMPC import net.mamoe.mirai.timpc.TIMPC
import net.mamoe.mirai.utils.MiraiInternalAPI
import java.util.* import java.util.*
/** /**
...@@ -31,6 +32,7 @@ const val qqList = "" + ...@@ -31,6 +32,7 @@ const val qqList = "" +
"\n" + "\n" +
"\n" "\n"
@UseExperimental(MiraiInternalAPI::class)
suspend fun main() { suspend fun main() {
val goodBotList = Collections.synchronizedList(mutableListOf<Bot>()) val goodBotList = Collections.synchronizedList(mutableListOf<Bot>())
...@@ -58,5 +60,5 @@ suspend fun main() { ...@@ -58,5 +60,5 @@ suspend fun main() {
} }
println("Filtering finished") println("Filtering finished")
println(goodBotList.joinToString("\n") { it.account.id.toString() + " " + it.account.passwordMd5 }) println(goodBotList.joinToString("\n") { it.uin.toString() + " " + it.account.passwordMd5 })
} }
...@@ -45,10 +45,8 @@ data class Profile( ...@@ -45,10 +45,8 @@ data class Profile(
/** /**
* 性别 * 性别
*/ // 在 Android 中 enum 的使用被严格控制. */ // 在 Android 中 enum 的使用被严格控制.
inline class Gender(val value: Byte) { enum class Gender(val value: Byte) {
companion object { SECRET(0),
val SECRET = Gender(0) MALE(1),
val MALE = Gender(2) FEMALE(2)
val FEMALE = Gender(1)
}
} }
\ No newline at end of file
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