enum Gender

This commit is contained in:
Him188 2020-01-10 22:47:12 +08:00
parent 8d1a12d53f
commit 748581b14f
4 changed files with 29 additions and 29 deletions

View File

@ -185,25 +185,25 @@ internal object RequestProfileDetailsPacket : SessionPacketFactory<RequestProfil
//map.mapValues { it.value.encodeToString() }.printTLVMap("Profile(qq=$qq) str=")
val profile = Profile(
qq = qq,
nickname = map[0x4E22u]?.encodeToString() ?: "",//error("Cannot determine nickname")
englishName = map[0x4E54u]?.encodeToString(),
chineseName = map[0x4E2Au]?.encodeToString(),
qAge = map[0x6597u]?.get(0)?.toInt(),
zipCode = map[0x4E25u]?.encodeToString(),
phone = map[0x4E27u]?.encodeToString(),
gender = when (map[0x4E29u]?.let { it[0] }?.toUInt()) {
nickname = map[0x4E22]?.encodeToString() ?: "",//error("Cannot determine nickname")
englishName = map[0x4E54]?.encodeToString(),
chineseName = map[0x4E2A]?.encodeToString(),
qAge = map[0x6597]?.get(0)?.toInt(),
zipCode = map[0x4E25]?.encodeToString(),
phone = map[0x4E27]?.encodeToString(),
gender = when (map[0x4E29]?.let { it[0] }?.toUInt()) {
null -> Gender.SECRET //error("Cannot determine gender, entry 0x4E29u not found")
0x02u -> Gender.FEMALE
0x01u -> Gender.MALE
else -> Gender.SECRET // 猜的
//else -> error("Cannot determine gender, bad value of 0x4E29u: ${map[0x4729u]!![0].toHexString()}")
},
birthday = map[0x4E3Fu]?.let { GMTDate(it.toUInt().toLong()) },
personalStatement = map[0x4E33u]?.encodeToString(),
homepage = map[0x4E2Du]?.encodeToString(),
company = map[0x5DC8u]?.encodeToString(),
school = map[0x4E35u]?.encodeToString(),
email = map[0x4E2Bu]?.encodeToString()
birthday = map[0x4E3F]?.let { GMTDate(it.toUInt().toLong()) },
personalStatement = map[0x4E33]?.encodeToString(),
homepage = map[0x4E2D]?.encodeToString(),
company = map[0x5DC8]?.encodeToString(),
school = map[0x4E35]?.encodeToString(),
email = map[0x4E2B]?.encodeToString()
)
map.clear()

View File

@ -31,14 +31,14 @@ internal object GroupMessageEventParserAndHandler : KnownEventParserAndHandler<G
var senderPermission: MemberPermission = MemberPermission.MEMBER
var senderName = ""
val map = readTLVMap(true)
if (map.containsKey(18u)) {
map.getValue(18u).read {
val tlv = readTLVMap(true)
senderPermission = when (tlv.takeIf { it.containsKey(0x04u) }?.get(0x04u)?.getOrNull(3)?.toUInt()) {
val map = readTLVMap(true, 1)
if (map.containsKey(18)) {
map.getValue(18).read {
val tlv = readTLVMap(true, 1)
senderPermission = when (tlv.takeIf { it.containsKey(0x04) }?.get(0x04)?.getOrNull(3)?.toInt()) {
null -> MemberPermission.MEMBER
0x08u -> MemberPermission.OWNER
0x10u -> MemberPermission.ADMINISTRATOR
0x08 -> MemberPermission.OWNER
0x10 -> MemberPermission.ADMINISTRATOR
else -> {
tlv.printTLVMap("TLV(tag=18) Map")
MiraiLogger.warning("Could not determine member permission, default permission MEMBER is being used")
@ -47,8 +47,8 @@ internal object GroupMessageEventParserAndHandler : KnownEventParserAndHandler<G
}
senderName = when {
tlv.containsKey(0x01u) -> kotlinx.io.core.String(tlv.getValue(0x01u))//这个人的qq昵称
tlv.containsKey(0x02u) -> kotlinx.io.core.String(tlv.getValue(0x02u))//这个人的群名片
tlv.containsKey(0x01) -> kotlinx.io.core.String(tlv.getValue(0x01))//这个人的qq昵称
tlv.containsKey(0x02) -> kotlinx.io.core.String(tlv.getValue(0x02))//这个人的群名片
else -> {
tlv.printTLVMap("TLV(tag=18) Map")
MiraiLogger.warning("Could not determine senderName")

View File

@ -6,6 +6,7 @@ import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withContext
import net.mamoe.mirai.Bot
import net.mamoe.mirai.timpc.TIMPC
import net.mamoe.mirai.utils.MiraiInternalAPI
import java.util.*
/**
@ -31,6 +32,7 @@ const val qqList = "" +
"\n" +
"\n"
@UseExperimental(MiraiInternalAPI::class)
suspend fun main() {
val goodBotList = Collections.synchronizedList(mutableListOf<Bot>())
@ -58,5 +60,5 @@ suspend fun main() {
}
println("Filtering finished")
println(goodBotList.joinToString("\n") { it.account.id.toString() + " " + it.account.passwordMd5 })
println(goodBotList.joinToString("\n") { it.uin.toString() + " " + it.account.passwordMd5 })
}

View File

@ -45,10 +45,8 @@ data class Profile(
/**
* 性别
*/ // 在 Android 中 enum 的使用被严格控制.
inline class Gender(val value: Byte) {
companion object {
val SECRET = Gender(0)
val MALE = Gender(2)
val FEMALE = Gender(1)
}
enum class Gender(val value: Byte) {
SECRET(0),
MALE(1),
FEMALE(2)
}