Merge branch 'dev' into dev

This commit is contained in:
HelloWorld 2020-08-18 20:16:12 +08:00 committed by GitHub
commit 7d321ee206
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
63 changed files with 8355 additions and 7025 deletions

View File

@ -28,13 +28,10 @@ jobs:
run: ./gradlew build # if test's failed, don't publish
- name: Check keys
run: ./gradlew :mirai-core:ensureBintrayAvailable :mirai-core-qqandroid:ensureBintrayAvailable -Dbintray_user=${{ secrets.BINTRAY_USER }} -Pbintray_user=${{ secrets.BINTRAY_USER }} -Dbintray_key=${{ secrets.BINTRAY_KEY }} -Pbintray_key=${{ secrets.BINTRAY_KEY }}
- name: Gradle :mirai-core:bintrayUpload
run: ./gradlew :mirai-core:bintrayUpload -Dbintray_user=${{ secrets.BINTRAY_USER }} -Pbintray_user=${{ secrets.BINTRAY_USER }} -Dbintray_key=${{ secrets.BINTRAY_KEY }} -Pbintray_key=${{ secrets.BINTRAY_KEY }}
- name: Gradle :mirai-core-qqandroid:bintrayUpload
run: ./gradlew :mirai-core-qqandroid:bintrayUpload -Dbintray_user=${{ secrets.BINTRAY_USER }} -Pbintray_user=${{ secrets.BINTRAY_USER }} -Dbintray_key=${{ secrets.BINTRAY_KEY }} -Pbintray_key=${{ secrets.BINTRAY_KEY }}
- name: Gradle :mirai-serialization:bintrayUpload
run: ./gradlew :mirai-serialization:bintrayUpload -Dbintray_user=${{ secrets.BINTRAY_USER }} -Pbintray_user=${{ secrets.BINTRAY_USER }} -Dbintray_key=${{ secrets.BINTRAY_KEY }} -Pbintray_key=${{ secrets.BINTRAY_KEY }}
- name: Gradle :mirai-core:publish
run: ./gradlew :mirai-core:publish -Dbintray_user=${{ secrets.BINTRAY_USER }} -Pbintray_user=${{ secrets.BINTRAY_USER }} -Dbintray_key=${{ secrets.BINTRAY_KEY }} -Pbintray_key=${{ secrets.BINTRAY_KEY }}
- name: Gradle :mirai-core-qqandroid:publish
run: ./gradlew :mirai-core-qqandroid:publish -Dbintray_user=${{ secrets.BINTRAY_USER }} -Pbintray_user=${{ secrets.BINTRAY_USER }} -Dbintray_key=${{ secrets.BINTRAY_KEY }} -Pbintray_key=${{ secrets.BINTRAY_KEY }}
# - name: Upload artifact
# uses: actions/upload-artifact@v1.0.0

View File

@ -19,7 +19,7 @@ mirai 欢迎一切形式的代码贡献。你可以通过以下几种途径向 m
### 注意事项
- 尽量不要引用新的库
- 遵守 Kotlin 官方代码规范(提交前使用 IDE 格式化代码 (commit 时勾选 'Reformat code')
- 不要手动拆解数据包. 请一定使用 `kotlinx.serialization` 拆解 ProtoBuf, 使用 [`jcekt`](https://github.com/him188/jcekt) 拆解 Tars 数据包, 使用 `kotlinx.serialization` 拆解 Json 数据.
- 不要手动拆解数据包. 请一定使用 `kotlinx.serialization` 拆解 ProtoBuf, 使用 `net.mamoe.mirai.qqandroid.utils.io.serialization.Tars` 拆解 Tars 数据包, 使用 `kotlinx.serialization` 拆解 Json 数据.
## 社区

View File

@ -13,11 +13,11 @@ object Versions {
}
object Kotlin {
const val compiler = "1.4.0-rc"
const val stdlib = "1.4.0-rc"
const val coroutines = "1.3.8-1.4.0-rc"
const val atomicFU = "0.14.3-1.4.0-rc"
const val serialization = "1.0-M1-1.4.0-rc"
const val compiler = "1.4.0"
const val stdlib = "1.4.0"
const val coroutines = "1.3.9"
const val atomicFU = "0.14.4"
const val serialization = "1.0.0-RC"
const val ktor = "1.3.2-1.4.0-rc"
const val binaryValidator = "0.2.3"
@ -26,8 +26,6 @@ object Versions {
const val dokka = "0.10.1"
}
const val jcekt = "2.0.0-1.4.0-rc-4"
object Android {
const val androidGradlePlugin = "3.5.3"
}

View File

@ -121,15 +121,15 @@ Mirai 通过某种方式同时生成了桥梁方法 `public void sendMessage(Mes
`1.0.0` 及更新版本, mirai-core 通过 gradle 依赖的 `api` 方式暴露了如下依赖库:
- `kotlin-stdlib`: Kotlin 标准库, 版本至少为 1.3.72
- `kotlin-reflect`: Kotlin 反射, 版本至少为 1.3.72
- `kotlinx-coroutines-core`: Kotlin 协程, 版本至少为 1.3.7
- `kotlinx-serialization-runtime`: Kotlin 序列化运行时, 和 JSON 序列化, 版本至少为 0.20.0
- `kotlinx-serialization-protobuf`: Kotlin ProtocolBuffers 序列化, 版本至少为 0.20.0
- `kotlin-stdlib`: Kotlin 标准库, 版本 1.4.0
- `kotlin-reflect`: Kotlin 反射, 版本 1.4.0
- `kotlinx-coroutines-core`: Kotlin 协程, 版本 1.3.9
- `kotlinx-serialization-core`: Kotlin 序列化运行时, 和 JSON 序列化, 版本 1.0.0-RC (此库不稳定, 请不要用新版本覆盖)
- `kotlinx-serialization-protobuf`: Kotlin ProtocolBuffers 序列化, 版本 1.0.0-RC (此库不稳定, 请不要用新版本覆盖)
- `kotlinx-io`: Kotlin IO, 版本至少为 0.1.16 (此库非常不稳定, 不建议使用它)
- `kotlinx-coroutines-io`: Kotlin 异步 IO, 版本至少为 0.1.16 (此库非常不稳定, 不建议使用它)
- `kotlinx-atomicfu`: Kotlin 原子操作, 版本至少为 0.14.2
- `ktor-client-core`, `ktor-network`, `ktor-client-cio`: Ktor HTTP, 版本至少为 1.3.2
- `kotlinx-atomicfu`: Kotlin 原子操作, 版本至少为 0.14.4
- `ktor-client-core`, `ktor-network`, `ktor-client-cio`: Ktor HTTP, 版本至少为 1.3.2-1.4.0-rc
在 JVM, mirai 使用 `"org.bouncycastle:bcprov-jdk15on:1.64"` 进行密匙计算.

View File

@ -6,4 +6,6 @@ kotlin.parallel.tasks.in.project=true
org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=512m -Dfile.encoding=UTF-8
org.gradle.parallel=true
#kotlin.mpp.enableGranularSourceSetsMetadata=true
#kotlin.mpp.enableGranularSourceSetsMetadata=true
systemProp.org.gradle.internal.publish.checksums.insecure=true

12
gradle/bintray.gradle Normal file
View File

@ -0,0 +1,12 @@
publishing {
repositories {
maven {
url = "https://api.bintray.com/maven/mamoe/mirai/mirai-core/;publish=0"
credentials {
username = upload.Bintray.getUser(project)
password = upload.Bintray.getKey(project)
}
}
}
}

View File

@ -1,87 +1,42 @@
import upload.Bintray
// kotlinx.coroutines
// Source code from kotlinx.coroutines
task ensureBintrayAvailable() {
tasks.register("ensureBintrayAvailable") {
doLast {
if (!Bintray.isBintrayAvailable(project)) {
if (!upload.Bintray.isBintrayAvailable(project)) {
throw new IllegalStateException("bintray isn't available. ")
}
}
}
if (!Bintray.isBintrayAvailable(project)) {
println("bintray isn't available. NO PUBLICATIONS WILL BE SET")
return
}
def vcs = "https://github.com/mamoe/mirai"
def miraiGitHubUrl = "https://github.com/mamoe/mirai"
bintray {
user = Bintray.getUser(project)
key = Bintray.getKey(project)
pkg {
repo = 'mirai'
name = "mirai-core"
licenses = ['AGPL']
vcsUrl = miraiGitHubUrl
websiteUrl = miraiGitHubUrl
githubRepo = miraiGitHubUrl
issueTrackerUrl = "$miraiGitHubUrl/issues"
/* version {
name = project.version
}*/
}
}
afterEvaluate {
project.publishing.publications.forEach { publication ->
publication.pom.withXml {
def root = asNode()
//root.appendNode('groupId', project.group)
//root.appendNode('artifactId', project.name)
//root.appendNode('version', project.version)
root.appendNode('name', project.name)
root.appendNode('description', project.description)
root.appendNode('url', miraiGitHubUrl)
root.children().last() + {
licenses {
license {
name "AGPL-V3"
url "https://www.gnu.org/licenses/agpl-3.0.txt"
distribution "repo"
}
}
developers {
developer {
id "mamoe"
name "Mamoe Technologies"
email "support@mamoe.net"
}
}
scm {
url miraiGitHubUrl
}
}
def pomConfig = {
licenses {
license {
name "AGPLv3 with Mamoe Exceptions"
url "https://github.com/mamoe/mirai/blob/master/LICENSE"
distribution "repo"
}
}
developers {
developer {
id "mamoe"
name "Mamoe Technologies"
email "support@mamoe.net"
}
}
scm {
url vcs
}
}
bintrayUpload.doFirst {
publications = project.publishing.publications
}
bintrayUpload.dependsOn {
def list = new LinkedList<Task>()
list.add(tasks.getByName("build"))
list.addAll(tasks.findAll { task -> task.name.contains('Jar') })
list.addAll(tasks.findAll { task -> task.name.startsWith('generateMetadataFileFor') })
list.addAll(tasks.findAll { task -> task.name.startsWith('generatePomFileFor') })
list
project.ext.configureMavenCentralMetadata = { pom ->
def root = asNode()
root.appendNode('name', project.name)
root.appendNode('description', project.description)
root.appendNode('url', vcs)
root.children().last() + pomConfig
}
try {
@ -90,40 +45,117 @@ try {
task javadocJar(type: Jar) {
archiveClassifier = 'javadoc'
}
} catch (Exception ignored) {
}
publishing {
publications.all {
// add empty javadocs (no need for MPP root publication which publishes only pom file)
if (it.name != 'kotlinMultiplatform') {
it.artifact(javadocJar)
try {
task stubJavadoc(type: Jar) {
archiveClassifier = 'javadoc'
}
}catch (Exception ignored) {
}
/**
* Publish the platform JAR and POM so that consumers who depend on this module and can't read Gradle module
* metadata can still get the platform artifact and transitive dependencies from the POM
* (see details in https://youtrack.jetbrains.com/issue/KT-39184#focus=streamItem-27-4115233.0-0)
*/
project.ext.publishPlatformArtifactsInRootModule = { platformPublication ->
afterEvaluate {
def platformPomBuilder = null
platformPublication.pom.withXml { platformPomBuilder = asString() }
publishing.publications.kotlinMultiplatform {
platformPublication.artifacts.forEach {
artifact(it)
}
pom.withXml {
def pomStringBuilder = asString()
pomStringBuilder.setLength(0)
// The platform POM needs its artifact ID replaced with the artifact ID of the root module:
def platformPomString = platformPomBuilder.toString()
platformPomString.eachLine { line ->
if (!line.contains("<!--")) { // Remove the Gradle module metadata marker as it will be added anew
pomStringBuilder.append(line.replace(platformPublication.artifactId, artifactId))
pomStringBuilder.append("\n")
}
}
}
}
// Rename MPP artifacts for backward compatibility
def type = it.name
switch (type) {
case 'kotlinMultiplatform':
it.artifactId = "$project.name-native"
break
case 'metadata':
it.artifactId = "$project.name-common"
break
case 'jvm':
it.artifactId = "$project.name"
break
case 'js':
case 'native':
it.artifactId = "$project.name-$type"
break
}
// disable metadata everywhere, but in native modules
if (type == 'maven' || type == 'metadata' || type == 'jvm' || type == 'js') {
moduleDescriptorGenerator = null
tasks.matching { it.name == "generatePomFileForKotlinMultiplatformPublication" }.configureEach {
dependsOn(tasks["generatePomFileFor${platformPublication.name.capitalize()}Publication"])
}
}
}
// bintrayUpload.dependsOn publishToMavenLocal
def isKotlin137x = false
afterEvaluate {
publishing {
def variantName = "${project.name}"
// Rename artifacts for backward compatibility
publications.all {
def type = it.name
logger.info("Configuring $type")
switch (type) {
case 'kotlinMultiplatform':
if (isKotlin137x) {
it.artifactId = "$variantName-native"
it.artifact sourcesJar
} else {
// With Kotlin 1.4.0, the root module ID has no suffix, but for compatibility with
// the consumers who can't read Gradle module metadata, we publish the JVM artifacts in it
it.artifactId = variantName
publishPlatformArtifactsInRootModule(publications["jvm"])
}
break
case 'metadata':
it.artifactId = isKotlin137x ? "$variantName-common" : "$variantName-metadata"
break
case 'jvm':
it.artifactId = isKotlin137x ? "$variantName" : "$variantName-jvm"
break
case 'js':
it.artifactId = "$variantName-$type"
break
}
logger.info("Artifact id = ${it.artifactId}")
pom.withXml(configureMavenCentralMetadata)
// The 'root' module publishes the JVM module's Javadoc JAR as per publishPlatformArtifactsInRootModule, and
if (name != "kotlinMultiplatform")
artifact stubJavadoc
}
if (isKotlin137x) {
disableMetadataPublication()
}
}
}
if (upload.Bintray.isBintrayAvailable(project)) {
apply from: rootProject.file("gradle/bintray.gradle")
}
/*
task bintrayUpload(dependsOn: publish)
// This is required for K/N publishing
bintrayUpload.dependsOn publishToMavenLocal
bintrayUpload.dependsOn generatePomFileForKotlinMultiplatformPublication
*/

129
gradle/publishOld.gradle Normal file
View File

@ -0,0 +1,129 @@
import upload.Bintray
// kotlinx.coroutines
// Source code from kotlinx.coroutines
task ensureBintrayAvailable() {
doLast {
if (!Bintray.isBintrayAvailable(project)) {
throw new IllegalStateException("bintray isn't available. ")
}
}
}
if (!Bintray.isBintrayAvailable(project)) {
println("bintray isn't available. NO PUBLICATIONS WILL BE SET")
return
}
def miraiGitHubUrl = "https://github.com/mamoe/mirai"
bintray {
user = Bintray.getUser(project)
key = Bintray.getKey(project)
pkg {
repo = 'mirai'
name = "mirai-core"
licenses = ['AGPL']
vcsUrl = miraiGitHubUrl
websiteUrl = miraiGitHubUrl
githubRepo = miraiGitHubUrl
issueTrackerUrl = "$miraiGitHubUrl/issues"
/* version {
name = project.version
}*/
}
}
afterEvaluate {
project.publishing.publications.forEach { publication ->
publication.pom.withXml {
def root = asNode()
//root.appendNode('groupId', project.group)
//root.appendNode('artifactId', project.name)
//root.appendNode('version', project.version)
root.appendNode('name', project.name)
root.appendNode('description', project.description)
root.appendNode('url', miraiGitHubUrl)
root.children().last() + {
licenses {
license {
name "AGPL-V3"
url "https://www.gnu.org/licenses/agpl-3.0.txt"
distribution "repo"
}
}
developers {
developer {
id "mamoe"
name "Mamoe Technologies"
email "support@mamoe.net"
}
}
scm {
url miraiGitHubUrl
}
}
}
}
}
bintrayUpload.doFirst {
publications = project.publishing.publications
}
bintrayUpload.dependsOn {
def list = new LinkedList<Task>()
list.add(tasks.getByName("build"))
list.addAll(tasks.findAll { task -> task.name.contains('Jar') })
list.addAll(tasks.findAll { task -> task.name.startsWith('generateMetadataFileFor') })
list.addAll(tasks.findAll { task -> task.name.startsWith('generatePomFileFor') })
list
}
try {
// empty xxx-javadoc.jar
task javadocJar(type: Jar) {
archiveClassifier = 'javadoc'
}
} catch (Exception ignored) {
}
publishing {
publications.all {
// add empty javadocs (no need for MPP root publication which publishes only pom file)
if (it.name != 'kotlinMultiplatform') {
it.artifact(javadocJar)
}
// Rename MPP artifacts for backward compatibility
def type = it.name
switch (type) {
case 'kotlinMultiplatform':
it.artifactId = "$project.name-native"
break
case 'metadata':
it.artifactId = "$project.name-common"
break
case 'jvm':
it.artifactId = "$project.name"
break
case 'js':
case 'native':
it.artifactId = "$project.name-$type"
break
}
// disable metadata everywhere, but in native modules
if (type == 'maven' || type == 'metadata' || type == 'jvm' || type == 'js') {
moduleDescriptorGenerator = null
}
}
}
// bintrayUpload.dependsOn publishToMavenLocal

View File

@ -47,6 +47,7 @@ kotlin {
languageSettings.useExperimentalAnnotation("kotlin.experimental.ExperimentalTypeInference")
languageSettings.useExperimentalAnnotation("kotlin.time.ExperimentalTime")
languageSettings.useExperimentalAnnotation("kotlin.contracts.ExperimentalContracts")
languageSettings.useExperimentalAnnotation("kotlinx.serialization.ExperimentalSerializationApi")
languageSettings.progressiveMode = true
@ -57,13 +58,11 @@ kotlin {
val commonMain by getting {
dependencies {
api(kotlinx("serialization-runtime", Versions.Kotlin.serialization))
api(kotlinx("serialization-core", Versions.Kotlin.serialization))
implementation(kotlinx("serialization-protobuf", Versions.Kotlin.serialization))
api("org.jetbrains.kotlinx:atomicfu:${Versions.Kotlin.atomicFU}")
implementation(kotlinx("io", Versions.Kotlin.io))
implementation(kotlinx("coroutines-io", Versions.Kotlin.coroutinesIo))
//implementation("moe.him188:jcekt:${Versions.jcekt}")
implementation("moe.him188:jcekt:${Versions.jcekt}")
}
}
@ -95,6 +94,7 @@ kotlin {
dependencies {
runtimeOnly(files("build/classes/kotlin/jvm/main")) // classpath is not properly set by IDE
implementation("org.bouncycastle:bcprov-jdk15on:1.64")
implementation(kotlinx("io-jvm", Versions.Kotlin.io))
// api(kotlinx("coroutines-debug", Versions.Kotlin.coroutines))
}
}
@ -114,3 +114,19 @@ kotlin {
}
apply(from = rootProject.file("gradle/publish.gradle"))
tasks.withType<com.jfrog.bintray.gradle.tasks.BintrayUploadTask> {
doFirst {
publishing.publications
.filterIsInstance<MavenPublication>()
.forEach { publication ->
val moduleFile = buildDir.resolve("publications/${publication.name}/module.json")
if (moduleFile.exists()) {
publication.artifact(object : org.gradle.api.publish.maven.internal.artifact.FileBasedMavenArtifact(moduleFile) {
override fun getDefaultExtension() = "module"
})
}
}
}
}

View File

@ -12,7 +12,9 @@
package net.mamoe.mirai.qqandroid.contact
import kotlinx.coroutines.*
import kotlinx.coroutines.Job
import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.launch
import kotlinx.io.core.Closeable
import net.mamoe.mirai.LowLevelAPI
import net.mamoe.mirai.contact.*
@ -373,8 +375,10 @@ internal class GroupImpl(
source.ensureSequenceIdAvailable()
} catch (e: Exception) {
bot.network.logger.warning {
"Timeout awaiting sequenceId for group message(${message.contentToString()
.take(10)}). Some features may not work properly"
"Timeout awaiting sequenceId for group message(${
message.contentToString()
.take(10)
}). Some features may not work properly"
}
bot.network.logger.warning(e)
}
@ -449,27 +453,36 @@ internal class GroupImpl(
* 上传一个语音消息以备发送.
* 请注意这是一个实验性api且随时会被删除
* @throws EventCancelledException 当发送消息事件被取消
* @throws OverFileSizeMaxException 图片文件过大而被服务器拒绝上传时. (最大大小约为 1 MB)
* @throws OverFileSizeMaxException 语音文件过大而被服务器拒绝上传时. (最大大小约为 1 MB)
*/
@JvmSynthetic
@MiraiExperimentalAPI
override suspend fun uploadGroupVoice(input: InputStream): Voice {
@SinceMirai("1.2.0")
override suspend fun uploadVoice(input: InputStream): Voice {
val content = ByteArray(input.available())
input.read(content)
if (content.size > 1048576) {
throw OverFileSizeMaxException()
}
val md5 = MiraiPlatformUtils.md5(content)
val codec = with(content.copyOfRange(0, 10).toUHexString("")) {
when {
startsWith("2321414D52") -> 0 // amr
startsWith("02232153494C4B5F5633") -> 1 // silk V3
else -> 0 // use amr by default
}
}
return bot.network.run {
val response: PttStore.GroupPttUp.Response.RequireUpload =
PttStore.GroupPttUp(bot.client, bot.id, 0L, md5, content.size.toLong()).sendAndExpect()
PttStore.GroupPttUp(bot.client, bot.id, id, md5, content.size.toLong(), codec).sendAndExpect()
HighwayHelper.uploadPttToServers(
bot,
response.uploadIpList.zip(response.uploadPortList),
content,
md5,
response.uKey,
response.fileKey
response.fileKey,
codec
)
Voice("${md5.toUHexString("")}.amr", md5, content.size.toLong(), "")
}

View File

@ -46,13 +46,13 @@ private fun generateGuid(androidId: ByteArray, macAddress: ByteArray): ByteArray
internal fun getRandomByteArray(length: Int): ByteArray = ByteArray(length) { Random.nextInt(0, 255).toByte() }
internal object DefaultServerList : Set<Pair<String, Int>> by setOf(
"msfwifi.3g.qq.com" to 8080,
"42.81.169.46" to 8080,
"42.81.172.81" to 80,
"114.221.148.59" to 14000,
"42.81.172.147" to 443,
"125.94.60.146" to 80,
"114.221.144.215" to 80,
"msfwifi.3g.qq.com" to 8080,
"42.81.172.22" to 80
)
@ -133,7 +133,7 @@ internal open class QQAndroidClient(
throw NoServerAvailableException(null)
}
retryCatching(bot.client.serverList.size, except = LoginFailedException::class) {
val pair = bot.client.serverList.random()
val pair = bot.client.serverList[0]
kotlin.runCatching {
block(pair.first, pair.second)
return@retryCatching

View File

@ -190,7 +190,9 @@ internal object HighwayHelper {
servers: List<Pair<Int, Int>>,
content: ByteArray,
md5: ByteArray,
uKey: ByteArray, fileKey: ByteArray
uKey: ByteArray,
fileKey: ByteArray,
codec: Int
) {
servers.retryWithServers(10 * 1000, {
throw IllegalStateException("cannot upload ptt, failed on all servers.", it)
@ -199,7 +201,7 @@ internal object HighwayHelper {
"[Highway] Uploading ptt to ${s}:$i, size=${content.size.toLong().sizeToString()}"
}
val time = measureTime {
uploadPttToServer(s, i, content, md5, uKey, fileKey)
uploadPttToServer(s, i, content, md5, uKey, fileKey, codec)
}
bot.network.logger.verbose {
"[Highway] Uploading ptt: succeed at ${(content.size.toDouble() / 1024 / time.inSeconds).roundToInt()} KiB/s"
@ -214,7 +216,9 @@ internal object HighwayHelper {
serverPort: Int,
content: ByteArray,
md5: ByteArray,
uKey: ByteArray, fileKey: ByteArray
uKey: ByteArray,
fileKey: ByteArray,
codec: Int
) {
MiraiPlatformUtils.Http.post<String> {
url("http://$serverIp:$serverPort")
@ -224,7 +228,7 @@ internal object HighwayHelper {
parameter("filesize", content.size)
parameter("bmd5", md5.toUHexString(""))
parameter("mType", "pttDu")
parameter("voice_encodec", 0)
parameter("voice_encodec", codec)
body = content
}
}

View File

@ -1,173 +1,173 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.jce
import kotlinx.serialization.Serializable
import moe.him188.jcekt.JceId
import net.mamoe.mirai.qqandroid.network.Packet
import net.mamoe.mirai.qqandroid.utils.io.JceStruct
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.TarsId
import kotlin.jvm.JvmField
@Serializable
internal class BigDataChannel(
@JceId(0) @JvmField val vBigdataIplists: List<BigDataIpList>,
@JceId(1) @JvmField val sBigdataSigSession: ByteArray? = null,
@JceId(2) @JvmField val sBigdataKeySession: ByteArray? = null,
@JceId(3) @JvmField val uSigUin: Long? = null,
@JceId(4) @JvmField val iConnectFlag: Int? = 1,
@JceId(5) @JvmField val vBigdataPbBuf: ByteArray? = null
@TarsId(0) @JvmField val vBigdataIplists: List<BigDataIpList>,
@TarsId(1) @JvmField val sBigdataSigSession: ByteArray? = null,
@TarsId(2) @JvmField val sBigdataKeySession: ByteArray? = null,
@TarsId(3) @JvmField val uSigUin: Long? = null,
@TarsId(4) @JvmField val iConnectFlag: Int? = 1,
@TarsId(5) @JvmField val vBigdataPbBuf: ByteArray? = null
) : JceStruct
@Serializable
internal class BigDataIpInfo(
@JceId(0) @JvmField val uType: Long,
@JceId(1) @JvmField val sIp: String = "",
@JceId(2) @JvmField val uPort: Long
@TarsId(0) @JvmField val uType: Long,
@TarsId(1) @JvmField val sIp: String = "",
@TarsId(2) @JvmField val uPort: Long
) : JceStruct
@Serializable
internal class BigDataIpList(
@JceId(0) @JvmField val uServiceType: Long,
@JceId(1) @JvmField val vIplist: List<BigDataIpInfo>,
@JceId(2) @JvmField val netSegConfs: List<NetSegConf>? = null,
@JceId(3) @JvmField val ufragmentSize: Long? = null
@TarsId(0) @JvmField val uServiceType: Long,
@TarsId(1) @JvmField val vIplist: List<BigDataIpInfo>,
@TarsId(2) @JvmField val netSegConfs: List<NetSegConf>? = null,
@TarsId(3) @JvmField val ufragmentSize: Long? = null
) : JceStruct
@Serializable
internal class ClientLogConfig(
@JceId(1) @JvmField val type: Int,
@JceId(2) @JvmField val timeStart: TimeStamp? = null,
@JceId(3) @JvmField val timeFinish: TimeStamp? = null,
@JceId(4) @JvmField val loglevel: Byte? = null,
@JceId(5) @JvmField val cookie: Int? = null,
@JceId(6) @JvmField val lseq: Long? = null
@TarsId(1) @JvmField val type: Int,
@TarsId(2) @JvmField val timeStart: TimeStamp? = null,
@TarsId(3) @JvmField val timeFinish: TimeStamp? = null,
@TarsId(4) @JvmField val loglevel: Byte? = null,
@TarsId(5) @JvmField val cookie: Int? = null,
@TarsId(6) @JvmField val lseq: Long? = null
) : JceStruct
@Serializable
internal class DomainIpChannel(
@JceId(0) @JvmField val vDomainIplists: List<DomainIpList>
@TarsId(0) @JvmField val vDomainIplists: List<DomainIpList>
) : JceStruct
@Serializable
internal class DomainIpInfo(
@JceId(1) @JvmField val uIp: Int,
@JceId(2) @JvmField val uPort: Int
@TarsId(1) @JvmField val uIp: Int,
@TarsId(2) @JvmField val uPort: Int
) : JceStruct
@Serializable
internal class DomainIpList(
@JceId(0) @JvmField val uDomainType: Int,
@JceId(1) @JvmField val vIplist: List<DomainIpInfo>,
@JceId(2) @JvmField val unknown: ByteArray? = null,
@JceId(4) @JvmField val int: Int? = null// added
@TarsId(0) @JvmField val uDomainType: Int,
@TarsId(1) @JvmField val vIplist: List<DomainIpInfo>,
@TarsId(2) @JvmField val unknown: ByteArray? = null,
@TarsId(4) @JvmField val int: Int? = null// added
) : JceStruct
@Serializable
internal class _340(
@JceId(1) @JvmField val field1315: List<_339>,
@JceId(3) @JvmField val field1316: List<_339>,
@JceId(4) @JvmField val field1317: Int,
@JceId(5) @JvmField val field1318: Byte? = 0,
@JceId(6) @JvmField val field1319: Byte? = 0,
@JceId(7) @JvmField val field1320: Int? = 1,
@JceId(8) @JvmField val field1321: List<_339>? = null,
@JceId(9) @JvmField val field1322: List<_339>? = null,
@JceId(10) @JvmField val field1323: List<_339>? = null,
@JceId(11) @JvmField val field1324: List<_339>? = null,
@JceId(12) @JvmField val field1325: List<_339>? = null,
@JceId(13) @JvmField val field1326: List<_339>? = null,
@JceId(14) @JvmField val netType: Byte? = 0,
@JceId(15) @JvmField val heThreshold: Int? = 0,
@JceId(16) @JvmField val policyId: String? = ""
@TarsId(1) @JvmField val field1315: List<_339>,
@TarsId(3) @JvmField val field1316: List<_339>,
@TarsId(4) @JvmField val field1317: Int,
@TarsId(5) @JvmField val field1318: Byte? = 0,
@TarsId(6) @JvmField val field1319: Byte? = 0,
@TarsId(7) @JvmField val field1320: Int? = 1,
@TarsId(8) @JvmField val field1321: List<_339>? = null,
@TarsId(9) @JvmField val field1322: List<_339>? = null,
@TarsId(10) @JvmField val field1323: List<_339>? = null,
@TarsId(11) @JvmField val field1324: List<_339>? = null,
@TarsId(12) @JvmField val field1325: List<_339>? = null,
@TarsId(13) @JvmField val field1326: List<_339>? = null,
@TarsId(14) @JvmField val netType: Byte? = 0,
@TarsId(15) @JvmField val heThreshold: Int? = 0,
@TarsId(16) @JvmField val policyId: String? = ""
) : JceStruct
@Serializable
internal class _339(
@JceId(1) @JvmField val field1298: String = "",
@JceId(2) @JvmField val field1299: Int = 0,
@JceId(3) @JvmField val field1300: Byte = 0,
@JceId(4) @JvmField val field1301: Byte = 0,
@JceId(5) @JvmField val field1302: Byte? = 0,
@JceId(6) @JvmField val field1303: Int? = 8,
@JceId(7) @JvmField val field1304: Byte? = 0,
@JceId(8) @JvmField val field1305: String = "",
@JceId(9) @JvmField val field1306: String = ""
@TarsId(1) @JvmField val field1298: String = "",
@TarsId(2) @JvmField val field1299: Int = 0,
@TarsId(3) @JvmField val field1300: Byte = 0,
@TarsId(4) @JvmField val field1301: Byte = 0,
@TarsId(5) @JvmField val field1302: Byte? = 0,
@TarsId(6) @JvmField val field1303: Int? = 8,
@TarsId(7) @JvmField val field1304: Byte? = 0,
@TarsId(8) @JvmField val field1305: String = "",
@TarsId(9) @JvmField val field1306: String = ""
) : JceStruct
@Serializable
internal class FileStoragePushFSSvcListFuckKotlin(
@JceId(0) @JvmField val vUpLoadList: List<FileStorageServerListInfo>? = listOf(),
@JceId(1) @JvmField val vPicDownLoadList: List<FileStorageServerListInfo>? = listOf(),
@JceId(2) @JvmField val vGPicDownLoadList: List<FileStorageServerListInfo>? = null,
@JceId(3) @JvmField val vQzoneProxyServiceList: List<FileStorageServerListInfo>? = null,
@JceId(4) @JvmField val vUrlEncodeServiceList: List<FileStorageServerListInfo>? = null,
@JceId(5) @JvmField val bigDataChannel: BigDataChannel? = null,
@JceId(6) @JvmField val vVipEmotionList: List<FileStorageServerListInfo>? = null,
@JceId(7) @JvmField val vC2CPicDownList: List<FileStorageServerListInfo>? = null,
@JceId(8) @JvmField val fmtIPInfo: FmtIPInfo? = null,
@JceId(9) @JvmField val domainIpChannel: DomainIpChannel? = null,
@JceId(10) @JvmField val pttlist: ByteArray? = null
@TarsId(0) @JvmField val vUpLoadList: List<FileStorageServerListInfo>? = listOf(),
@TarsId(1) @JvmField val vPicDownLoadList: List<FileStorageServerListInfo>? = listOf(),
@TarsId(2) @JvmField val vGPicDownLoadList: List<FileStorageServerListInfo>? = null,
@TarsId(3) @JvmField val vQzoneProxyServiceList: List<FileStorageServerListInfo>? = null,
@TarsId(4) @JvmField val vUrlEncodeServiceList: List<FileStorageServerListInfo>? = null,
@TarsId(5) @JvmField val bigDataChannel: BigDataChannel? = null,
@TarsId(6) @JvmField val vVipEmotionList: List<FileStorageServerListInfo>? = null,
@TarsId(7) @JvmField val vC2CPicDownList: List<FileStorageServerListInfo>? = null,
@TarsId(8) @JvmField val fmtIPInfo: FmtIPInfo? = null,
@TarsId(9) @JvmField val domainIpChannel: DomainIpChannel? = null,
@TarsId(10) @JvmField val pttlist: ByteArray? = null
) : JceStruct
@Serializable
internal class FileStorageServerListInfo(
@JceId(1) @JvmField val sIP: String = "",
@JceId(2) @JvmField val iPort: Int
@TarsId(1) @JvmField val sIP: String = "",
@TarsId(2) @JvmField val iPort: Int
) : JceStruct
@Serializable
internal class FmtIPInfo(
@JceId(0) @JvmField val sGateIp: String = "",
@JceId(1) @JvmField val iGateIpOper: Long
@TarsId(0) @JvmField val sGateIp: String = "",
@TarsId(1) @JvmField val iGateIpOper: Long
) : JceStruct
@Serializable
internal class NetSegConf(
@JceId(0) @JvmField val uint32NetType: Long? = null,
@JceId(1) @JvmField val uint32Segsize: Long? = null,
@JceId(2) @JvmField val uint32Segnum: Long? = null,
@JceId(3) @JvmField val uint32Curconnnum: Long? = null
@TarsId(0) @JvmField val uint32NetType: Long? = null,
@TarsId(1) @JvmField val uint32Segsize: Long? = null,
@TarsId(2) @JvmField val uint32Segnum: Long? = null,
@TarsId(3) @JvmField val uint32Curconnnum: Long? = null
) : JceStruct
@Suppress("ArrayInDataClass")
@Serializable
internal class PushReq(
@JceId(1) @JvmField val type: Int,
@JceId(2) @JvmField val jcebuf: ByteArray,
@JceId(3) @JvmField val seq: Long
@TarsId(1) @JvmField val type: Int,
@TarsId(2) @JvmField val jcebuf: ByteArray,
@TarsId(3) @JvmField val seq: Long
) : JceStruct, Packet
@Serializable
internal class PushResp(
@JceId(1) @JvmField val type: Int,
@JceId(2) @JvmField val seq: Long,
@JceId(3) @JvmField val jcebuf: ByteArray? = null
@TarsId(1) @JvmField val type: Int,
@TarsId(2) @JvmField val seq: Long,
@TarsId(3) @JvmField val jcebuf: ByteArray? = null
) : JceStruct
@Serializable
internal class SsoServerList(
@JceId(1) @JvmField val v2G3GList: List<SsoServerListInfo>,
@JceId(3) @JvmField val vWifiList: List<SsoServerListInfo>,
@JceId(4) @JvmField val iReconnect: Int,
@JceId(5) @JvmField val testSpeed: Byte? = null,
@JceId(6) @JvmField val useNewList: Byte? = null,
@JceId(7) @JvmField val iMultiConn: Int? = 1,
@JceId(8) @JvmField val vHttp2g3glist: List<SsoServerListInfo>? = null,
@JceId(9) @JvmField val vHttpWifilist: List<SsoServerListInfo>? = null
@TarsId(1) @JvmField val v2G3GList: List<SsoServerListInfo>,
@TarsId(3) @JvmField val vWifiList: List<SsoServerListInfo>,
@TarsId(4) @JvmField val iReconnect: Int,
@TarsId(5) @JvmField val testSpeed: Byte? = null,
@TarsId(6) @JvmField val useNewList: Byte? = null,
@TarsId(7) @JvmField val iMultiConn: Int? = 1,
@TarsId(8) @JvmField val vHttp2g3glist: List<SsoServerListInfo>? = null,
@TarsId(9) @JvmField val vHttpWifilist: List<SsoServerListInfo>? = null
) : JceStruct
@Serializable
internal class SsoServerListInfo(
@JceId(1) @JvmField val sIP: String = "",
@JceId(2) @JvmField val iPort: Int,
@JceId(3) @JvmField val linkType: Byte,
@JceId(4) @JvmField val proxy: Byte,
@JceId(5) @JvmField val protocolType: Byte? = null,
@JceId(6) @JvmField val iTimeOut: Int? = 10
@TarsId(1) @JvmField val sIP: String = "",
@TarsId(2) @JvmField val iPort: Int,
@TarsId(3) @JvmField val linkType: Byte,
@TarsId(4) @JvmField val proxy: Byte,
@TarsId(5) @JvmField val protocolType: Byte? = null,
@TarsId(6) @JvmField val iTimeOut: Int? = 10
) : JceStruct
@Serializable
internal class TimeStamp(
@JceId(1) @JvmField val year: Int,
@JceId(2) @JvmField val month: Byte,
@JceId(3) @JvmField val day: Byte,
@JceId(4) @JvmField val hour: Byte
@TarsId(1) @JvmField val year: Int,
@TarsId(2) @JvmField val month: Byte,
@TarsId(3) @JvmField val day: Byte,
@TarsId(4) @JvmField val hour: Byte
) : JceStruct

View File

@ -1,175 +1,175 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.jce
import kotlinx.serialization.Serializable
import moe.him188.jcekt.JceId
import net.mamoe.mirai.qqandroid.utils.io.JceStruct
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.TarsId
import kotlin.jvm.JvmField
@Serializable
internal class ModifyGroupCardReq(
@JceId(0) @JvmField val dwZero: Long,
@JceId(1) @JvmField val dwGroupCode: Long,
@JceId(2) @JvmField val dwNewSeq: Long,
@JceId(3) @JvmField val vecUinInfo: List<stUinInfo>
@TarsId(0) @JvmField val dwZero: Long,
@TarsId(1) @JvmField val dwGroupCode: Long,
@TarsId(2) @JvmField val dwNewSeq: Long,
@TarsId(3) @JvmField val vecUinInfo: List<stUinInfo>
) : JceStruct
@Serializable
internal class stUinInfo(
@JceId(0) @JvmField val dwuin: Long,
@JceId(1) @JvmField val dwFlag: Long,
@JceId(2) @JvmField val sName: String = "",
@JceId(3) @JvmField val gender: Byte,
@JceId(4) @JvmField val sPhone: String = "",
@JceId(5) @JvmField val sEmail: String = "",
@JceId(6) @JvmField val sRemark: String = ""
@TarsId(0) @JvmField val dwuin: Long,
@TarsId(1) @JvmField val dwFlag: Long,
@TarsId(2) @JvmField val sName: String = "",
@TarsId(3) @JvmField val gender: Byte,
@TarsId(4) @JvmField val sPhone: String = "",
@TarsId(5) @JvmField val sEmail: String = "",
@TarsId(6) @JvmField val sRemark: String = ""
) : JceStruct
@Serializable
internal class GetFriendListReq(
@JceId(0) @JvmField val reqtype: Int? = null,
@JceId(1) @JvmField val ifReflush: Byte? = null,
@JceId(2) @JvmField val uin: Long? = null,
@JceId(3) @JvmField val startIndex: Short? = null,
@JceId(4) @JvmField val getfriendCount: Short? = null,
@JceId(5) @JvmField val groupid: Byte? = null,
@JceId(6) @JvmField val ifGetGroupInfo: Byte? = null,
@JceId(7) @JvmField val groupstartIndex: Byte? = null,
@JceId(8) @JvmField val getgroupCount: Byte? = null,
@JceId(9) @JvmField val ifGetMSFGroup: Byte? = null,
@JceId(10) @JvmField val ifShowTermType: Byte? = null,
@JceId(11) @JvmField val version: Long? = null,
@JceId(12) @JvmField val uinList: List<Long>? = null,
@JceId(13) @JvmField val eAppType: Int = 0,
@JceId(14) @JvmField val ifGetDOVId: Byte? = null,
@JceId(15) @JvmField val ifGetBothFlag: Byte? = null,
@JceId(16) @JvmField val vec0xd50Req: ByteArray? = null,
@JceId(17) @JvmField val vec0xd6bReq: ByteArray? = null,
@JceId(18) @JvmField val vecSnsTypelist: List<Long>? = null
@TarsId(0) @JvmField val reqtype: Int? = null,
@TarsId(1) @JvmField val ifReflush: Byte? = null,
@TarsId(2) @JvmField val uin: Long? = null,
@TarsId(3) @JvmField val startIndex: Short? = null,
@TarsId(4) @JvmField val getfriendCount: Short? = null,
@TarsId(5) @JvmField val groupid: Byte? = null,
@TarsId(6) @JvmField val ifGetGroupInfo: Byte? = null,
@TarsId(7) @JvmField val groupstartIndex: Byte? = null,
@TarsId(8) @JvmField val getgroupCount: Byte? = null,
@TarsId(9) @JvmField val ifGetMSFGroup: Byte? = null,
@TarsId(10) @JvmField val ifShowTermType: Byte? = null,
@TarsId(11) @JvmField val version: Long? = null,
@TarsId(12) @JvmField val uinList: List<Long>? = null,
@TarsId(13) @JvmField val eAppType: Int = 0,
@TarsId(14) @JvmField val ifGetDOVId: Byte? = null,
@TarsId(15) @JvmField val ifGetBothFlag: Byte? = null,
@TarsId(16) @JvmField val vec0xd50Req: ByteArray? = null,
@TarsId(17) @JvmField val vec0xd6bReq: ByteArray? = null,
@TarsId(18) @JvmField val vecSnsTypelist: List<Long>? = null
) : JceStruct
@Serializable
internal class GetFriendListResp(
@JceId(0) @JvmField val reqtype: Int,
@JceId(1) @JvmField val ifReflush: Byte,
@JceId(2) @JvmField val uin: Long,
@JceId(3) @JvmField val startIndex: Short,
@JceId(4) @JvmField val getfriendCount: Short,
@JceId(5) @JvmField val totoalFriendCount: Short,
@JceId(6) @JvmField val friendCount: Short,
@JceId(7) @JvmField val vecFriendInfo: List<FriendInfo>? = null,
@JceId(8) @JvmField val groupid: Byte? = null,
@JceId(9) @JvmField val ifGetGroupInfo: Byte,
@JceId(10) @JvmField val groupstartIndex: Byte? = null,
@JceId(11) @JvmField val getgroupCount: Byte? = null,
@JceId(12) @JvmField val totoalGroupCount: Short? = null,
@JceId(13) @JvmField val groupCount: Byte? = null,
@JceId(14) @JvmField val vecGroupInfo: List<GroupInfo>? = null,
@JceId(15) @JvmField val result: Int,
@JceId(16) @JvmField val errorCode: Short? = null,
@JceId(17) @JvmField val onlineFriendCount: Short? = null,
@JceId(18) @JvmField val serverTime: Long? = null,
@JceId(19) @JvmField val sqqOnLineCount: Short? = null,
@JceId(20) @JvmField val vecMSFGroupInfo: List<GroupInfo>? = null,
@JceId(21) @JvmField val respType: Byte? = null,
@JceId(22) @JvmField val hasOtherRespFlag: Byte? = null,
@JceId(23) @JvmField val stSelfInfo: FriendInfo? = null,
@JceId(24) @JvmField val showPcIcon: Byte? = null,
@JceId(25) @JvmField val wGetExtSnsRspCode: Short? = null,
@JceId(26) @JvmField val stSubSrvRspCode: FriendListSubSrvRspCode? = null
@TarsId(0) @JvmField val reqtype: Int,
@TarsId(1) @JvmField val ifReflush: Byte,
@TarsId(2) @JvmField val uin: Long,
@TarsId(3) @JvmField val startIndex: Short,
@TarsId(4) @JvmField val getfriendCount: Short,
@TarsId(5) @JvmField val totoalFriendCount: Short,
@TarsId(6) @JvmField val friendCount: Short,
@TarsId(7) @JvmField val vecFriendInfo: List<FriendInfo>? = null,
@TarsId(8) @JvmField val groupid: Byte? = null,
@TarsId(9) @JvmField val ifGetGroupInfo: Byte,
@TarsId(10) @JvmField val groupstartIndex: Byte? = null,
@TarsId(11) @JvmField val getgroupCount: Byte? = null,
@TarsId(12) @JvmField val totoalGroupCount: Short? = null,
@TarsId(13) @JvmField val groupCount: Byte? = null,
@TarsId(14) @JvmField val vecGroupInfo: List<GroupInfo>? = null,
@TarsId(15) @JvmField val result: Int,
@TarsId(16) @JvmField val errorCode: Short? = null,
@TarsId(17) @JvmField val onlineFriendCount: Short? = null,
@TarsId(18) @JvmField val serverTime: Long? = null,
@TarsId(19) @JvmField val sqqOnLineCount: Short? = null,
@TarsId(20) @JvmField val vecMSFGroupInfo: List<GroupInfo>? = null,
@TarsId(21) @JvmField val respType: Byte? = null,
@TarsId(22) @JvmField val hasOtherRespFlag: Byte? = null,
@TarsId(23) @JvmField val stSelfInfo: FriendInfo? = null,
@TarsId(24) @JvmField val showPcIcon: Byte? = null,
@TarsId(25) @JvmField val wGetExtSnsRspCode: Short? = null,
@TarsId(26) @JvmField val stSubSrvRspCode: FriendListSubSrvRspCode? = null
) : JceStruct
@Serializable
internal class FriendListSubSrvRspCode(
@JceId(0) @JvmField val wGetMutualMarkRspCode: Short? = null,
@JceId(1) @JvmField val wGetIntimateInfoRspCode: Short? = null
@TarsId(0) @JvmField val wGetMutualMarkRspCode: Short? = null,
@TarsId(1) @JvmField val wGetIntimateInfoRspCode: Short? = null
) : JceStruct
@Serializable
internal class FriendInfo(
@JceId(0) @JvmField val friendUin: Long,
@JceId(1) @JvmField val groupId: Byte,
@JceId(2) @JvmField val faceId: Short,
@JceId(3) @JvmField val remark: String = "",
@JceId(4) @JvmField val sqqtype: Byte,
@JceId(5) @JvmField val status: Byte = 20,
@JceId(6) @JvmField val memberLevel: Byte? = null,
@JceId(7) @JvmField val isMqqOnLine: Byte? = null,
@JceId(8) @JvmField val sqqOnLineState: Byte? = null,
@JceId(9) @JvmField val isIphoneOnline: Byte? = null,
@JceId(10) @JvmField val detalStatusFlag: Byte? = null,
@JceId(11) @JvmField val sqqOnLineStateV2: Byte? = null,
@JceId(12) @JvmField val sShowName: String? = "",
@JceId(13) @JvmField val isRemark: Byte? = null,
@JceId(14) @JvmField val nick: String = "",
@JceId(15) @JvmField val specialFlag: Byte? = null,
@JceId(16) @JvmField val vecIMGroupID: ByteArray? = null,
@JceId(17) @JvmField val vecMSFGroupID: ByteArray? = null,
@JceId(18) @JvmField val iTermType: Int? = null,
@JceId(19) @JvmField val oVipInfo: VipBaseInfo? = null, //? bad
@JceId(20) @JvmField val network: Byte? = null,
@JceId(21) @JvmField val vecRing: ByteArray? = null,
@JceId(22) @JvmField val uAbiFlag: Long? = null,
@JceId(23) @JvmField val ulFaceAddonId: Long? = null,
@JceId(24) @JvmField val eNetworkType: Int? = 0,
@JceId(25) @JvmField val uVipFont: Long? = null,
@JceId(26) @JvmField val eIconType: Int? = 0,
@JceId(27) @JvmField val termDesc: String? = "",
@JceId(28) @JvmField val uColorRing: Long? = null,
@JceId(29) @JvmField val apolloFlag: Byte? = null,
@JceId(30) @JvmField val uApolloTimestamp: Long? = null,
@JceId(31) @JvmField val sex: Byte? = null,
@JceId(32) @JvmField val uFounderFont: Long? = null,
@JceId(33) @JvmField val eimId: String? = "",
@JceId(34) @JvmField val eimMobile: String? = "",
@JceId(35) @JvmField val olympicTorch: Byte? = null,
@JceId(36) @JvmField val uApolloSignTime: Long? = null,
@JceId(37) @JvmField val uLaviUin: Long? = null,
@JceId(38) @JvmField val uTagUpdateTime: Long? = null,
@JceId(39) @JvmField val uGameLastLoginTime: Long? = null,
@JceId(40) @JvmField val uGameAppid: Long? = null,
@JceId(41) @JvmField val vecCardID: ByteArray? = null,
@JceId(42) @JvmField val ulBitSet: Long? = null,
@JceId(43) @JvmField val kingOfGloryFlag: Byte? = null,
@JceId(44) @JvmField val ulKingOfGloryRank: Long? = null,
@JceId(45) @JvmField val masterUin: String? = "",
@JceId(46) @JvmField val uLastMedalUpdateTime: Long? = null,
@JceId(47) @JvmField val uFaceStoreId: Long? = null,
@JceId(48) @JvmField val uFontEffect: Long? = null,
@JceId(49) @JvmField val sDOVId: String? = "",
@JceId(50) @JvmField val uBothFlag: Long? = null,
@JceId(51) @JvmField val centiShow3DFlag: Byte? = null,
@JceId(52) @JvmField val vecIntimateInfo: ByteArray? = null,
@JceId(53) @JvmField val showNameplate: Byte? = null,
@JceId(54) @JvmField val newLoverDiamondFlag: Byte? = null,
@JceId(55) @JvmField val vecExtSnsFrdData: ByteArray? = null,
@JceId(56) @JvmField val vecMutualMarkData: ByteArray? = null
@TarsId(0) @JvmField val friendUin: Long,
@TarsId(1) @JvmField val groupId: Byte,
@TarsId(2) @JvmField val faceId: Short,
@TarsId(3) @JvmField val remark: String = "",
@TarsId(4) @JvmField val sqqtype: Byte,
@TarsId(5) @JvmField val status: Byte = 20,
@TarsId(6) @JvmField val memberLevel: Byte? = null,
@TarsId(7) @JvmField val isMqqOnLine: Byte? = null,
@TarsId(8) @JvmField val sqqOnLineState: Byte? = null,
@TarsId(9) @JvmField val isIphoneOnline: Byte? = null,
@TarsId(10) @JvmField val detalStatusFlag: Byte? = null,
@TarsId(11) @JvmField val sqqOnLineStateV2: Byte? = null,
@TarsId(12) @JvmField val sShowName: String? = "",
@TarsId(13) @JvmField val isRemark: Byte? = null,
@TarsId(14) @JvmField val nick: String = "",
@TarsId(15) @JvmField val specialFlag: Byte? = null,
@TarsId(16) @JvmField val vecIMGroupID: ByteArray? = null,
@TarsId(17) @JvmField val vecMSFGroupID: ByteArray? = null,
@TarsId(18) @JvmField val iTermType: Int? = null,
@TarsId(19) @JvmField val oVipInfo: VipBaseInfo? = null, //? bad
@TarsId(20) @JvmField val network: Byte? = null,
@TarsId(21) @JvmField val vecRing: ByteArray? = null,
@TarsId(22) @JvmField val uAbiFlag: Long? = null,
@TarsId(23) @JvmField val ulFaceAddonId: Long? = null,
@TarsId(24) @JvmField val eNetworkType: Int? = 0,
@TarsId(25) @JvmField val uVipFont: Long? = null,
@TarsId(26) @JvmField val eIconType: Int? = 0,
@TarsId(27) @JvmField val termDesc: String? = "",
@TarsId(28) @JvmField val uColorRing: Long? = null,
@TarsId(29) @JvmField val apolloFlag: Byte? = null,
@TarsId(30) @JvmField val uApolloTimestamp: Long? = null,
@TarsId(31) @JvmField val sex: Byte? = null,
@TarsId(32) @JvmField val uFounderFont: Long? = null,
@TarsId(33) @JvmField val eimId: String? = "",
@TarsId(34) @JvmField val eimMobile: String? = "",
@TarsId(35) @JvmField val olympicTorch: Byte? = null,
@TarsId(36) @JvmField val uApolloSignTime: Long? = null,
@TarsId(37) @JvmField val uLaviUin: Long? = null,
@TarsId(38) @JvmField val uTagUpdateTime: Long? = null,
@TarsId(39) @JvmField val uGameLastLoginTime: Long? = null,
@TarsId(40) @JvmField val uGameAppid: Long? = null,
@TarsId(41) @JvmField val vecCardID: ByteArray? = null,
@TarsId(42) @JvmField val ulBitSet: Long? = null,
@TarsId(43) @JvmField val kingOfGloryFlag: Byte? = null,
@TarsId(44) @JvmField val ulKingOfGloryRank: Long? = null,
@TarsId(45) @JvmField val masterUin: String? = "",
@TarsId(46) @JvmField val uLastMedalUpdateTime: Long? = null,
@TarsId(47) @JvmField val uFaceStoreId: Long? = null,
@TarsId(48) @JvmField val uFontEffect: Long? = null,
@TarsId(49) @JvmField val sDOVId: String? = "",
@TarsId(50) @JvmField val uBothFlag: Long? = null,
@TarsId(51) @JvmField val centiShow3DFlag: Byte? = null,
@TarsId(52) @JvmField val vecIntimateInfo: ByteArray? = null,
@TarsId(53) @JvmField val showNameplate: Byte? = null,
@TarsId(54) @JvmField val newLoverDiamondFlag: Byte? = null,
@TarsId(55) @JvmField val vecExtSnsFrdData: ByteArray? = null,
@TarsId(56) @JvmField val vecMutualMarkData: ByteArray? = null
) : JceStruct
@Serializable
internal class VipBaseInfo(
@JceId(0) @JvmField val mOpenInfo: Map<Int, VipOpenInfo>? = null,
@TarsId(0) @JvmField val mOpenInfo: Map<Int, VipOpenInfo>? = null,
// 1, 2 are since 8.2.7
@JceId(1) @JvmField val iNameplateVipType: Int? = 0,
@JceId(2) @JvmField val iGrayNameplateFlag: Int? = 0
@TarsId(1) @JvmField val iNameplateVipType: Int? = 0,
@TarsId(2) @JvmField val iGrayNameplateFlag: Int? = 0
) : JceStruct
@Serializable
internal class VipOpenInfo(
@JceId(0) @JvmField val open: Boolean? = false,
@JceId(1) @JvmField val iVipType: Int = -1,
@JceId(2) @JvmField val iVipLevel: Int = -1,
@JceId(3) @JvmField val iVipFlag: Int? = null,
@JceId(4) @JvmField val nameplateId: Long? = null
@TarsId(0) @JvmField val open: Boolean? = false,
@TarsId(1) @JvmField val iVipType: Int = -1,
@TarsId(2) @JvmField val iVipLevel: Int = -1,
@TarsId(3) @JvmField val iVipFlag: Int? = null,
@TarsId(4) @JvmField val nameplateId: Long? = null
) : JceStruct
@Serializable
internal class GroupInfo(
@JceId(0) @JvmField val groupId: Byte,
@JceId(1) @JvmField val groupname: String = "",
@JceId(2) @JvmField val friendCount: Int,
@JceId(3) @JvmField val onlineFriendCount: Int,
@JceId(4) @JvmField val seqid: Byte? = null,
@JceId(5) @JvmField val sqqOnLineCount: Int? = null
@TarsId(0) @JvmField val groupId: Byte,
@TarsId(1) @JvmField val groupname: String = "",
@TarsId(2) @JvmField val friendCount: Int,
@TarsId(3) @JvmField val onlineFriendCount: Int,
@TarsId(4) @JvmField val seqid: Byte? = null,
@TarsId(5) @JvmField val sqqOnLineCount: Int? = null
) : JceStruct

View File

@ -1,43 +1,43 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.jce
import kotlinx.serialization.Serializable
import moe.him188.jcekt.JceId
import net.mamoe.mirai.qqandroid.utils.io.JceStruct
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.TarsId
import kotlin.jvm.JvmField
@Serializable
internal class GroupMngReqJce(
@JceId(0) @JvmField val reqtype: Int,
@JceId(1) @JvmField val uin: Long,
@JceId(2) @JvmField val vecBody: ByteArray,
@JceId(3) @JvmField val checkInGroup: Byte? = null,
@JceId(4) @JvmField val sGroupLocation: String? = "",
@JceId(5) @JvmField val statOption: Byte? = null,
@JceId(6) @JvmField val wSourceID: Int? = null,
@JceId(7) @JvmField val wSourceSubID: Int? = null,
@JceId(8) @JvmField val isSupportAuthQuestionJoin: Byte? = null,
@JceId(9) @JvmField val ifGetAuthInfo: Byte? = null,
@JceId(10) @JvmField val dwDiscussUin: Long? = null,
@JceId(11) @JvmField val sJoinGroupKey: String? = "",
@JceId(12) @JvmField val sJoinGroupPicUrl: String? = "",
@JceId(13) @JvmField val vecJoinGroupRichMsg: ByteArray? = null,
@JceId(14) @JvmField val sJoinGroupAuth: String? = "",
@JceId(15) @JvmField val sJoinGroupVerifyToken: String? = "",
@JceId(16) @JvmField val dwJoinVerifyType: Long? = null
@TarsId(0) @JvmField val reqtype: Int,
@TarsId(1) @JvmField val uin: Long,
@TarsId(2) @JvmField val vecBody: ByteArray,
@TarsId(3) @JvmField val checkInGroup: Byte? = null,
@TarsId(4) @JvmField val sGroupLocation: String? = "",
@TarsId(5) @JvmField val statOption: Byte? = null,
@TarsId(6) @JvmField val wSourceID: Int? = null,
@TarsId(7) @JvmField val wSourceSubID: Int? = null,
@TarsId(8) @JvmField val isSupportAuthQuestionJoin: Byte? = null,
@TarsId(9) @JvmField val ifGetAuthInfo: Byte? = null,
@TarsId(10) @JvmField val dwDiscussUin: Long? = null,
@TarsId(11) @JvmField val sJoinGroupKey: String? = "",
@TarsId(12) @JvmField val sJoinGroupPicUrl: String? = "",
@TarsId(13) @JvmField val vecJoinGroupRichMsg: ByteArray? = null,
@TarsId(14) @JvmField val sJoinGroupAuth: String? = "",
@TarsId(15) @JvmField val sJoinGroupVerifyToken: String? = "",
@TarsId(16) @JvmField val dwJoinVerifyType: Long? = null
) : JceStruct
@Serializable
internal class GroupMngRes(
@JceId(0) @JvmField val reqtype: Int,
@JceId(1) @JvmField val result: Byte,
@JceId(2) @JvmField val vecBody: ByteArray,
@JceId(3) @JvmField val errorString: String = "",
@JceId(4) @JvmField val errorCode: Short = 0,
@JceId(5) @JvmField val isInGroup: Byte? = null,
@JceId(6) @JvmField val sGroupLocation: String? = "",
@JceId(7) @JvmField val isMemInvite: Byte? = null,
@JceId(8) @JvmField val sAuthGrpInfo: String? = "",
@JceId(9) @JvmField val sJoinQuestion: String? = "",
@JceId(10) @JvmField val sJoinAnswer: String? = "",
@JceId(11) @JvmField val dwDis2GrpLimitType: Long? = null
@TarsId(0) @JvmField val reqtype: Int,
@TarsId(1) @JvmField val result: Byte,
@TarsId(2) @JvmField val vecBody: ByteArray,
@TarsId(3) @JvmField val errorString: String = "",
@TarsId(4) @JvmField val errorCode: Short = 0,
@TarsId(5) @JvmField val isInGroup: Byte? = null,
@TarsId(6) @JvmField val sGroupLocation: String? = "",
@TarsId(7) @JvmField val isMemInvite: Byte? = null,
@TarsId(8) @JvmField val sAuthGrpInfo: String? = "",
@TarsId(9) @JvmField val sJoinQuestion: String? = "",
@TarsId(10) @JvmField val sJoinAnswer: String? = "",
@TarsId(11) @JvmField val dwDis2GrpLimitType: Long? = null
) : JceStruct

View File

@ -1,216 +1,216 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.jce
import kotlinx.serialization.Serializable
import moe.him188.jcekt.JceId
import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
import net.mamoe.mirai.qqandroid.utils.io.JceStruct
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.TarsId
import kotlin.jvm.JvmField
@Serializable
internal class AddGroup(
@JceId(0) @JvmField val dwGroupID: Long? = null,
@JceId(1) @JvmField val dwSortID: Long? = null,
@JceId(2) @JvmField val groupName: String? = ""
@TarsId(0) @JvmField val dwGroupID: Long? = null,
@TarsId(1) @JvmField val dwSortID: Long? = null,
@TarsId(2) @JvmField val groupName: String? = ""
) : JceStruct
@Serializable
internal class DelGroup(
@JceId(0) @JvmField val dwGroupID: Long? = null
@TarsId(0) @JvmField val dwGroupID: Long? = null
) : JceStruct
@Serializable
internal class FriendGroup(
@JceId(0) @JvmField val dwFuin: Long? = null,
@JceId(1) @JvmField val vOldGroupID: List<Long>? = null,
@JceId(2) @JvmField val vNewGroupID: List<Long>? = null
@TarsId(0) @JvmField val dwFuin: Long? = null,
@TarsId(1) @JvmField val vOldGroupID: List<Long>? = null,
@TarsId(2) @JvmField val vNewGroupID: List<Long>? = null
) : JceStruct
@Serializable
internal class GroupSort(
@JceId(0) @JvmField val dwGroupID: Long? = null,
@JceId(1) @JvmField val dwSortID: Long? = null
@TarsId(0) @JvmField val dwGroupID: Long? = null,
@TarsId(1) @JvmField val dwSortID: Long? = null
) : JceStruct
@Serializable
internal class MarketFaceInfo(
@JceId(0) @JvmField val insertIdx: Long,
@JceId(1) @JvmField val marketFaceBuff: ByteArray
@TarsId(0) @JvmField val insertIdx: Long,
@TarsId(1) @JvmField val marketFaceBuff: ByteArray
) : JceStruct
@Serializable
internal class ModFriendGroup(
@JceId(0) @JvmField val vMsgFrdGroup: List<FriendGroup>? = null
@TarsId(0) @JvmField val vMsgFrdGroup: List<FriendGroup>? = null
) : JceStruct
@Serializable
internal class ModGroupName(
@JceId(0) @JvmField val dwGroupID: Long? = null,
@JceId(1) @JvmField val groupName: String? = ""
@TarsId(0) @JvmField val dwGroupID: Long? = null,
@TarsId(1) @JvmField val groupName: String? = ""
) : JceStruct
@Serializable
internal class ModGroupSort(
@JceId(0) @JvmField val vMsgGroupSort: List<GroupSort>? = null
@TarsId(0) @JvmField val vMsgGroupSort: List<GroupSort>? = null
) : JceStruct
@Serializable
internal class MsgType0x210(
@JceId(0) @JvmField val uSubMsgType: Long,
@JceId(1) @JvmField val stMsgInfo0x2: MsgType0x210SubMsgType0x2? = null,
@JceId(3) @JvmField val stMsgInfo0xa: MsgType0x210SubMsgType0xa? = null,
@JceId(4) @JvmField val stMsgInfo0xe: MsgType0x210SubMsgType0xe? = null,
@JceId(5) @JvmField val stMsgInfo0x13: MsgType0x210SubMsgType0x13? = null,
@JceId(6) @JvmField val stMsgInfo0x17: MsgType0x210SubMsgType0x17? = null,
@JceId(7) @JvmField val stMsgInfo0x20: MsgType0x210SubMsgType0x20? = null,
@JceId(8) @JvmField val stMsgInfo0x1d: MsgType0x210SubMsgType0x1d? = null,
@JceId(9) @JvmField val stMsgInfo0x24: MsgType0x210SubMsgType0x24? = null,
@JceId(10) @JvmField val vProtobuf: ByteArray = EMPTY_BYTE_ARRAY
@TarsId(0) @JvmField val uSubMsgType: Long,
@TarsId(1) @JvmField val stMsgInfo0x2: MsgType0x210SubMsgType0x2? = null,
@TarsId(3) @JvmField val stMsgInfo0xa: MsgType0x210SubMsgType0xa? = null,
@TarsId(4) @JvmField val stMsgInfo0xe: MsgType0x210SubMsgType0xe? = null,
@TarsId(5) @JvmField val stMsgInfo0x13: MsgType0x210SubMsgType0x13? = null,
@TarsId(6) @JvmField val stMsgInfo0x17: MsgType0x210SubMsgType0x17? = null,
@TarsId(7) @JvmField val stMsgInfo0x20: MsgType0x210SubMsgType0x20? = null,
@TarsId(8) @JvmField val stMsgInfo0x1d: MsgType0x210SubMsgType0x1d? = null,
@TarsId(9) @JvmField val stMsgInfo0x24: MsgType0x210SubMsgType0x24? = null,
@TarsId(10) @JvmField val vProtobuf: ByteArray = EMPTY_BYTE_ARRAY
) : JceStruct
@Serializable
internal class MsgType0x210SubMsgType0x13(
@JceId(0) @JvmField val uint32SrcAppId: Long? = null,
@JceId(1) @JvmField val uint32SrcInstId: Long? = null,
@JceId(2) @JvmField val uint32DstAppId: Long? = null,
@JceId(3) @JvmField val uint32DstInstId: Long? = null,
@JceId(4) @JvmField val uint64DstUin: Long? = null,
@JceId(5) @JvmField val uint64Sessionid: Long? = null,
@JceId(6) @JvmField val uint32Size: Long? = null,
@JceId(7) @JvmField val uint32Index: Long? = null,
@JceId(8) @JvmField val uint32Type: Long? = null,
@JceId(9) @JvmField val buf: ByteArray? = null
@TarsId(0) @JvmField val uint32SrcAppId: Long? = null,
@TarsId(1) @JvmField val uint32SrcInstId: Long? = null,
@TarsId(2) @JvmField val uint32DstAppId: Long? = null,
@TarsId(3) @JvmField val uint32DstInstId: Long? = null,
@TarsId(4) @JvmField val uint64DstUin: Long? = null,
@TarsId(5) @JvmField val uint64Sessionid: Long? = null,
@TarsId(6) @JvmField val uint32Size: Long? = null,
@TarsId(7) @JvmField val uint32Index: Long? = null,
@TarsId(8) @JvmField val uint32Type: Long? = null,
@TarsId(9) @JvmField val buf: ByteArray? = null
) : JceStruct
@Serializable
internal class MsgType0x210SubMsgType0x13_MsgItem(
@JceId(0) @JvmField val uint32Type: Long? = null,
@JceId(1) @JvmField val text: ByteArray? = null
@TarsId(0) @JvmField val uint32Type: Long? = null,
@TarsId(1) @JvmField val text: ByteArray? = null
) : JceStruct
@Serializable
internal class MsgType0x210SubMsgType0x17(
@JceId(0) @JvmField val dwOpType: Long? = null,
@JceId(1) @JvmField val stAddGroup: AddGroup? = null,
@JceId(2) @JvmField val stDelGroup: DelGroup? = null,
@JceId(3) @JvmField val stModGroupName: ModGroupName? = null,
@JceId(4) @JvmField val stModGroupSort: ModGroupSort? = null,
@JceId(5) @JvmField val stModFriendGroup: ModFriendGroup? = null
@TarsId(0) @JvmField val dwOpType: Long? = null,
@TarsId(1) @JvmField val stAddGroup: AddGroup? = null,
@TarsId(2) @JvmField val stDelGroup: DelGroup? = null,
@TarsId(3) @JvmField val stModGroupName: ModGroupName? = null,
@TarsId(4) @JvmField val stModGroupSort: ModGroupSort? = null,
@TarsId(5) @JvmField val stModFriendGroup: ModFriendGroup? = null
) : JceStruct
@Serializable
internal class MsgType0x210SubMsgType0x1d(
@JceId(0) @JvmField val dwOpType: Long? = null,
@JceId(1) @JvmField val dwUin: Long? = null,
@JceId(2) @JvmField val dwID: Long? = null,
@JceId(3) @JvmField val value: String? = ""
@TarsId(0) @JvmField val dwOpType: Long? = null,
@TarsId(1) @JvmField val dwUin: Long? = null,
@TarsId(2) @JvmField val dwID: Long? = null,
@TarsId(3) @JvmField val value: String? = ""
) : JceStruct
@Serializable
internal class MsgType0x210SubMsgType0x2(
@JceId(0) @JvmField val uSrcAppId: Long? = null,
@JceId(1) @JvmField val uSrcInstId: Long? = null,
@JceId(2) @JvmField val uDstAppId: Long? = null,
@JceId(3) @JvmField val uDstInstId: Long? = null,
@JceId(4) @JvmField val uDstUin: Long? = null,
@JceId(5) @JvmField val fileName: ByteArray? = null,
@JceId(6) @JvmField val fileIndex: ByteArray? = null,
@JceId(7) @JvmField val fileMd5: ByteArray? = null,
@JceId(8) @JvmField val fileKey: ByteArray? = null,
@JceId(9) @JvmField val uServerIp: Long? = null,
@JceId(10) @JvmField val uServerPort: Long? = null,
@JceId(11) @JvmField val fileLen: Long? = null,
@JceId(12) @JvmField val sessionId: Long? = null,
@JceId(13) @JvmField val originfileMd5: ByteArray? = null,
@JceId(14) @JvmField val uOriginfiletype: Long? = null,
@JceId(15) @JvmField val uSeq: Long? = null
@TarsId(0) @JvmField val uSrcAppId: Long? = null,
@TarsId(1) @JvmField val uSrcInstId: Long? = null,
@TarsId(2) @JvmField val uDstAppId: Long? = null,
@TarsId(3) @JvmField val uDstInstId: Long? = null,
@TarsId(4) @JvmField val uDstUin: Long? = null,
@TarsId(5) @JvmField val fileName: ByteArray? = null,
@TarsId(6) @JvmField val fileIndex: ByteArray? = null,
@TarsId(7) @JvmField val fileMd5: ByteArray? = null,
@TarsId(8) @JvmField val fileKey: ByteArray? = null,
@TarsId(9) @JvmField val uServerIp: Long? = null,
@TarsId(10) @JvmField val uServerPort: Long? = null,
@TarsId(11) @JvmField val fileLen: Long? = null,
@TarsId(12) @JvmField val sessionId: Long? = null,
@TarsId(13) @JvmField val originfileMd5: ByteArray? = null,
@TarsId(14) @JvmField val uOriginfiletype: Long? = null,
@TarsId(15) @JvmField val uSeq: Long? = null
) : JceStruct
@Serializable
internal class MsgType0x210SubMsgType0x20(
@JceId(0) @JvmField val dwOpType: Long? = null,
@JceId(1) @JvmField val dwType: Long? = null,
@JceId(2) @JvmField val dwUin: Long? = null,
@JceId(3) @JvmField val remaek: String? = ""
@TarsId(0) @JvmField val dwOpType: Long? = null,
@TarsId(1) @JvmField val dwType: Long? = null,
@TarsId(2) @JvmField val dwUin: Long? = null,
@TarsId(3) @JvmField val remaek: String? = ""
) : JceStruct
@Serializable
internal class MsgType0x210SubMsgType0x24(
@JceId(0) @JvmField val vPluginNumList: List<PluginNum>? = null
@TarsId(0) @JvmField val vPluginNumList: List<PluginNum>? = null
) : JceStruct
@Serializable
internal class MsgType0x210SubMsgType0xa(
@JceId(0) @JvmField val uSrcAppId: Long? = null,
@JceId(1) @JvmField val uSrcInstId: Long? = null,
@JceId(2) @JvmField val uDstAppId: Long? = null,
@JceId(3) @JvmField val uDstInstId: Long? = null,
@JceId(4) @JvmField val uDstUin: Long? = null,
@JceId(5) @JvmField val uType: Long? = null,
@JceId(6) @JvmField val uServerIp: Long? = null,
@JceId(7) @JvmField val uServerPort: Long? = null,
@JceId(8) @JvmField val vUrlNotify: ByteArray? = null,
@JceId(9) @JvmField val vTokenKey: ByteArray? = null,
@JceId(10) @JvmField val uFileLen: Long? = null,
@JceId(11) @JvmField val fileName: ByteArray? = null,
@JceId(12) @JvmField val vMd5: ByteArray? = null,
@JceId(13) @JvmField val sessionId: Long? = null,
@JceId(14) @JvmField val originfileMd5: ByteArray? = null,
@JceId(15) @JvmField val uOriginfiletype: Long? = null,
@JceId(16) @JvmField val uSeq: Long? = null
@TarsId(0) @JvmField val uSrcAppId: Long? = null,
@TarsId(1) @JvmField val uSrcInstId: Long? = null,
@TarsId(2) @JvmField val uDstAppId: Long? = null,
@TarsId(3) @JvmField val uDstInstId: Long? = null,
@TarsId(4) @JvmField val uDstUin: Long? = null,
@TarsId(5) @JvmField val uType: Long? = null,
@TarsId(6) @JvmField val uServerIp: Long? = null,
@TarsId(7) @JvmField val uServerPort: Long? = null,
@TarsId(8) @JvmField val vUrlNotify: ByteArray? = null,
@TarsId(9) @JvmField val vTokenKey: ByteArray? = null,
@TarsId(10) @JvmField val uFileLen: Long? = null,
@TarsId(11) @JvmField val fileName: ByteArray? = null,
@TarsId(12) @JvmField val vMd5: ByteArray? = null,
@TarsId(13) @JvmField val sessionId: Long? = null,
@TarsId(14) @JvmField val originfileMd5: ByteArray? = null,
@TarsId(15) @JvmField val uOriginfiletype: Long? = null,
@TarsId(16) @JvmField val uSeq: Long? = null
) : JceStruct
@Serializable
internal class MsgType0x210SubMsgType0xe(
@JceId(0) @JvmField val uint32SrcAppId: Long? = null,
@JceId(1) @JvmField val uint32SrcInstId: Long? = null,
@JceId(2) @JvmField val uint32DstAppId: Long? = null,
@JceId(3) @JvmField val uint32DstInstId: Long? = null,
@JceId(4) @JvmField val uint64DstUin: Long? = null,
@JceId(5) @JvmField val uint64Sessionid: Long? = null,
@JceId(6) @JvmField val uint32Operate: Long? = null,
@JceId(7) @JvmField val uint32Seq: Long? = null,
@JceId(8) @JvmField val uint32Code: Long? = null,
@JceId(9) @JvmField val msg: String? = ""
@TarsId(0) @JvmField val uint32SrcAppId: Long? = null,
@TarsId(1) @JvmField val uint32SrcInstId: Long? = null,
@TarsId(2) @JvmField val uint32DstAppId: Long? = null,
@TarsId(3) @JvmField val uint32DstInstId: Long? = null,
@TarsId(4) @JvmField val uint64DstUin: Long? = null,
@TarsId(5) @JvmField val uint64Sessionid: Long? = null,
@TarsId(6) @JvmField val uint32Operate: Long? = null,
@TarsId(7) @JvmField val uint32Seq: Long? = null,
@TarsId(8) @JvmField val uint32Code: Long? = null,
@TarsId(9) @JvmField val msg: String? = ""
) : JceStruct
@Serializable
internal class PersonInfoChange(
@JceId(0) @JvmField val type: Byte? = null,
@JceId(1) @JvmField val vChgField: List<PersonInfoField>? = null
@TarsId(0) @JvmField val type: Byte? = null,
@TarsId(1) @JvmField val vChgField: List<PersonInfoField>? = null
) : JceStruct
@Serializable
internal class PersonInfoField(
@JceId(0) @JvmField val uField: Long? = null
@TarsId(0) @JvmField val uField: Long? = null
) : JceStruct
@Serializable
internal class PluginNum(
@JceId(0) @JvmField val dwID: Long? = null,
@JceId(1) @JvmField val dwNUm: Long? = null,
@JceId(2) @JvmField val flag: Byte? = null
@TarsId(0) @JvmField val dwID: Long? = null,
@TarsId(1) @JvmField val dwNUm: Long? = null,
@TarsId(2) @JvmField val flag: Byte? = null
) : JceStruct
@Serializable
internal class SlaveMasterMsg(
@JceId(0) @JvmField val uMsgType: Long? = null,
@JceId(1) @JvmField val uCmd: Long? = null,
@JceId(2) @JvmField val uSeq: Long? = null,
@JceId(3) @JvmField val fromUin: Long? = null,
@JceId(4) @JvmField val wFromApp: Short? = null,
@JceId(5) @JvmField val uFromInstId: Long? = null,
@JceId(6) @JvmField val toUin: Long? = null,
@JceId(7) @JvmField val wToApp: Short? = null,
@JceId(8) @JvmField val uToInstId: Long? = null,
@JceId(9) @JvmField val vOrigMsg: ByteArray? = null,
@JceId(10) @JvmField val uLastChangeTime: Long? = null,
@JceId(11) @JvmField val vReserved: ByteArray? = null,
@JceId(12) @JvmField val vMarketFace: List<MarketFaceInfo>? = null,
@JceId(13) @JvmField val uSuperQQBubbleId: Long? = null
@TarsId(0) @JvmField val uMsgType: Long? = null,
@TarsId(1) @JvmField val uCmd: Long? = null,
@TarsId(2) @JvmField val uSeq: Long? = null,
@TarsId(3) @JvmField val fromUin: Long? = null,
@TarsId(4) @JvmField val wFromApp: Short? = null,
@TarsId(5) @JvmField val uFromInstId: Long? = null,
@TarsId(6) @JvmField val toUin: Long? = null,
@TarsId(7) @JvmField val wToApp: Short? = null,
@TarsId(8) @JvmField val uToInstId: Long? = null,
@TarsId(9) @JvmField val vOrigMsg: ByteArray? = null,
@TarsId(10) @JvmField val uLastChangeTime: Long? = null,
@TarsId(11) @JvmField val vReserved: ByteArray? = null,
@TarsId(12) @JvmField val vMarketFace: List<MarketFaceInfo>? = null,
@TarsId(13) @JvmField val uSuperQQBubbleId: Long? = null
) : JceStruct
@Serializable
internal class Type_1_QQDataTextMsg(
@JceId(0) @JvmField val msgItem: List<MsgType0x210SubMsgType0x13_MsgItem>? = null
@TarsId(0) @JvmField val msgItem: List<MsgType0x210SubMsgType0x13_MsgItem>? = null
) : JceStruct

View File

@ -1,250 +1,250 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.jce
import kotlinx.serialization.Serializable
import moe.him188.jcekt.JceId
import net.mamoe.mirai.qqandroid.utils.io.JceStruct
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.TarsId
import kotlin.jvm.JvmField
internal class OnlinePushPack {
@Serializable
internal class DelMsgInfo(
@JceId(0) @JvmField val fromUin: Long,
@JceId(1) @JvmField val uMsgTime: Long,
@JceId(2) @JvmField val shMsgSeq: Short,
@JceId(3) @JvmField val vMsgCookies: ByteArray? = null,
@JceId(4) @JvmField val wCmd: Short? = null,
@JceId(5) @JvmField val uMsgType: Long? = null,
@JceId(6) @JvmField val uAppId: Long? = null,
@JceId(7) @JvmField val sendTime: Long? = null,
@JceId(8) @JvmField val ssoSeq: Int? = null,
@JceId(9) @JvmField val ssoIp: Int? = null,
@JceId(10) @JvmField val clientIp: Int? = null
@TarsId(0) @JvmField val fromUin: Long,
@TarsId(1) @JvmField val uMsgTime: Long,
@TarsId(2) @JvmField val shMsgSeq: Short,
@TarsId(3) @JvmField val vMsgCookies: ByteArray? = null,
@TarsId(4) @JvmField val wCmd: Short? = null,
@TarsId(5) @JvmField val uMsgType: Long? = null,
@TarsId(6) @JvmField val uAppId: Long? = null,
@TarsId(7) @JvmField val sendTime: Long? = null,
@TarsId(8) @JvmField val ssoSeq: Int? = null,
@TarsId(9) @JvmField val ssoIp: Int? = null,
@TarsId(10) @JvmField val clientIp: Int? = null
) : JceStruct
@Serializable
internal class DeviceInfo(
@JceId(0) @JvmField val netType: Byte? = null,
@JceId(1) @JvmField val devType: String? = "",
@JceId(2) @JvmField val oSVer: String? = "",
@JceId(3) @JvmField val vendorName: String? = "",
@JceId(4) @JvmField val vendorOSName: String? = "",
@JceId(5) @JvmField val iOSIdfa: String? = ""
@TarsId(0) @JvmField val netType: Byte? = null,
@TarsId(1) @JvmField val devType: String? = "",
@TarsId(2) @JvmField val oSVer: String? = "",
@TarsId(3) @JvmField val vendorName: String? = "",
@TarsId(4) @JvmField val vendorOSName: String? = "",
@TarsId(5) @JvmField val iOSIdfa: String? = ""
) : JceStruct
@Serializable
internal class Name(
@JceId(0) @JvmField val fromUin: Long,
@JceId(1) @JvmField val uMsgTime: Long,
@JceId(2) @JvmField val shMsgType: Short,
@JceId(3) @JvmField val shMsgSeq: Short,
@JceId(4) @JvmField val msg: String = "",
@JceId(5) @JvmField val uRealMsgTime: Int? = null,
@JceId(6) @JvmField val vMsg: ByteArray? = null,
@JceId(7) @JvmField val uAppShareID: Long? = null,
@JceId(8) @JvmField val vMsgCookies: ByteArray? = null,
@JceId(9) @JvmField val vAppShareCookie: ByteArray? = null,
@JceId(10) @JvmField val msgUid: Long? = null,
@JceId(11) @JvmField val lastChangeTime: Long? = 1L,
@JceId(12) @JvmField val vCPicInfo: List<CPicInfo>? = null,
@JceId(13) @JvmField val stShareData: ShareData? = null,
@JceId(14) @JvmField val fromInstId: Long? = null,
@JceId(15) @JvmField val vRemarkOfSender: ByteArray? = null,
@JceId(16) @JvmField val fromMobile: String? = "",
@JceId(17) @JvmField val fromName: String? = "",
@JceId(18) @JvmField val vNickName: List<String>? = null,
@JceId(19) @JvmField val stC2CTmpMsgHead: TempMsgHead? = null
@TarsId(0) @JvmField val fromUin: Long,
@TarsId(1) @JvmField val uMsgTime: Long,
@TarsId(2) @JvmField val shMsgType: Short,
@TarsId(3) @JvmField val shMsgSeq: Short,
@TarsId(4) @JvmField val msg: String = "",
@TarsId(5) @JvmField val uRealMsgTime: Int? = null,
@TarsId(6) @JvmField val vMsg: ByteArray? = null,
@TarsId(7) @JvmField val uAppShareID: Long? = null,
@TarsId(8) @JvmField val vMsgCookies: ByteArray? = null,
@TarsId(9) @JvmField val vAppShareCookie: ByteArray? = null,
@TarsId(10) @JvmField val msgUid: Long? = null,
@TarsId(11) @JvmField val lastChangeTime: Long? = 1L,
@TarsId(12) @JvmField val vCPicInfo: List<CPicInfo>? = null,
@TarsId(13) @JvmField val stShareData: ShareData? = null,
@TarsId(14) @JvmField val fromInstId: Long? = null,
@TarsId(15) @JvmField val vRemarkOfSender: ByteArray? = null,
@TarsId(16) @JvmField val fromMobile: String? = "",
@TarsId(17) @JvmField val fromName: String? = "",
@TarsId(18) @JvmField val vNickName: List<String>? = null,
@TarsId(19) @JvmField val stC2CTmpMsgHead: TempMsgHead? = null
) : JceStruct
@Serializable
internal class SvcReqPushMsg(
@JceId(0) @JvmField val uin: Long,
@JceId(1) @JvmField val uMsgTime: Long,
@JceId(2) @JvmField val vMsgInfos: List<MsgInfo>,
@JceId(3) @JvmField val svrip: Int? = 0,
@JceId(4) @JvmField val vSyncCookie: ByteArray? = null,
@JceId(5) @JvmField val vUinPairMsg: List<UinPairMsg>? = null,
@JceId(6) @JvmField val mPreviews: Map<String, ByteArray>? = null
@TarsId(0) @JvmField val uin: Long,
@TarsId(1) @JvmField val uMsgTime: Long,
@TarsId(2) @JvmField val vMsgInfos: List<MsgInfo>,
@TarsId(3) @JvmField val svrip: Int? = 0,
@TarsId(4) @JvmField val vSyncCookie: ByteArray? = null,
@TarsId(5) @JvmField val vUinPairMsg: List<UinPairMsg>? = null,
@TarsId(6) @JvmField val mPreviews: Map<String, ByteArray>? = null
// @SerialId(7) @JvmField val wUserActive: Int? = null,
//@SerialId(12) @JvmField val wGeneralFlag: Int? = null
) : JceStruct
@Serializable
internal class SvcRespPushMsg(
@JceId(0) @JvmField val uin: Long,
@JceId(1) @JvmField val vDelInfos: List<DelMsgInfo>,
@JceId(2) @JvmField val svrip: Int = 0,
@JceId(3) @JvmField val pushToken: ByteArray? = null,
@JceId(4) @JvmField val serviceType: Int? = null,
@JceId(5) @JvmField val deviceInfo: DeviceInfo? = null
@TarsId(0) @JvmField val uin: Long,
@TarsId(1) @JvmField val vDelInfos: List<DelMsgInfo>,
@TarsId(2) @JvmField val svrip: Int = 0,
@TarsId(3) @JvmField val pushToken: ByteArray? = null,
@TarsId(4) @JvmField val serviceType: Int? = null,
@TarsId(5) @JvmField val deviceInfo: DeviceInfo? = null
) : JceStruct
@Serializable
internal class UinPairMsg(
@JceId(1) @JvmField val uLastReadTime: Long? = null,
@JceId(2) @JvmField val peerUin: Long? = null,
@JceId(3) @JvmField val uMsgCompleted: Long? = null,
@JceId(4) @JvmField val vMsgInfos: List<MsgInfo>? = null
@TarsId(1) @JvmField val uLastReadTime: Long? = null,
@TarsId(2) @JvmField val peerUin: Long? = null,
@TarsId(3) @JvmField val uMsgCompleted: Long? = null,
@TarsId(4) @JvmField val vMsgInfos: List<MsgInfo>? = null
) : JceStruct
@Serializable
internal class MsgType0x210(
@JceId(0) @JvmField val uSubMsgType: Long,
@JceId(1) @JvmField val stMsgInfo0x2: MsgType0x210SubMsgType0x2? = null,
@JceId(3) @JvmField val stMsgInfo0xa: MsgType0x210SubMsgType0xa? = null,
@JceId(4) @JvmField val stMsgInfo0xe: MsgType0x210SubMsgType0xe? = null,
@JceId(5) @JvmField val stMsgInfo0x13: MsgType0x210SubMsgType0x13? = null,
@JceId(6) @JvmField val stMsgInfo0x17: MsgType0x210SubMsgType0x17? = null,
@JceId(7) @JvmField val stMsgInfo0x20: MsgType0x210SubMsgType0x20? = null,
@JceId(8) @JvmField val stMsgInfo0x1d: MsgType0x210SubMsgType0x1d? = null,
@JceId(9) @JvmField val stMsgInfo0x24: MsgType0x210SubMsgType0x24? = null,
@JceId(10) @JvmField val vProtobuf: ByteArray? = null
@TarsId(0) @JvmField val uSubMsgType: Long,
@TarsId(1) @JvmField val stMsgInfo0x2: MsgType0x210SubMsgType0x2? = null,
@TarsId(3) @JvmField val stMsgInfo0xa: MsgType0x210SubMsgType0xa? = null,
@TarsId(4) @JvmField val stMsgInfo0xe: MsgType0x210SubMsgType0xe? = null,
@TarsId(5) @JvmField val stMsgInfo0x13: MsgType0x210SubMsgType0x13? = null,
@TarsId(6) @JvmField val stMsgInfo0x17: MsgType0x210SubMsgType0x17? = null,
@TarsId(7) @JvmField val stMsgInfo0x20: MsgType0x210SubMsgType0x20? = null,
@TarsId(8) @JvmField val stMsgInfo0x1d: MsgType0x210SubMsgType0x1d? = null,
@TarsId(9) @JvmField val stMsgInfo0x24: MsgType0x210SubMsgType0x24? = null,
@TarsId(10) @JvmField val vProtobuf: ByteArray? = null
) : JceStruct
@Serializable
internal class MsgType0x210SubMsgType0x13(
@JceId(0) @JvmField val uint32SrcAppId: Long? = null,
@JceId(1) @JvmField val uint32SrcInstId: Long? = null,
@JceId(2) @JvmField val uint32DstAppId: Long? = null,
@JceId(3) @JvmField val uint32DstInstId: Long? = null,
@JceId(4) @JvmField val uint64DstUin: Long? = null,
@JceId(5) @JvmField val uint64Sessionid: Long? = null,
@JceId(6) @JvmField val uint32Size: Long? = null,
@JceId(7) @JvmField val uint32Index: Long? = null,
@JceId(8) @JvmField val uint32Type: Long? = null,
@JceId(9) @JvmField val buf: ByteArray? = null
@TarsId(0) @JvmField val uint32SrcAppId: Long? = null,
@TarsId(1) @JvmField val uint32SrcInstId: Long? = null,
@TarsId(2) @JvmField val uint32DstAppId: Long? = null,
@TarsId(3) @JvmField val uint32DstInstId: Long? = null,
@TarsId(4) @JvmField val uint64DstUin: Long? = null,
@TarsId(5) @JvmField val uint64Sessionid: Long? = null,
@TarsId(6) @JvmField val uint32Size: Long? = null,
@TarsId(7) @JvmField val uint32Index: Long? = null,
@TarsId(8) @JvmField val uint32Type: Long? = null,
@TarsId(9) @JvmField val buf: ByteArray? = null
) : JceStruct
@Serializable
internal class MsgType0x210SubMsgType0x17(
@JceId(0) @JvmField val dwOpType: Long? = null,
@JceId(1) @JvmField val stAddGroup: AddGroup? = null,
@JceId(2) @JvmField val stDelGroup: DelGroup? = null,
@JceId(3) @JvmField val stModGroupName: ModGroupName? = null,
@JceId(4) @JvmField val stModGroupSort: ModGroupSort? = null,
@JceId(5) @JvmField val stModFriendGroup: ModFriendGroup? = null
@TarsId(0) @JvmField val dwOpType: Long? = null,
@TarsId(1) @JvmField val stAddGroup: AddGroup? = null,
@TarsId(2) @JvmField val stDelGroup: DelGroup? = null,
@TarsId(3) @JvmField val stModGroupName: ModGroupName? = null,
@TarsId(4) @JvmField val stModGroupSort: ModGroupSort? = null,
@TarsId(5) @JvmField val stModFriendGroup: ModFriendGroup? = null
) : JceStruct
@Serializable
internal class AddGroup(
@JceId(0) @JvmField val dwGroupID: Long? = null,
@JceId(1) @JvmField val dwSortID: Long? = null,
@JceId(2) @JvmField val groupName: String? = ""
@TarsId(0) @JvmField val dwGroupID: Long? = null,
@TarsId(1) @JvmField val dwSortID: Long? = null,
@TarsId(2) @JvmField val groupName: String? = ""
) : JceStruct
@Serializable
internal class DelGroup(
@JceId(0) @JvmField val dwGroupID: Long? = null
@TarsId(0) @JvmField val dwGroupID: Long? = null
) : JceStruct
@Serializable
internal class ModFriendGroup(
@JceId(0) @JvmField val vMsgFrdGroup: List<FriendGroup>? = null
@TarsId(0) @JvmField val vMsgFrdGroup: List<FriendGroup>? = null
) : JceStruct
@Serializable
internal class FriendGroup(
@JceId(0) @JvmField val dwFuin: Long? = null,
@JceId(1) @JvmField val vOldGroupID: List<Long>? = null,
@JceId(2) @JvmField val vNewGroupID: List<Long>? = null
@TarsId(0) @JvmField val dwFuin: Long? = null,
@TarsId(1) @JvmField val vOldGroupID: List<Long>? = null,
@TarsId(2) @JvmField val vNewGroupID: List<Long>? = null
) : JceStruct
@Serializable
internal class ModGroupName(
@JceId(0) @JvmField val dwGroupID: Long? = null,
@JceId(1) @JvmField val groupName: String? = ""
@TarsId(0) @JvmField val dwGroupID: Long? = null,
@TarsId(1) @JvmField val groupName: String? = ""
) : JceStruct
@Serializable
internal class ModGroupSort(
@JceId(0) @JvmField val vMsgGroupSort: List<GroupSort>? = null
@TarsId(0) @JvmField val vMsgGroupSort: List<GroupSort>? = null
) : JceStruct
@Serializable
internal class GroupSort(
@JceId(0) @JvmField val dwGroupID: Long? = null,
@JceId(1) @JvmField val dwSortID: Long? = null
@TarsId(0) @JvmField val dwGroupID: Long? = null,
@TarsId(1) @JvmField val dwSortID: Long? = null
) : JceStruct
@Serializable
internal class MsgType0x210SubMsgType0x1d(
@JceId(0) @JvmField val dwOpType: Long? = null,
@JceId(1) @JvmField val dwUin: Long? = null,
@JceId(2) @JvmField val dwID: Long? = null,
@JceId(3) @JvmField val value: String? = ""
@TarsId(0) @JvmField val dwOpType: Long? = null,
@TarsId(1) @JvmField val dwUin: Long? = null,
@TarsId(2) @JvmField val dwID: Long? = null,
@TarsId(3) @JvmField val value: String? = ""
) : JceStruct
@Serializable
internal class MsgType0x210SubMsgType0x2(
@JceId(0) @JvmField val uSrcAppId: Long? = null,
@JceId(1) @JvmField val uSrcInstId: Long? = null,
@JceId(2) @JvmField val uDstAppId: Long? = null,
@JceId(3) @JvmField val uDstInstId: Long? = null,
@JceId(4) @JvmField val uDstUin: Long? = null,
@JceId(5) @JvmField val fileName: ByteArray? = null,
@JceId(6) @JvmField val fileIndex: ByteArray? = null,
@JceId(7) @JvmField val fileMd5: ByteArray? = null,
@JceId(8) @JvmField val fileKey: ByteArray? = null,
@JceId(9) @JvmField val uServerIp: Long? = null,
@JceId(10) @JvmField val uServerPort: Long? = null,
@JceId(11) @JvmField val fileLen: Long? = null,
@JceId(12) @JvmField val sessionId: Long? = null,
@JceId(13) @JvmField val originfileMd5: ByteArray? = null,
@JceId(14) @JvmField val uOriginfiletype: Long? = null,
@JceId(15) @JvmField val uSeq: Long? = null
@TarsId(0) @JvmField val uSrcAppId: Long? = null,
@TarsId(1) @JvmField val uSrcInstId: Long? = null,
@TarsId(2) @JvmField val uDstAppId: Long? = null,
@TarsId(3) @JvmField val uDstInstId: Long? = null,
@TarsId(4) @JvmField val uDstUin: Long? = null,
@TarsId(5) @JvmField val fileName: ByteArray? = null,
@TarsId(6) @JvmField val fileIndex: ByteArray? = null,
@TarsId(7) @JvmField val fileMd5: ByteArray? = null,
@TarsId(8) @JvmField val fileKey: ByteArray? = null,
@TarsId(9) @JvmField val uServerIp: Long? = null,
@TarsId(10) @JvmField val uServerPort: Long? = null,
@TarsId(11) @JvmField val fileLen: Long? = null,
@TarsId(12) @JvmField val sessionId: Long? = null,
@TarsId(13) @JvmField val originfileMd5: ByteArray? = null,
@TarsId(14) @JvmField val uOriginfiletype: Long? = null,
@TarsId(15) @JvmField val uSeq: Long? = null
) : JceStruct
@Serializable
internal class MsgType0x210SubMsgType0x20(
@JceId(0) @JvmField val dwOpType: Long? = null,
@JceId(1) @JvmField val dwType: Long? = null,
@JceId(2) @JvmField val dwUin: Long? = null,
@JceId(3) @JvmField val remaek: String? = ""
@TarsId(0) @JvmField val dwOpType: Long? = null,
@TarsId(1) @JvmField val dwType: Long? = null,
@TarsId(2) @JvmField val dwUin: Long? = null,
@TarsId(3) @JvmField val remaek: String? = ""
) : JceStruct
@Serializable
internal class MsgType0x210SubMsgType0x24(
@JceId(0) @JvmField val vPluginNumList: List<PluginNum>? = null
@TarsId(0) @JvmField val vPluginNumList: List<PluginNum>? = null
) : JceStruct
@Serializable
internal class PluginNum(
@JceId(0) @JvmField val dwID: Long? = null,
@JceId(1) @JvmField val dwNUm: Long? = null,
@JceId(2) @JvmField val flag: Byte? = null
@TarsId(0) @JvmField val dwID: Long? = null,
@TarsId(1) @JvmField val dwNUm: Long? = null,
@TarsId(2) @JvmField val flag: Byte? = null
) : JceStruct
@Serializable
internal class MsgType0x210SubMsgType0xa(
@JceId(0) @JvmField val uSrcAppId: Long? = null,
@JceId(1) @JvmField val uSrcInstId: Long? = null,
@JceId(2) @JvmField val uDstAppId: Long? = null,
@JceId(3) @JvmField val uDstInstId: Long? = null,
@JceId(4) @JvmField val uDstUin: Long? = null,
@JceId(5) @JvmField val uType: Long? = null,
@JceId(6) @JvmField val uServerIp: Long? = null,
@JceId(7) @JvmField val uServerPort: Long? = null,
@JceId(8) @JvmField val vUrlNotify: ByteArray? = null,
@JceId(9) @JvmField val vTokenKey: ByteArray? = null,
@JceId(10) @JvmField val uFileLen: Long? = null,
@JceId(11) @JvmField val fileName: ByteArray? = null,
@JceId(12) @JvmField val vMd5: ByteArray? = null,
@JceId(13) @JvmField val sessionId: Long? = null,
@JceId(14) @JvmField val originfileMd5: ByteArray? = null,
@JceId(15) @JvmField val uOriginfiletype: Long? = null,
@JceId(16) @JvmField val uSeq: Long? = null
@TarsId(0) @JvmField val uSrcAppId: Long? = null,
@TarsId(1) @JvmField val uSrcInstId: Long? = null,
@TarsId(2) @JvmField val uDstAppId: Long? = null,
@TarsId(3) @JvmField val uDstInstId: Long? = null,
@TarsId(4) @JvmField val uDstUin: Long? = null,
@TarsId(5) @JvmField val uType: Long? = null,
@TarsId(6) @JvmField val uServerIp: Long? = null,
@TarsId(7) @JvmField val uServerPort: Long? = null,
@TarsId(8) @JvmField val vUrlNotify: ByteArray? = null,
@TarsId(9) @JvmField val vTokenKey: ByteArray? = null,
@TarsId(10) @JvmField val uFileLen: Long? = null,
@TarsId(11) @JvmField val fileName: ByteArray? = null,
@TarsId(12) @JvmField val vMd5: ByteArray? = null,
@TarsId(13) @JvmField val sessionId: Long? = null,
@TarsId(14) @JvmField val originfileMd5: ByteArray? = null,
@TarsId(15) @JvmField val uOriginfiletype: Long? = null,
@TarsId(16) @JvmField val uSeq: Long? = null
) : JceStruct
@Serializable
internal class MsgType0x210SubMsgType0xe(
@JceId(0) @JvmField val uint32SrcAppId: Long? = null,
@JceId(1) @JvmField val uint32SrcInstId: Long? = null,
@JceId(2) @JvmField val uint32DstAppId: Long? = null,
@JceId(3) @JvmField val uint32DstInstId: Long? = null,
@JceId(4) @JvmField val uint64DstUin: Long? = null,
@JceId(5) @JvmField val uint64Sessionid: Long? = null,
@JceId(6) @JvmField val uint32Operate: Long? = null,
@JceId(7) @JvmField val uint32Seq: Long? = null,
@JceId(8) @JvmField val uint32Code: Long? = null,
@JceId(9) @JvmField val msg: String? = ""
@TarsId(0) @JvmField val uint32SrcAppId: Long? = null,
@TarsId(1) @JvmField val uint32SrcInstId: Long? = null,
@TarsId(2) @JvmField val uint32DstAppId: Long? = null,
@TarsId(3) @JvmField val uint32DstInstId: Long? = null,
@TarsId(4) @JvmField val uint64DstUin: Long? = null,
@TarsId(5) @JvmField val uint64Sessionid: Long? = null,
@TarsId(6) @JvmField val uint32Operate: Long? = null,
@TarsId(7) @JvmField val uint32Seq: Long? = null,
@TarsId(8) @JvmField val uint32Code: Long? = null,
@TarsId(9) @JvmField val msg: String? = ""
) : JceStruct
}

View File

@ -1,72 +1,72 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.jce
import kotlinx.serialization.Serializable
import moe.him188.jcekt.JceId
import net.mamoe.mirai.qqandroid.network.Packet
import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
import net.mamoe.mirai.qqandroid.utils.io.JceStruct
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.TarsId
import kotlin.jvm.JvmField
@Suppress("ArrayInDataClass")
@Serializable
internal class RequestPushNotify(
@JceId(0) @JvmField val uin: Long? = 0L,
@JceId(1) @JvmField val ctype: Byte = 0,
@JceId(2) @JvmField val strService: String?,
@JceId(3) @JvmField val strCmd: String?,
@JceId(4) @JvmField val vNotifyCookie: ByteArray? = EMPTY_BYTE_ARRAY,
@JceId(5) @JvmField val usMsgType: Int?,
@JceId(6) @JvmField val wUserActive: Int?,
@JceId(7) @JvmField val wGeneralFlag: Int?,
@JceId(8) @JvmField val bindedUin: Long?,
@JceId(9) @JvmField val stMsgInfo: MsgInfo?,
@JceId(10) @JvmField val msgCtrlBuf: String?,
@JceId(11) @JvmField val serverBuf: ByteArray?,
@JceId(12) @JvmField val pingFlag: Long?,
@JceId(13) @JvmField val svrip: Int?
@TarsId(0) @JvmField val uin: Long? = 0L,
@TarsId(1) @JvmField val ctype: Byte = 0,
@TarsId(2) @JvmField val strService: String?,
@TarsId(3) @JvmField val strCmd: String?,
@TarsId(4) @JvmField val vNotifyCookie: ByteArray? = EMPTY_BYTE_ARRAY,
@TarsId(5) @JvmField val usMsgType: Int?,
@TarsId(6) @JvmField val wUserActive: Int?,
@TarsId(7) @JvmField val wGeneralFlag: Int?,
@TarsId(8) @JvmField val bindedUin: Long?,
@TarsId(9) @JvmField val stMsgInfo: MsgInfo?,
@TarsId(10) @JvmField val msgCtrlBuf: String?,
@TarsId(11) @JvmField val serverBuf: ByteArray?,
@TarsId(12) @JvmField val pingFlag: Long?,
@TarsId(13) @JvmField val svrip: Int?
) : JceStruct, Packet
@Serializable
internal class MsgInfo(
@JceId(0) @JvmField val lFromUin: Long = 0L,
@JceId(1) @JvmField val uMsgTime: Long = 0L,
@JceId(2) @JvmField val shMsgType: Short,
@JceId(3) @JvmField val shMsgSeq: Short,
@JceId(4) @JvmField val strMsg: String?,
@JceId(5) @JvmField val uRealMsgTime: Int?,
@JceId(6) @JvmField val vMsg: ByteArray,
@JceId(7) @JvmField val uAppShareID: Long?,
@JceId(8) @JvmField val vMsgCookies: ByteArray? = EMPTY_BYTE_ARRAY,
@JceId(9) @JvmField val vAppShareCookie: ByteArray? = EMPTY_BYTE_ARRAY,
@JceId(10) @JvmField val lMsgUid: Long?,
@JceId(11) @JvmField val lLastChangeTime: Long?,
@JceId(12) @JvmField val vCPicInfo: List<CPicInfo>?,
@JceId(13) @JvmField val stShareData: ShareData?,
@JceId(14) @JvmField val lFromInstId: Long?,
@JceId(15) @JvmField val vRemarkOfSender: ByteArray?,
@JceId(16) @JvmField val strFromMobile: String?,
@JceId(17) @JvmField val strFromName: String?,
@JceId(18) @JvmField val vNickName: List<String>?//,
@TarsId(0) @JvmField val lFromUin: Long = 0L,
@TarsId(1) @JvmField val uMsgTime: Long = 0L,
@TarsId(2) @JvmField val shMsgType: Short,
@TarsId(3) @JvmField val shMsgSeq: Short,
@TarsId(4) @JvmField val strMsg: String?,
@TarsId(5) @JvmField val uRealMsgTime: Int?,
@TarsId(6) @JvmField val vMsg: ByteArray,
@TarsId(7) @JvmField val uAppShareID: Long?,
@TarsId(8) @JvmField val vMsgCookies: ByteArray? = EMPTY_BYTE_ARRAY,
@TarsId(9) @JvmField val vAppShareCookie: ByteArray? = EMPTY_BYTE_ARRAY,
@TarsId(10) @JvmField val lMsgUid: Long?,
@TarsId(11) @JvmField val lLastChangeTime: Long?,
@TarsId(12) @JvmField val vCPicInfo: List<CPicInfo>?,
@TarsId(13) @JvmField val stShareData: ShareData?,
@TarsId(14) @JvmField val lFromInstId: Long?,
@TarsId(15) @JvmField val vRemarkOfSender: ByteArray?,
@TarsId(16) @JvmField val strFromMobile: String?,
@TarsId(17) @JvmField val strFromName: String?,
@TarsId(18) @JvmField val vNickName: List<String>?//,
//@SerialId(19) @JvmField val stC2CTmpMsgHead: TempMsgHead?
) : JceStruct
@Serializable
internal class ShareData(
@JceId(0) @JvmField val pkgname: String = "",
@JceId(1) @JvmField val msgtail: String = "",
@JceId(2) @JvmField val picurl: String = "",
@JceId(3) @JvmField val url: String = ""
@TarsId(0) @JvmField val pkgname: String = "",
@TarsId(1) @JvmField val msgtail: String = "",
@TarsId(2) @JvmField val picurl: String = "",
@TarsId(3) @JvmField val url: String = ""
) : JceStruct
@Serializable
internal class TempMsgHead(
@JceId(0) @JvmField val c2c_type: Int? = 0,
@JceId(1) @JvmField val serviceType: Int? = 0
@TarsId(0) @JvmField val c2c_type: Int? = 0,
@TarsId(1) @JvmField val serviceType: Int? = 0
) : JceStruct
@Serializable
internal class CPicInfo(
@JceId(0) @JvmField val vPath: ByteArray = EMPTY_BYTE_ARRAY,
@JceId(1) @JvmField val vHost: ByteArray? = EMPTY_BYTE_ARRAY
@TarsId(0) @JvmField val vPath: ByteArray = EMPTY_BYTE_ARRAY,
@TarsId(1) @JvmField val vHost: ByteArray? = EMPTY_BYTE_ARRAY
) : JceStruct

View File

@ -1,26 +1,26 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.jce
import kotlinx.serialization.Serializable
import moe.him188.jcekt.JceId
import net.mamoe.mirai.qqandroid.utils.io.JceStruct
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.TarsId
import kotlin.jvm.JvmField
@Serializable
internal class RequestMSFForceOffline(
@JceId(0) @JvmField val uin: Long = 0L,
@JceId(1) @JvmField val iSeqno: Long = 0L,
@JceId(2) @JvmField val kickType: Byte = 0,
@JceId(3) @JvmField val info: String = "",
@JceId(4) @JvmField val title: String? = "",
@JceId(5) @JvmField val sigKick: Byte? = 0,
@JceId(6) @JvmField val vecSigKickData: ByteArray? = null,
@JceId(7) @JvmField val sameDevice: Byte? = 0
@TarsId(0) @JvmField val uin: Long = 0L,
@TarsId(1) @JvmField val iSeqno: Long = 0L,
@TarsId(2) @JvmField val kickType: Byte = 0,
@TarsId(3) @JvmField val info: String = "",
@TarsId(4) @JvmField val title: String? = "",
@TarsId(5) @JvmField val sigKick: Byte? = 0,
@TarsId(6) @JvmField val vecSigKickData: ByteArray? = null,
@TarsId(7) @JvmField val sameDevice: Byte? = 0
) : JceStruct
@Serializable
internal class RspMSFForceOffline(
@JceId(0) @JvmField val uin: Long,
@JceId(1) @JvmField val seq: Long,
@JceId(2) @JvmField val const: Byte = 0
@TarsId(0) @JvmField val uin: Long,
@TarsId(1) @JvmField val seq: Long,
@TarsId(2) @JvmField val const: Byte = 0
) : JceStruct

View File

@ -1,38 +1,38 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.jce
import kotlinx.serialization.Serializable
import moe.him188.jcekt.JceId
import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
import net.mamoe.mirai.qqandroid.utils.io.JceStruct
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.TarsId
import kotlin.jvm.JvmField
private val EMPTY_MAP = mapOf<String, String>()
@Serializable
internal class RequestPacket(
@JceId(1) @JvmField val iVersion: Short? = 3,
@JceId(2) @JvmField val cPacketType: Byte = 0,
@JceId(3) @JvmField val iMessageType: Int = 0,
@JceId(4) @JvmField val iRequestId: Int = 0,
@JceId(5) @JvmField val sServantName: String = "",
@JceId(6) @JvmField val sFuncName: String = "",
@JceId(7) @JvmField val sBuffer: ByteArray = EMPTY_BYTE_ARRAY,
@JceId(8) @JvmField val iTimeout: Int? = 0,
@JceId(9) @JvmField val context: Map<String, String>? = EMPTY_MAP,
@JceId(10) @JvmField val status: Map<String, String>? = EMPTY_MAP
@TarsId(1) @JvmField val iVersion: Short? = 3,
@TarsId(2) @JvmField val cPacketType: Byte = 0,
@TarsId(3) @JvmField val iMessageType: Int = 0,
@TarsId(4) @JvmField val iRequestId: Int = 0,
@TarsId(5) @JvmField val sServantName: String = "",
@TarsId(6) @JvmField val sFuncName: String = "",
@TarsId(7) @JvmField val sBuffer: ByteArray = EMPTY_BYTE_ARRAY,
@TarsId(8) @JvmField val iTimeout: Int? = 0,
@TarsId(9) @JvmField val context: Map<String, String>? = EMPTY_MAP,
@TarsId(10) @JvmField val status: Map<String, String>? = EMPTY_MAP
) : JceStruct
@Serializable
internal class RequestDataVersion3(
@JceId(0) @JvmField val map: Map<String, ByteArray> // 注意: ByteArray 不能直接放序列化的 JceStruct!! 要放类似 RequestDataStructSvcReqRegister 的
@TarsId(0) @JvmField val map: Map<String, ByteArray> // 注意: ByteArray 不能直接放序列化的 JceStruct!! 要放类似 RequestDataStructSvcReqRegister 的
) : JceStruct
@Serializable
internal class RequestDataVersion2(
@JceId(0) @JvmField val map: Map<String, Map<String, ByteArray>>
@TarsId(0) @JvmField val map: Map<String, Map<String, ByteArray>>
) : JceStruct
@Serializable
internal class RequestDataStructSvcReqRegister(
@JceId(0) @JvmField val struct: SvcReqRegister
@TarsId(0) @JvmField val struct: SvcReqRegister
) : JceStruct

View File

@ -1,14 +1,14 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.jce
import kotlinx.serialization.Serializable
import moe.him188.jcekt.JceId
import net.mamoe.mirai.qqandroid.utils.io.JceStruct
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.TarsId
import kotlin.jvm.JvmField
@Serializable
internal class RequestPushForceOffline(
@JceId(0) @JvmField val uin: Long,
@JceId(1) @JvmField val title: String? = "",
@JceId(2) @JvmField val tips: String? = "",
@JceId(3) @JvmField val sameDevice: Byte? = null
@TarsId(0) @JvmField val uin: Long,
@TarsId(1) @JvmField val title: String? = "",
@TarsId(2) @JvmField val tips: String? = "",
@TarsId(3) @JvmField val sameDevice: Byte? = null
) : JceStruct

View File

@ -1,47 +1,47 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.jce
import kotlinx.serialization.Serializable
import moe.him188.jcekt.JceId
import net.mamoe.mirai.qqandroid.utils.io.JceStruct
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.TarsId
import kotlin.jvm.JvmField
@Serializable
internal class SvcReqRegister(
@JceId(0) @JvmField val lUin: Long = 0L,
@JceId(1) @JvmField val lBid: Long = 0L,
@JceId(2) @JvmField val cConnType: Byte = 0,
@JceId(3) @JvmField val sOther: String = "",
@JceId(4) @JvmField val iStatus: Int = 11,
@JceId(5) @JvmField val bOnlinePush: Byte = 0,
@JceId(6) @JvmField val bIsOnline: Byte = 0,
@JceId(7) @JvmField val bIsShowOnline: Byte = 0,
@JceId(8) @JvmField val bKikPC: Byte = 0,
@JceId(9) @JvmField val bKikWeak: Byte = 0,
@JceId(10) @JvmField val timeStamp: Long = 0L,
@JceId(11) @JvmField val iOSVersion: Long = 0L,
@JceId(12) @JvmField val cNetType: Byte = 0,
@JceId(13) @JvmField val sBuildVer: String? = "",
@JceId(14) @JvmField val bRegType: Byte = 0,
@JceId(15) @JvmField val vecDevParam: ByteArray? = null,
@JceId(16) @JvmField val vecGuid: ByteArray? = null,
@JceId(17) @JvmField val iLocaleID: Int = 2052,
@JceId(18) @JvmField val bSlientPush: Byte = 0,
@JceId(19) @JvmField val strDevName: String? = null,
@JceId(20) @JvmField val strDevType: String? = null,
@JceId(21) @JvmField val strOSVer: String? = null,
@JceId(22) @JvmField val bOpenPush: Byte = 1,
@JceId(23) @JvmField val iLargeSeq: Long = 0L,
@JceId(24) @JvmField val iLastWatchStartTime: Long = 0L,
@JceId(26) @JvmField val uOldSSOIp: Long = 0L,
@JceId(27) @JvmField val uNewSSOIp: Long = 0L,
@JceId(28) @JvmField val sChannelNo: String? = null,
@JceId(29) @JvmField val lCpId: Long = 0L,
@JceId(30) @JvmField val strVendorName: String? = null,
@JceId(31) @JvmField val strVendorOSName: String? = null,
@JceId(32) @JvmField val strIOSIdfa: String? = null,
@JceId(33) @JvmField val bytes_0x769_reqbody: ByteArray? = null,
@JceId(34) @JvmField val bIsSetStatus: Byte = 0,
@JceId(35) @JvmField val vecServerBuf: ByteArray? = null,
@JceId(36) @JvmField val bSetMute: Byte = 0
@TarsId(0) @JvmField val lUin: Long = 0L,
@TarsId(1) @JvmField val lBid: Long = 0L,
@TarsId(2) @JvmField val cConnType: Byte = 0,
@TarsId(3) @JvmField val sOther: String = "",
@TarsId(4) @JvmField val iStatus: Int = 11,
@TarsId(5) @JvmField val bOnlinePush: Byte = 0,
@TarsId(6) @JvmField val bIsOnline: Byte = 0,
@TarsId(7) @JvmField val bIsShowOnline: Byte = 0,
@TarsId(8) @JvmField val bKikPC: Byte = 0,
@TarsId(9) @JvmField val bKikWeak: Byte = 0,
@TarsId(10) @JvmField val timeStamp: Long = 0L,
@TarsId(11) @JvmField val iOSVersion: Long = 0L,
@TarsId(12) @JvmField val cNetType: Byte = 0,
@TarsId(13) @JvmField val sBuildVer: String? = "",
@TarsId(14) @JvmField val bRegType: Byte = 0,
@TarsId(15) @JvmField val vecDevParam: ByteArray? = null,
@TarsId(16) @JvmField val vecGuid: ByteArray? = null,
@TarsId(17) @JvmField val iLocaleID: Int = 2052,
@TarsId(18) @JvmField val bSlientPush: Byte = 0,
@TarsId(19) @JvmField val strDevName: String? = null,
@TarsId(20) @JvmField val strDevType: String? = null,
@TarsId(21) @JvmField val strOSVer: String? = null,
@TarsId(22) @JvmField val bOpenPush: Byte = 1,
@TarsId(23) @JvmField val iLargeSeq: Long = 0L,
@TarsId(24) @JvmField val iLastWatchStartTime: Long = 0L,
@TarsId(26) @JvmField val uOldSSOIp: Long = 0L,
@TarsId(27) @JvmField val uNewSSOIp: Long = 0L,
@TarsId(28) @JvmField val sChannelNo: String? = null,
@TarsId(29) @JvmField val lCpId: Long = 0L,
@TarsId(30) @JvmField val strVendorName: String? = null,
@TarsId(31) @JvmField val strVendorOSName: String? = null,
@TarsId(32) @JvmField val strIOSIdfa: String? = null,
@TarsId(33) @JvmField val bytes_0x769_reqbody: ByteArray? = null,
@TarsId(34) @JvmField val bIsSetStatus: Byte = 0,
@TarsId(35) @JvmField val vecServerBuf: ByteArray? = null,
@TarsId(36) @JvmField val bSetMute: Byte = 0
// @SerialId(25) var vecBindUin: ArrayList<*>? = null // ?? 未知泛型
) : JceStruct

View File

@ -1,97 +1,97 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.jce
import kotlinx.serialization.Serializable
import moe.him188.jcekt.JceId
import net.mamoe.mirai.qqandroid.utils.io.JceStruct
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.TarsId
import kotlin.jvm.JvmField
@Serializable
internal class GetTroopListReqV2Simplify(
@JceId(0) @JvmField val uin: Long,
@JceId(1) @JvmField val getMSFMsgFlag: Byte? = null,
@JceId(2) @JvmField val vecCookies: ByteArray? = null,
@JceId(3) @JvmField val vecGroupInfo: List<StTroopNumSimplify>? = null,
@JceId(4) @JvmField val groupFlagExt: Byte? = null,
@JceId(5) @JvmField val shVersion: Int? = null,
@JceId(6) @JvmField val dwCompanyId: Long? = null,
@JceId(7) @JvmField val versionNum: Long? = null,
@JceId(8) @JvmField val getLongGroupName: Byte? = null
@TarsId(0) @JvmField val uin: Long,
@TarsId(1) @JvmField val getMSFMsgFlag: Byte? = null,
@TarsId(2) @JvmField val vecCookies: ByteArray? = null,
@TarsId(3) @JvmField val vecGroupInfo: List<StTroopNumSimplify>? = null,
@TarsId(4) @JvmField val groupFlagExt: Byte? = null,
@TarsId(5) @JvmField val shVersion: Int? = null,
@TarsId(6) @JvmField val dwCompanyId: Long? = null,
@TarsId(7) @JvmField val versionNum: Long? = null,
@TarsId(8) @JvmField val getLongGroupName: Byte? = null
) : JceStruct
@Serializable
internal class StTroopNumSimplify(
@JceId(0) @JvmField val groupCode: Long,
@JceId(1) @JvmField val dwGroupInfoSeq: Long? = null,
@JceId(2) @JvmField val dwGroupFlagExt: Long? = null,
@JceId(3) @JvmField val dwGroupRankSeq: Long? = null
@TarsId(0) @JvmField val groupCode: Long,
@TarsId(1) @JvmField val dwGroupInfoSeq: Long? = null,
@TarsId(2) @JvmField val dwGroupFlagExt: Long? = null,
@TarsId(3) @JvmField val dwGroupRankSeq: Long? = null
) : JceStruct
@Serializable
internal class GetTroopListRespV2(
@JceId(0) @JvmField val uin: Long,
@JceId(1) @JvmField val troopCount: Short,
@JceId(2) @JvmField val result: Int,
@JceId(3) @JvmField val errorCode: Short? = null,
@JceId(4) @JvmField val vecCookies: ByteArray? = null,
@JceId(5) @JvmField val vecTroopList: List<StTroopNum>? = null,
@JceId(6) @JvmField val vecTroopListDel: List<StTroopNum>? = null,
@JceId(7) @JvmField val vecTroopRank: List<StGroupRankInfo>? = null,
@JceId(8) @JvmField val vecFavGroup: List<StFavoriteGroup>? = null,
@JceId(9) @JvmField val vecTroopListExt: List<StTroopNum>? = null
@TarsId(0) @JvmField val uin: Long,
@TarsId(1) @JvmField val troopCount: Short,
@TarsId(2) @JvmField val result: Int,
@TarsId(3) @JvmField val errorCode: Short? = null,
@TarsId(4) @JvmField val vecCookies: ByteArray? = null,
@TarsId(5) @JvmField val vecTroopList: List<StTroopNum>? = null,
@TarsId(6) @JvmField val vecTroopListDel: List<StTroopNum>? = null,
@TarsId(7) @JvmField val vecTroopRank: List<StGroupRankInfo>? = null,
@TarsId(8) @JvmField val vecFavGroup: List<StFavoriteGroup>? = null,
@TarsId(9) @JvmField val vecTroopListExt: List<StTroopNum>? = null
) : JceStruct
@Serializable
internal class StTroopNum(
@JceId(0) @JvmField val groupUin: Long,
@JceId(1) @JvmField val groupCode: Long,
@JceId(2) @JvmField val flag: Byte? = null,
@JceId(3) @JvmField val dwGroupInfoSeq: Long? = null,
@JceId(4) @JvmField val groupName: String = "",
@JceId(5) @JvmField val groupMemo: String = "",
@JceId(6) @JvmField val dwGroupFlagExt: Long? = null,
@JceId(7) @JvmField val dwGroupRankSeq: Long? = null,
@JceId(8) @JvmField val dwCertificationType: Long? = null,
@JceId(9) @JvmField val dwShutUpTimestamp: Long? = null,
@JceId(10) @JvmField val dwMyShutUpTimestamp: Long? = null,
@JceId(11) @JvmField val dwCmdUinUinFlag: Long? = null,
@JceId(12) @JvmField val dwAdditionalFlag: Long? = null,
@JceId(13) @JvmField val dwGroupTypeFlag: Long? = null,
@JceId(14) @JvmField val dwGroupSecType: Long? = null,
@JceId(15) @JvmField val dwGroupSecTypeInfo: Long? = null,
@JceId(16) @JvmField val dwGroupClassExt: Long? = null,
@JceId(17) @JvmField val dwAppPrivilegeFlag: Long? = null,
@JceId(18) @JvmField val dwSubscriptionUin: Long? = null,
@JceId(19) @JvmField val dwMemberNum: Long? = null,
@JceId(20) @JvmField val dwMemberNumSeq: Long? = null,
@JceId(21) @JvmField val dwMemberCardSeq: Long? = null,
@JceId(22) @JvmField val dwGroupFlagExt3: Long? = null,
@JceId(23) @JvmField val dwGroupOwnerUin: Long,
@JceId(24) @JvmField val isConfGroup: Byte? = null,
@JceId(25) @JvmField val isModifyConfGroupFace: Byte? = null,
@JceId(26) @JvmField val isModifyConfGroupName: Byte? = null,
@JceId(27) @JvmField val dwCmduinJoinTime: Long? = null,
@JceId(28) @JvmField val ulCompanyId: Long? = null,
@JceId(29) @JvmField val dwMaxGroupMemberNum: Long? = null,
@JceId(30) @JvmField val dwCmdUinGroupMask: Long? = null,
@JceId(31) @JvmField val udwHLGuildAppid: Long? = null,
@JceId(32) @JvmField val udwHLGuildSubType: Long? = null,
@JceId(33) @JvmField val udwCmdUinRingtoneID: Long? = null,
@JceId(34) @JvmField val udwCmdUinFlagEx2: Long? = null
@TarsId(0) @JvmField val groupUin: Long,
@TarsId(1) @JvmField val groupCode: Long,
@TarsId(2) @JvmField val flag: Byte? = null,
@TarsId(3) @JvmField val dwGroupInfoSeq: Long? = null,
@TarsId(4) @JvmField val groupName: String = "",
@TarsId(5) @JvmField val groupMemo: String = "",
@TarsId(6) @JvmField val dwGroupFlagExt: Long? = null,
@TarsId(7) @JvmField val dwGroupRankSeq: Long? = null,
@TarsId(8) @JvmField val dwCertificationType: Long? = null,
@TarsId(9) @JvmField val dwShutUpTimestamp: Long? = null,
@TarsId(10) @JvmField val dwMyShutUpTimestamp: Long? = null,
@TarsId(11) @JvmField val dwCmdUinUinFlag: Long? = null,
@TarsId(12) @JvmField val dwAdditionalFlag: Long? = null,
@TarsId(13) @JvmField val dwGroupTypeFlag: Long? = null,
@TarsId(14) @JvmField val dwGroupSecType: Long? = null,
@TarsId(15) @JvmField val dwGroupSecTypeInfo: Long? = null,
@TarsId(16) @JvmField val dwGroupClassExt: Long? = null,
@TarsId(17) @JvmField val dwAppPrivilegeFlag: Long? = null,
@TarsId(18) @JvmField val dwSubscriptionUin: Long? = null,
@TarsId(19) @JvmField val dwMemberNum: Long? = null,
@TarsId(20) @JvmField val dwMemberNumSeq: Long? = null,
@TarsId(21) @JvmField val dwMemberCardSeq: Long? = null,
@TarsId(22) @JvmField val dwGroupFlagExt3: Long? = null,
@TarsId(23) @JvmField val dwGroupOwnerUin: Long,
@TarsId(24) @JvmField val isConfGroup: Byte? = null,
@TarsId(25) @JvmField val isModifyConfGroupFace: Byte? = null,
@TarsId(26) @JvmField val isModifyConfGroupName: Byte? = null,
@TarsId(27) @JvmField val dwCmduinJoinTime: Long? = null,
@TarsId(28) @JvmField val ulCompanyId: Long? = null,
@TarsId(29) @JvmField val dwMaxGroupMemberNum: Long? = null,
@TarsId(30) @JvmField val dwCmdUinGroupMask: Long? = null,
@TarsId(31) @JvmField val udwHLGuildAppid: Long? = null,
@TarsId(32) @JvmField val udwHLGuildSubType: Long? = null,
@TarsId(33) @JvmField val udwCmdUinRingtoneID: Long? = null,
@TarsId(34) @JvmField val udwCmdUinFlagEx2: Long? = null
) : JceStruct
@Serializable
internal class StGroupRankInfo(
@JceId(0) @JvmField val dwGroupCode: Long,
@JceId(1) @JvmField val groupRankSysFlag: Byte? = null,
@JceId(2) @JvmField val groupRankUserFlag: Byte? = null,
@JceId(3) @JvmField val vecRankMap: List<StLevelRankPair>? = null,
@JceId(4) @JvmField val dwGroupRankSeq: Long? = null,
@JceId(5) @JvmField val ownerName: String? = "",
@JceId(6) @JvmField val adminName: String? = "",
@JceId(7) @JvmField val dwOfficeMode: Long? = null,
@JceId(9) @JvmField val fuckIssue405: List<FuckIssue405?>? = null // fake
@TarsId(0) @JvmField val dwGroupCode: Long,
@TarsId(1) @JvmField val groupRankSysFlag: Byte? = null,
@TarsId(2) @JvmField val groupRankUserFlag: Byte? = null,
@TarsId(3) @JvmField val vecRankMap: List<StLevelRankPair>? = null,
@TarsId(4) @JvmField val dwGroupRankSeq: Long? = null,
@TarsId(5) @JvmField val ownerName: String? = "",
@TarsId(6) @JvmField val adminName: String? = "",
@TarsId(7) @JvmField val dwOfficeMode: Long? = null,
@TarsId(9) @JvmField val fuckIssue405: List<FuckIssue405?>? = null // fake
) : JceStruct
@Serializable
@ -99,89 +99,89 @@ internal class FuckIssue405
@Serializable
internal class StFavoriteGroup(
@JceId(0) @JvmField val dwGroupCode: Long,
@JceId(1) @JvmField val dwTimestamp: Long? = null,
@JceId(2) @JvmField val dwSnsFlag: Long? = 1L,
@JceId(3) @JvmField val dwOpenTimestamp: Long? = null
@TarsId(0) @JvmField val dwGroupCode: Long,
@TarsId(1) @JvmField val dwTimestamp: Long? = null,
@TarsId(2) @JvmField val dwSnsFlag: Long? = 1L,
@TarsId(3) @JvmField val dwOpenTimestamp: Long? = null
) : JceStruct
@Serializable
internal class StLevelRankPair(
@JceId(0) @JvmField val dwLevel: Long? = null,
@JceId(1) @JvmField val rank: String? = ""
@TarsId(0) @JvmField val dwLevel: Long? = null,
@TarsId(1) @JvmField val rank: String? = ""
) : JceStruct
@Serializable
internal class GetTroopMemberListReq(
@JceId(0) @JvmField val uin: Long,
@JceId(1) @JvmField val groupCode: Long,
@JceId(2) @JvmField val nextUin: Long,
@JceId(3) @JvmField val groupUin: Long,
@JceId(4) @JvmField val version: Long? = null,
@JceId(5) @JvmField val reqType: Long? = null,
@JceId(6) @JvmField val getListAppointTime: Long? = null,
@JceId(7) @JvmField val richCardNameVer: Byte? = null
@TarsId(0) @JvmField val uin: Long,
@TarsId(1) @JvmField val groupCode: Long,
@TarsId(2) @JvmField val nextUin: Long,
@TarsId(3) @JvmField val groupUin: Long,
@TarsId(4) @JvmField val version: Long? = null,
@TarsId(5) @JvmField val reqType: Long? = null,
@TarsId(6) @JvmField val getListAppointTime: Long? = null,
@TarsId(7) @JvmField val richCardNameVer: Byte? = null
) : JceStruct
@Serializable
internal class GetTroopMemberListResp(
@JceId(0) @JvmField val uin: Long,
@JceId(1) @JvmField val groupCode: Long,
@JceId(2) @JvmField val groupUin: Long,
@JceId(3) @JvmField val vecTroopMember: List<StTroopMemberInfo>,
@JceId(4) @JvmField val nextUin: Long,
@JceId(5) @JvmField val result: Int,
@JceId(6) @JvmField val errorCode: Short? = null,
@JceId(7) @JvmField val officeMode: Long? = null,
@JceId(8) @JvmField val nextGetTime: Long? = null
@TarsId(0) @JvmField val uin: Long,
@TarsId(1) @JvmField val groupCode: Long,
@TarsId(2) @JvmField val groupUin: Long,
@TarsId(3) @JvmField val vecTroopMember: List<StTroopMemberInfo>,
@TarsId(4) @JvmField val nextUin: Long,
@TarsId(5) @JvmField val result: Int,
@TarsId(6) @JvmField val errorCode: Short? = null,
@TarsId(7) @JvmField val officeMode: Long? = null,
@TarsId(8) @JvmField val nextGetTime: Long? = null
) : JceStruct
@Serializable
internal class StTroopMemberInfo(
@JceId(0) @JvmField val memberUin: Long,
@JceId(1) @JvmField val faceId: Short,
@JceId(2) @JvmField val age: Byte,
@JceId(3) @JvmField val gender: Byte,
@JceId(4) @JvmField val nick: String = "",
@JceId(5) @JvmField val status: Byte = 20,
@JceId(6) @JvmField val sShowName: String? = null,
@JceId(8) @JvmField val sName: String? = null,
@JceId(9) @JvmField val cGender: Byte? = null,
@JceId(10) @JvmField val sPhone: String? = "",
@JceId(11) @JvmField val sEmail: String? = "",
@JceId(12) @JvmField val sMemo: String? = "",
@JceId(13) @JvmField val autoRemark: String? = "",
@JceId(14) @JvmField val dwMemberLevel: Long? = null,
@JceId(15) @JvmField val dwJoinTime: Long? = null,
@JceId(16) @JvmField val dwLastSpeakTime: Long? = null,
@JceId(17) @JvmField val dwCreditLevel: Long? = null,
@JceId(18) @JvmField val dwFlag: Long? = null,
@JceId(19) @JvmField val dwFlagExt: Long? = null,
@JceId(20) @JvmField val dwPoint: Long? = null,
@JceId(21) @JvmField val concerned: Byte? = null,
@JceId(22) @JvmField val shielded: Byte? = null,
@JceId(23) @JvmField val sSpecialTitle: String? = "",
@JceId(24) @JvmField val dwSpecialTitleExpireTime: Long? = null,
@JceId(25) @JvmField val job: String? = "",
@JceId(26) @JvmField val apolloFlag: Byte? = null,
@JceId(27) @JvmField val dwApolloTimestamp: Long? = null,
@JceId(28) @JvmField val dwGlobalGroupLevel: Long? = null,
@JceId(29) @JvmField val dwTitleId: Long? = null,
@JceId(30) @JvmField val dwShutupTimestap: Long? = null,
@JceId(31) @JvmField val dwGlobalGroupPoint: Long? = null,
@JceId(32) @JvmField val qzusrinfo: QzoneUserInfo? = null,
@JceId(33) @JvmField val richCardNameVer: Byte? = null,
@JceId(34) @JvmField val dwVipType: Long? = null,
@JceId(35) @JvmField val dwVipLevel: Long? = null,
@JceId(36) @JvmField val dwBigClubLevel: Long? = null,
@JceId(37) @JvmField val dwBigClubFlag: Long? = null,
@JceId(38) @JvmField val dwNameplate: Long? = null,
@JceId(39) @JvmField val vecGroupHonor: ByteArray? = null
@TarsId(0) @JvmField val memberUin: Long,
@TarsId(1) @JvmField val faceId: Short,
@TarsId(2) @JvmField val age: Byte,
@TarsId(3) @JvmField val gender: Byte,
@TarsId(4) @JvmField val nick: String = "",
@TarsId(5) @JvmField val status: Byte = 20,
@TarsId(6) @JvmField val sShowName: String? = null,
@TarsId(8) @JvmField val sName: String? = null,
@TarsId(9) @JvmField val cGender: Byte? = null,
@TarsId(10) @JvmField val sPhone: String? = "",
@TarsId(11) @JvmField val sEmail: String? = "",
@TarsId(12) @JvmField val sMemo: String? = "",
@TarsId(13) @JvmField val autoRemark: String? = "",
@TarsId(14) @JvmField val dwMemberLevel: Long? = null,
@TarsId(15) @JvmField val dwJoinTime: Long? = null,
@TarsId(16) @JvmField val dwLastSpeakTime: Long? = null,
@TarsId(17) @JvmField val dwCreditLevel: Long? = null,
@TarsId(18) @JvmField val dwFlag: Long? = null,
@TarsId(19) @JvmField val dwFlagExt: Long? = null,
@TarsId(20) @JvmField val dwPoint: Long? = null,
@TarsId(21) @JvmField val concerned: Byte? = null,
@TarsId(22) @JvmField val shielded: Byte? = null,
@TarsId(23) @JvmField val sSpecialTitle: String? = "",
@TarsId(24) @JvmField val dwSpecialTitleExpireTime: Long? = null,
@TarsId(25) @JvmField val job: String? = "",
@TarsId(26) @JvmField val apolloFlag: Byte? = null,
@TarsId(27) @JvmField val dwApolloTimestamp: Long? = null,
@TarsId(28) @JvmField val dwGlobalGroupLevel: Long? = null,
@TarsId(29) @JvmField val dwTitleId: Long? = null,
@TarsId(30) @JvmField val dwShutupTimestap: Long? = null,
@TarsId(31) @JvmField val dwGlobalGroupPoint: Long? = null,
@TarsId(32) @JvmField val qzusrinfo: QzoneUserInfo? = null,
@TarsId(33) @JvmField val richCardNameVer: Byte? = null,
@TarsId(34) @JvmField val dwVipType: Long? = null,
@TarsId(35) @JvmField val dwVipLevel: Long? = null,
@TarsId(36) @JvmField val dwBigClubLevel: Long? = null,
@TarsId(37) @JvmField val dwBigClubFlag: Long? = null,
@TarsId(38) @JvmField val dwNameplate: Long? = null,
@TarsId(39) @JvmField val vecGroupHonor: ByteArray? = null
) : JceStruct
@Serializable
internal class QzoneUserInfo(
@JceId(0) @JvmField val eStarState: Int? = null,
@JceId(1) @JvmField val extendInfo: Map<String, String>? = null
@TarsId(0) @JvmField val eStarState: Int? = null,
@TarsId(1) @JvmField val extendInfo: Map<String, String>? = null
) : JceStruct

View File

@ -1,7 +1,7 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.proto
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import kotlinx.serialization.protobuf.ProtoNumber
import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf
import kotlin.jvm.JvmField
@ -10,118 +10,118 @@ import kotlin.jvm.JvmField
internal class Cmd0x352 : ProtoBuf {
@Serializable
internal class DelImgReq(
@ProtoId(1) @JvmField val srcUin: Long = 0L,
@ProtoId(2) @JvmField val dstUin: Long = 0L,
@ProtoId(3) @JvmField val reqTerm: Int = 0,
@ProtoId(4) @JvmField val reqPlatformType: Int = 0,
@ProtoId(5) @JvmField val buType: Int = 0,
@ProtoId(6) @JvmField val buildVer: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(7) @JvmField val fileResid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(8) @JvmField val picWidth: Int = 0,
@ProtoId(9) @JvmField val picHeight: Int = 0
@ProtoNumber(1) @JvmField val srcUin: Long = 0L,
@ProtoNumber(2) @JvmField val dstUin: Long = 0L,
@ProtoNumber(3) @JvmField val reqTerm: Int = 0,
@ProtoNumber(4) @JvmField val reqPlatformType: Int = 0,
@ProtoNumber(5) @JvmField val buType: Int = 0,
@ProtoNumber(6) @JvmField val buildVer: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(7) @JvmField val fileResid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(8) @JvmField val picWidth: Int = 0,
@ProtoNumber(9) @JvmField val picHeight: Int = 0
) : ProtoBuf
@Serializable
internal class DelImgRsp(
@ProtoId(1) @JvmField val result: Int = 0,
@ProtoId(2) @JvmField val failMsg: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val fileResid: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val result: Int = 0,
@ProtoNumber(2) @JvmField val failMsg: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val fileResid: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class GetImgUrlReq(
@ProtoId(1) @JvmField val srcUin: Long = 0L,
@ProtoId(2) @JvmField val dstUin: Long = 0L,
@ProtoId(3) @JvmField val fileResid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(4) @JvmField val urlFlag: Int = 0,
@ProtoId(6) @JvmField val urlType: Int = 0,
@ProtoId(7) @JvmField val reqTerm: Int = 0,
@ProtoId(8) @JvmField val reqPlatformType: Int = 0,
@ProtoId(9) @JvmField val srcFileType: Int = 0,
@ProtoId(10) @JvmField val innerIp: Int = 0,
@ProtoId(11) @JvmField val boolAddressBook: Boolean = false,
@ProtoId(12) @JvmField val buType: Int = 0,
@ProtoId(13) @JvmField val buildVer: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(14) @JvmField val picUpTimestamp: Int = 0,
@ProtoId(15) @JvmField val reqTransferType: Int = 0
@ProtoNumber(1) @JvmField val srcUin: Long = 0L,
@ProtoNumber(2) @JvmField val dstUin: Long = 0L,
@ProtoNumber(3) @JvmField val fileResid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(4) @JvmField val urlFlag: Int = 0,
@ProtoNumber(6) @JvmField val urlType: Int = 0,
@ProtoNumber(7) @JvmField val reqTerm: Int = 0,
@ProtoNumber(8) @JvmField val reqPlatformType: Int = 0,
@ProtoNumber(9) @JvmField val srcFileType: Int = 0,
@ProtoNumber(10) @JvmField val innerIp: Int = 0,
@ProtoNumber(11) @JvmField val boolAddressBook: Boolean = false,
@ProtoNumber(12) @JvmField val buType: Int = 0,
@ProtoNumber(13) @JvmField val buildVer: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(14) @JvmField val picUpTimestamp: Int = 0,
@ProtoNumber(15) @JvmField val reqTransferType: Int = 0
) : ProtoBuf
@Serializable
internal class GetImgUrlRsp(
@ProtoId(1) @JvmField val fileResid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(2) @JvmField val clientIp: Int = 0,
@ProtoId(3) @JvmField val result: Int = 0,
@ProtoId(4) @JvmField val failMsg: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(5) @JvmField val bytesThumbDownUrl: List<ByteArray>? = null,
@ProtoId(6) @JvmField val bytesOriginalDownUrl: List<ByteArray>? = null,
@ProtoId(7) @JvmField val msgImgInfo: ImgInfo? = null,
@ProtoId(8) @JvmField val uint32DownIp: List<Int>? = null,
@ProtoId(9) @JvmField val uint32DownPort: List<Int>? = null,
@ProtoId(10) @JvmField val thumbDownPara: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(11) @JvmField val originalDownPara: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(12) @JvmField val downDomain: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(13) @JvmField val bytesBigDownUrl: List<ByteArray>? = null,
@ProtoId(14) @JvmField val bigDownPara: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(15) @JvmField val bigThumbDownPara: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(16) @JvmField val httpsUrlFlag: Int = 0,
@ProtoId(26) @JvmField val msgDownIp6: List<IPv6Info>? = null,
@ProtoId(27) @JvmField val clientIp6: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val fileResid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) @JvmField val clientIp: Int = 0,
@ProtoNumber(3) @JvmField val result: Int = 0,
@ProtoNumber(4) @JvmField val failMsg: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(5) @JvmField val bytesThumbDownUrl: List<ByteArray>? = null,
@ProtoNumber(6) @JvmField val bytesOriginalDownUrl: List<ByteArray>? = null,
@ProtoNumber(7) @JvmField val msgImgInfo: ImgInfo? = null,
@ProtoNumber(8) @JvmField val uint32DownIp: List<Int>? = null,
@ProtoNumber(9) @JvmField val uint32DownPort: List<Int>? = null,
@ProtoNumber(10) @JvmField val thumbDownPara: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(11) @JvmField val originalDownPara: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(12) @JvmField val downDomain: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(13) @JvmField val bytesBigDownUrl: List<ByteArray>? = null,
@ProtoNumber(14) @JvmField val bigDownPara: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(15) @JvmField val bigThumbDownPara: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(16) @JvmField val httpsUrlFlag: Int = 0,
@ProtoNumber(26) @JvmField val msgDownIp6: List<IPv6Info>? = null,
@ProtoNumber(27) @JvmField val clientIp6: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Suppress("ArrayInDataClass")
@Serializable
internal class ImgInfo(
@ProtoId(1) @JvmField val fileMd5: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(2) @JvmField val fileType: Int = 0,
@ProtoId(3) @JvmField val fileSize: Long = 0L,
@ProtoId(4) @JvmField val fileWidth: Int = 0,
@ProtoId(5) @JvmField val fileHeight: Int = 0,
@ProtoId(6) @JvmField val fileFlag: Long = 0L,
@ProtoId(7) @JvmField val fileCutPos: Int = 0
@ProtoNumber(1) @JvmField val fileMd5: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) @JvmField val fileType: Int = 0,
@ProtoNumber(3) @JvmField val fileSize: Long = 0L,
@ProtoNumber(4) @JvmField val fileWidth: Int = 0,
@ProtoNumber(5) @JvmField val fileHeight: Int = 0,
@ProtoNumber(6) @JvmField val fileFlag: Long = 0L,
@ProtoNumber(7) @JvmField val fileCutPos: Int = 0
) : ProtoBuf
@Serializable
internal class IPv6Info(
@ProtoId(1) @JvmField val ip6: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(2) @JvmField val port: Int = 0
@ProtoNumber(1) @JvmField val ip6: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) @JvmField val port: Int = 0
) : ProtoBuf
@Serializable
internal class ReqBody(
@ProtoId(1) @JvmField val subcmd: Int = 0, //2是GetImgUrlReq 1是UploadImgReq
@ProtoId(2) @JvmField val msgTryupImgReq: List<TryUpImgReq>? = null,// optional
@ProtoId(3) @JvmField val msgGetimgUrlReq: List<GetImgUrlReq>? = null,// optional
@ProtoId(4) @JvmField val msgDelImgReq: List<DelImgReq>? = null,
@ProtoId(10) @JvmField val netType: Int = 3// 数据网络=5
@ProtoNumber(1) @JvmField val subcmd: Int = 0, //2是GetImgUrlReq 1是UploadImgReq
@ProtoNumber(2) @JvmField val msgTryupImgReq: List<TryUpImgReq>? = null,// optional
@ProtoNumber(3) @JvmField val msgGetimgUrlReq: List<GetImgUrlReq>? = null,// optional
@ProtoNumber(4) @JvmField val msgDelImgReq: List<DelImgReq>? = null,
@ProtoNumber(10) @JvmField val netType: Int = 3// 数据网络=5
) : ProtoBuf
@Serializable
internal class RspBody(
@ProtoId(1) @JvmField val subcmd: Int = 0,
@ProtoId(2) @JvmField val msgTryupImgRsp: List<TryUpImgRsp>? = null,
@ProtoId(3) @JvmField val msgGetimgUrlRsp: List<GetImgUrlRsp>? = null,
@ProtoId(4) @JvmField val boolNewBigchan: Boolean = false,
@ProtoId(5) @JvmField val msgDelImgRsp: List<DelImgRsp>? = null,
@ProtoId(10) @JvmField val failMsg: String? = ""
@ProtoNumber(1) @JvmField val subcmd: Int = 0,
@ProtoNumber(2) @JvmField val msgTryupImgRsp: List<TryUpImgRsp>? = null,
@ProtoNumber(3) @JvmField val msgGetimgUrlRsp: List<GetImgUrlRsp>? = null,
@ProtoNumber(4) @JvmField val boolNewBigchan: Boolean = false,
@ProtoNumber(5) @JvmField val msgDelImgRsp: List<DelImgRsp>? = null,
@ProtoNumber(10) @JvmField val failMsg: String? = ""
) : ProtoBuf
@Serializable
internal class TryUpImgReq(
@ProtoId(1) @JvmField val srcUin: Int,
@ProtoId(2) @JvmField val dstUin: Int,
@ProtoId(3) @JvmField val fileId: Int = 0,//从0开始的自增数貌似有一个连接就要自增1, 但是又会重置回0
@ProtoId(4) @JvmField val fileMd5: ByteArray,
@ProtoId(5) @JvmField val fileSize: Int,
@ProtoId(6) @JvmField val fileName: String,//默认为md5+".jpg"
@ProtoId(7) @JvmField val srcTerm: Int = 5,
@ProtoId(8) @JvmField val platformType: Int = 9,
@ProtoId(9) @JvmField val innerIP: Int = 0,
@ProtoId(10) @JvmField val addressBook: Int = 0,//chatType == 1006为1 我觉得发0没问题
@ProtoId(11) @JvmField val retry: Int = 0,//default
@ProtoId(12) @JvmField val buType: Int = 1,//1或96 不确定
@ProtoId(13) @JvmField val imgOriginal: Int,//是否为原图
@ProtoId(14) @JvmField val imgWidth: Int = 0,
@ProtoId(15) @JvmField val imgHeight: Int = 0,
@ProtoNumber(1) @JvmField val srcUin: Int,
@ProtoNumber(2) @JvmField val dstUin: Int,
@ProtoNumber(3) @JvmField val fileId: Int = 0,//从0开始的自增数貌似有一个连接就要自增1, 但是又会重置回0
@ProtoNumber(4) @JvmField val fileMd5: ByteArray,
@ProtoNumber(5) @JvmField val fileSize: Int,
@ProtoNumber(6) @JvmField val fileName: String,//默认为md5+".jpg"
@ProtoNumber(7) @JvmField val srcTerm: Int = 5,
@ProtoNumber(8) @JvmField val platformType: Int = 9,
@ProtoNumber(9) @JvmField val innerIP: Int = 0,
@ProtoNumber(10) @JvmField val addressBook: Int = 0,//chatType == 1006为1 我觉得发0没问题
@ProtoNumber(11) @JvmField val retry: Int = 0,//default
@ProtoNumber(12) @JvmField val buType: Int = 1,//1或96 不确定
@ProtoNumber(13) @JvmField val imgOriginal: Int,//是否为原图
@ProtoNumber(14) @JvmField val imgWidth: Int = 0,
@ProtoNumber(15) @JvmField val imgHeight: Int = 0,
/**
* ImgType:
* JPG: 1000
@ -132,50 +132,50 @@ internal class Cmd0x352 : ProtoBuf {
* APNG: 2001
* SHARPP: 1004
*/
@ProtoId(16) @JvmField val imgType: Int = 1000,
@ProtoId(17) @JvmField val buildVer: String = "8.2.7.4410",//版本号
@ProtoId(18) @JvmField val fileIndex: ByteArray = EMPTY_BYTE_ARRAY,//default
@ProtoId(19) @JvmField val fileStoreDays: Int = 0,//default
@ProtoId(20) @JvmField val stepFlag: Int = 0,//default
@ProtoId(21) @JvmField val rejectTryFast: Int = 0,//bool
@ProtoId(22) @JvmField val srvUpload: Int = 1,//typeHotPic[1/2/3]
@ProtoId(23) @JvmField val transferUrl: ByteArray = EMPTY_BYTE_ARRAY//rawDownloadUrl, 如果没有就是EMPTY_BYTE_ARRAY
@ProtoNumber(16) @JvmField val imgType: Int = 1000,
@ProtoNumber(17) @JvmField val buildVer: String = "8.2.7.4410",//版本号
@ProtoNumber(18) @JvmField val fileIndex: ByteArray = EMPTY_BYTE_ARRAY,//default
@ProtoNumber(19) @JvmField val fileStoreDays: Int = 0,//default
@ProtoNumber(20) @JvmField val stepFlag: Int = 0,//default
@ProtoNumber(21) @JvmField val rejectTryFast: Int = 0,//bool
@ProtoNumber(22) @JvmField val srvUpload: Int = 1,//typeHotPic[1/2/3]
@ProtoNumber(23) @JvmField val transferUrl: ByteArray = EMPTY_BYTE_ARRAY//rawDownloadUrl, 如果没有就是EMPTY_BYTE_ARRAY
) : ImgReq
@Serializable
internal class TryUpImgRsp(
@ProtoId(1) @JvmField val fileId: Long = 0L,
@ProtoId(2) @JvmField val clientIp: Int = 0,
@ProtoId(3) @JvmField val result: Int = 0,
@ProtoId(4) @JvmField val failMsg: String? = "",
@ProtoId(5) @JvmField val boolFileExit: Boolean = false,
@ProtoId(6) @JvmField val msgImgInfo: ImgInfo? = null,
@ProtoId(7) @JvmField val uint32UpIp: List<Int>? = null,
@ProtoId(8) @JvmField val uint32UpPort: List<Int>? = null,
@ProtoId(9) @JvmField val upUkey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(10) @JvmField val upResid: String = "",
@ProtoId(11) @JvmField val upUuid: String = "",
@ProtoId(12) @JvmField val upOffset: Long = 0L,
@ProtoId(13) @JvmField val blockSize: Long = 0L,
@ProtoId(14) @JvmField val encryptDstip: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(15) @JvmField val roamdays: Int = 0,
@ProtoId(26) @JvmField val msgUpIp6: List<IPv6Info>? = null,
@ProtoId(27) @JvmField val clientIp6: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(60) @JvmField val thumbDownPara: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(61) @JvmField val originalDownPara: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(62) @JvmField val downDomain: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(64) @JvmField val bigDownPara: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(65) @JvmField val bigThumbDownPara: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(66) @JvmField val httpsUrlFlag: Int = 0,
@ProtoId(1001) @JvmField val msgInfo4busi: TryUpInfo4Busi? = null
@ProtoNumber(1) @JvmField val fileId: Long = 0L,
@ProtoNumber(2) @JvmField val clientIp: Int = 0,
@ProtoNumber(3) @JvmField val result: Int = 0,
@ProtoNumber(4) @JvmField val failMsg: String? = "",
@ProtoNumber(5) @JvmField val boolFileExit: Boolean = false,
@ProtoNumber(6) @JvmField val msgImgInfo: ImgInfo? = null,
@ProtoNumber(7) @JvmField val uint32UpIp: List<Int>? = null,
@ProtoNumber(8) @JvmField val uint32UpPort: List<Int>? = null,
@ProtoNumber(9) @JvmField val upUkey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(10) @JvmField val upResid: String = "",
@ProtoNumber(11) @JvmField val upUuid: String = "",
@ProtoNumber(12) @JvmField val upOffset: Long = 0L,
@ProtoNumber(13) @JvmField val blockSize: Long = 0L,
@ProtoNumber(14) @JvmField val encryptDstip: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(15) @JvmField val roamdays: Int = 0,
@ProtoNumber(26) @JvmField val msgUpIp6: List<IPv6Info>? = null,
@ProtoNumber(27) @JvmField val clientIp6: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(60) @JvmField val thumbDownPara: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(61) @JvmField val originalDownPara: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(62) @JvmField val downDomain: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(64) @JvmField val bigDownPara: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(65) @JvmField val bigThumbDownPara: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(66) @JvmField val httpsUrlFlag: Int = 0,
@ProtoNumber(1001) @JvmField val msgInfo4busi: TryUpInfo4Busi? = null
) : ProtoBuf
@Serializable
internal class TryUpInfo4Busi(
@ProtoId(1) @JvmField val fileResid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(2) @JvmField val downDomain: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val thumbDownUrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(4) @JvmField val originalDownUrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(5) @JvmField val bigDownUrl: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val fileResid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) @JvmField val downDomain: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val thumbDownUrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(4) @JvmField val originalDownUrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(5) @JvmField val bigDownUrl: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
}

View File

@ -1,7 +1,7 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.proto
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import kotlinx.serialization.protobuf.ProtoNumber
import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf
import kotlin.jvm.JvmField
@ -10,141 +10,141 @@ import kotlin.jvm.JvmField
internal class Cmd0x388 : ProtoBuf {
@Serializable
internal class DelImgReq(
@ProtoId(1) @JvmField val srcUin: Long = 0L,
@ProtoId(2) @JvmField val dstUin: Long = 0L,
@ProtoId(3) @JvmField val reqTerm: Int = 0,
@ProtoId(4) @JvmField val reqPlatformType: Int = 0,
@ProtoId(5) @JvmField val buType: Int = 0,
@ProtoId(6) @JvmField val buildVer: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(7) @JvmField val fileResid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(8) @JvmField val picWidth: Int = 0,
@ProtoId(9) @JvmField val picHeight: Int = 0
@ProtoNumber(1) @JvmField val srcUin: Long = 0L,
@ProtoNumber(2) @JvmField val dstUin: Long = 0L,
@ProtoNumber(3) @JvmField val reqTerm: Int = 0,
@ProtoNumber(4) @JvmField val reqPlatformType: Int = 0,
@ProtoNumber(5) @JvmField val buType: Int = 0,
@ProtoNumber(6) @JvmField val buildVer: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(7) @JvmField val fileResid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(8) @JvmField val picWidth: Int = 0,
@ProtoNumber(9) @JvmField val picHeight: Int = 0
) : ProtoBuf
@Serializable
internal class DelImgRsp(
@ProtoId(1) @JvmField val result: Int = 0,
@ProtoId(2) @JvmField val failMsg: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val fileResid: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val result: Int = 0,
@ProtoNumber(2) @JvmField val failMsg: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val fileResid: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class ExpRoamExtendInfo(
@ProtoId(1) @JvmField val resid: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val resid: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class ExpRoamPicInfo(
@ProtoId(1) @JvmField val shopFlag: Int = 0,
@ProtoId(2) @JvmField val pkgId: Int = 0,
@ProtoId(3) @JvmField val picId: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val shopFlag: Int = 0,
@ProtoNumber(2) @JvmField val pkgId: Int = 0,
@ProtoNumber(3) @JvmField val picId: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class ExtensionCommPicTryUp(
@ProtoId(1) @JvmField val bytesExtinfo: List<ByteArray>? = null
@ProtoNumber(1) @JvmField val bytesExtinfo: List<ByteArray>? = null
) : ProtoBuf
@Serializable
internal class ExtensionExpRoamTryUp(
@ProtoId(1) @JvmField val msgExproamPicInfo: List<ExpRoamPicInfo>? = null
@ProtoNumber(1) @JvmField val msgExproamPicInfo: List<ExpRoamPicInfo>? = null
) : ProtoBuf
@Serializable
internal class GetImgUrlReq(
@ProtoId(1) @JvmField val groupCode: Long = 0L,
@ProtoId(2) @JvmField val dstUin: Long = 0L,
@ProtoId(3) @JvmField val fileid: Long = 0L,
@ProtoId(4) @JvmField val fileMd5: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(5) @JvmField val urlFlag: Int = 0,
@ProtoId(6) @JvmField val urlType: Int = 0,
@ProtoId(7) @JvmField val reqTerm: Int = 0,
@ProtoId(8) @JvmField val reqPlatformType: Int = 0,
@ProtoId(9) @JvmField val innerIp: Int = 0,
@ProtoId(10) @JvmField val buType: Int = 0,
@ProtoId(11) @JvmField val buildVer: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(12) @JvmField val fileId: Long = 0L,
@ProtoId(13) @JvmField val fileSize: Long = 0L,
@ProtoId(14) @JvmField val originalPic: Int = 0,
@ProtoId(15) @JvmField val retryReq: Int = 0,
@ProtoId(16) @JvmField val fileHeight: Int = 0,
@ProtoId(17) @JvmField val fileWidth: Int = 0,
@ProtoId(18) @JvmField val picType: Int = 0,
@ProtoId(19) @JvmField val picUpTimestamp: Int = 0,
@ProtoId(20) @JvmField val reqTransferType: Int = 0
@ProtoNumber(1) @JvmField val groupCode: Long = 0L,
@ProtoNumber(2) @JvmField val dstUin: Long = 0L,
@ProtoNumber(3) @JvmField val fileid: Long = 0L,
@ProtoNumber(4) @JvmField val fileMd5: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(5) @JvmField val urlFlag: Int = 0,
@ProtoNumber(6) @JvmField val urlType: Int = 0,
@ProtoNumber(7) @JvmField val reqTerm: Int = 0,
@ProtoNumber(8) @JvmField val reqPlatformType: Int = 0,
@ProtoNumber(9) @JvmField val innerIp: Int = 0,
@ProtoNumber(10) @JvmField val buType: Int = 0,
@ProtoNumber(11) @JvmField val buildVer: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(12) @JvmField val fileId: Long = 0L,
@ProtoNumber(13) @JvmField val fileSize: Long = 0L,
@ProtoNumber(14) @JvmField val originalPic: Int = 0,
@ProtoNumber(15) @JvmField val retryReq: Int = 0,
@ProtoNumber(16) @JvmField val fileHeight: Int = 0,
@ProtoNumber(17) @JvmField val fileWidth: Int = 0,
@ProtoNumber(18) @JvmField val picType: Int = 0,
@ProtoNumber(19) @JvmField val picUpTimestamp: Int = 0,
@ProtoNumber(20) @JvmField val reqTransferType: Int = 0
) : ProtoBuf
@Serializable
internal class GetImgUrlRsp(
@ProtoId(1) @JvmField val fileid: Long = 0L,
@ProtoId(2) @JvmField val fileMd5: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val result: Int = 0,
@ProtoId(4) @JvmField val failMsg: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(5) @JvmField val msgImgInfo: ImgInfo? = null,
@ProtoId(6) @JvmField val bytesThumbDownUrl: List<ByteArray>? = null,
@ProtoId(7) @JvmField val bytesOriginalDownUrl: List<ByteArray>? = null,
@ProtoId(8) @JvmField val bytesBigDownUrl: List<ByteArray>? = null,
@ProtoId(9) @JvmField val uint32DownIp: List<Int>? = null,
@ProtoId(10) @JvmField val uint32DownPort: List<Int>? = null,
@ProtoId(11) @JvmField val downDomain: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(12) @JvmField val thumbDownPara: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(13) @JvmField val originalDownPara: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(14) @JvmField val bigDownPara: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(15) @JvmField val fileId: Long = 0L,
@ProtoId(16) @JvmField val autoDownType: Int = 0,
@ProtoId(17) @JvmField val uint32OrderDownType: List<Int>? = null,
@ProtoId(19) @JvmField val bigThumbDownPara: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(20) @JvmField val httpsUrlFlag: Int = 0,
@ProtoId(26) @JvmField val msgDownIp6: List<IPv6Info>? = null,
@ProtoId(27) @JvmField val clientIp6: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val fileid: Long = 0L,
@ProtoNumber(2) @JvmField val fileMd5: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val result: Int = 0,
@ProtoNumber(4) @JvmField val failMsg: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(5) @JvmField val msgImgInfo: ImgInfo? = null,
@ProtoNumber(6) @JvmField val bytesThumbDownUrl: List<ByteArray>? = null,
@ProtoNumber(7) @JvmField val bytesOriginalDownUrl: List<ByteArray>? = null,
@ProtoNumber(8) @JvmField val bytesBigDownUrl: List<ByteArray>? = null,
@ProtoNumber(9) @JvmField val uint32DownIp: List<Int>? = null,
@ProtoNumber(10) @JvmField val uint32DownPort: List<Int>? = null,
@ProtoNumber(11) @JvmField val downDomain: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(12) @JvmField val thumbDownPara: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(13) @JvmField val originalDownPara: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(14) @JvmField val bigDownPara: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(15) @JvmField val fileId: Long = 0L,
@ProtoNumber(16) @JvmField val autoDownType: Int = 0,
@ProtoNumber(17) @JvmField val uint32OrderDownType: List<Int>? = null,
@ProtoNumber(19) @JvmField val bigThumbDownPara: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(20) @JvmField val httpsUrlFlag: Int = 0,
@ProtoNumber(26) @JvmField val msgDownIp6: List<IPv6Info>? = null,
@ProtoNumber(27) @JvmField val clientIp6: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class GetPttUrlReq(
@ProtoId(1) @JvmField val groupCode: Long = 0L,
@ProtoId(2) @JvmField val dstUin: Long = 0L,
@ProtoId(3) @JvmField val fileid: Long = 0L,
@ProtoId(4) @JvmField val fileMd5: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(5) @JvmField val reqTerm: Int = 0,
@ProtoId(6) @JvmField val reqPlatformType: Int = 0,
@ProtoId(7) @JvmField val innerIp: Int = 0,
@ProtoId(8) @JvmField val buType: Int = 0,
@ProtoId(9) @JvmField val buildVer: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(10) @JvmField val fileId: Long = 0L,
@ProtoId(11) @JvmField val fileKey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(12) @JvmField val codec: Int = 0,
@ProtoId(13) @JvmField val buId: Int = 0,
@ProtoId(14) @JvmField val reqTransferType: Int = 0,
@ProtoId(15) @JvmField val isAuto: Int = 0
@ProtoNumber(1) @JvmField val groupCode: Long = 0L,
@ProtoNumber(2) @JvmField val dstUin: Long = 0L,
@ProtoNumber(3) @JvmField val fileid: Long = 0L,
@ProtoNumber(4) @JvmField val fileMd5: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(5) @JvmField val reqTerm: Int = 0,
@ProtoNumber(6) @JvmField val reqPlatformType: Int = 0,
@ProtoNumber(7) @JvmField val innerIp: Int = 0,
@ProtoNumber(8) @JvmField val buType: Int = 0,
@ProtoNumber(9) @JvmField val buildVer: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(10) @JvmField val fileId: Long = 0L,
@ProtoNumber(11) @JvmField val fileKey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(12) @JvmField val codec: Int = 0,
@ProtoNumber(13) @JvmField val buId: Int = 0,
@ProtoNumber(14) @JvmField val reqTransferType: Int = 0,
@ProtoNumber(15) @JvmField val isAuto: Int = 0
) : ProtoBuf
@Serializable
internal class GetPttUrlRsp(
@ProtoId(1) @JvmField val fileid: Long = 0L,
@ProtoId(2) @JvmField val fileMd5: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val result: Int = 0,
@ProtoId(4) @JvmField val failMsg: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(5) @JvmField val bytesDownUrl: List<ByteArray>? = null,
@ProtoId(6) @JvmField val uint32DownIp: List<Int>? = null,
@ProtoId(7) @JvmField val uint32DownPort: List<Int>? = null,
@ProtoId(8) @JvmField val downDomain: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(9) @JvmField val downPara: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(10) @JvmField val fileId: Long = 0L,
@ProtoId(11) @JvmField val transferType: Int = 0,
@ProtoId(12) @JvmField val allowRetry: Int = 0,
@ProtoId(26) @JvmField val msgDownIp6: List<IPv6Info>? = null,
@ProtoId(27) @JvmField val clientIp6: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(28) @JvmField val strDomain: String = ""
@ProtoNumber(1) @JvmField val fileid: Long = 0L,
@ProtoNumber(2) @JvmField val fileMd5: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val result: Int = 0,
@ProtoNumber(4) @JvmField val failMsg: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(5) @JvmField val bytesDownUrl: List<ByteArray>? = null,
@ProtoNumber(6) @JvmField val uint32DownIp: List<Int>? = null,
@ProtoNumber(7) @JvmField val uint32DownPort: List<Int>? = null,
@ProtoNumber(8) @JvmField val downDomain: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(9) @JvmField val downPara: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(10) @JvmField val fileId: Long = 0L,
@ProtoNumber(11) @JvmField val transferType: Int = 0,
@ProtoNumber(12) @JvmField val allowRetry: Int = 0,
@ProtoNumber(26) @JvmField val msgDownIp6: List<IPv6Info>? = null,
@ProtoNumber(27) @JvmField val clientIp6: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(28) @JvmField val strDomain: String = ""
) : ProtoBuf
@Suppress("ArrayInDataClass")
@Serializable
internal class ImgInfo(
@ProtoId(1) @JvmField val fileMd5: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(2) @JvmField val fileType: Int = 0,
@ProtoId(3) @JvmField val fileSize: Long = 0L,
@ProtoId(4) @JvmField val fileWidth: Int = 0,
@ProtoId(5) @JvmField val fileHeight: Int = 0
@ProtoNumber(1) @JvmField val fileMd5: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) @JvmField val fileType: Int = 0,
@ProtoNumber(3) @JvmField val fileSize: Long = 0L,
@ProtoNumber(4) @JvmField val fileWidth: Int = 0,
@ProtoNumber(5) @JvmField val fileHeight: Int = 0
) : ProtoBuf {
override fun toString(): String {
return "ImgInfo(fileMd5=${fileMd5.contentToString()}, fileType=$fileType, fileSize=$fileSize, fileWidth=$fileWidth, fileHeight=$fileHeight)"
@ -153,128 +153,128 @@ internal class ImgInfo(
@Serializable
internal class IPv6Info(
@ProtoId(1) @JvmField val ip6: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(2) @JvmField val port: Int = 0
@ProtoNumber(1) @JvmField val ip6: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) @JvmField val port: Int = 0
) : ProtoBuf
@Serializable
internal class PicSize(
@ProtoId(1) @JvmField val original: Int = 0,
@ProtoId(2) @JvmField val thumb: Int = 0,
@ProtoId(3) @JvmField val high: Int = 0
@ProtoNumber(1) @JvmField val original: Int = 0,
@ProtoNumber(2) @JvmField val thumb: Int = 0,
@ProtoNumber(3) @JvmField val high: Int = 0
) : ProtoBuf
@Serializable
internal class ReqBody(
@ProtoId(1) @JvmField val netType: Int = 0,
@ProtoId(2) @JvmField val subcmd: Int = 0,
@ProtoId(3) @JvmField val msgTryupImgReq: List<TryUpImgReq>? = null,
@ProtoId(4) @JvmField val msgGetimgUrlReq: List<GetImgUrlReq>? = null,
@ProtoId(5) @JvmField val msgTryupPttReq: List<TryUpPttReq>? = null,
@ProtoId(6) @JvmField val msgGetpttUrlReq: List<GetPttUrlReq>? = null,
@ProtoId(7) @JvmField val commandId: Int = 0,
@ProtoId(8) @JvmField val msgDelImgReq: List<DelImgReq>? = null,
@ProtoId(1001) @JvmField val extension: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val netType: Int = 0,
@ProtoNumber(2) @JvmField val subcmd: Int = 0,
@ProtoNumber(3) @JvmField val msgTryupImgReq: List<TryUpImgReq>? = null,
@ProtoNumber(4) @JvmField val msgGetimgUrlReq: List<GetImgUrlReq>? = null,
@ProtoNumber(5) @JvmField val msgTryupPttReq: List<TryUpPttReq>? = null,
@ProtoNumber(6) @JvmField val msgGetpttUrlReq: List<GetPttUrlReq>? = null,
@ProtoNumber(7) @JvmField val commandId: Int = 0,
@ProtoNumber(8) @JvmField val msgDelImgReq: List<DelImgReq>? = null,
@ProtoNumber(1001) @JvmField val extension: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class RspBody(
@ProtoId(1) @JvmField val clientIp: Int = 0,
@ProtoId(2) @JvmField val subcmd: Int = 0,
@ProtoId(3) @JvmField val msgTryupImgRsp: List<TryUpImgRsp>? = null,
@ProtoId(4) @JvmField val msgGetimgUrlRsp: List<GetImgUrlRsp>? = null,
@ProtoId(5) @JvmField val msgTryupPttRsp: List<TryUpPttRsp>? = null,
@ProtoId(6) @JvmField val msgGetpttUrlRsp: List<GetPttUrlRsp>? = null,
@ProtoId(7) @JvmField val msgDelImgRsp: List<DelImgRsp>? = null
@ProtoNumber(1) @JvmField val clientIp: Int = 0,
@ProtoNumber(2) @JvmField val subcmd: Int = 0,
@ProtoNumber(3) @JvmField val msgTryupImgRsp: List<TryUpImgRsp>? = null,
@ProtoNumber(4) @JvmField val msgGetimgUrlRsp: List<GetImgUrlRsp>? = null,
@ProtoNumber(5) @JvmField val msgTryupPttRsp: List<TryUpPttRsp>? = null,
@ProtoNumber(6) @JvmField val msgGetpttUrlRsp: List<GetPttUrlRsp>? = null,
@ProtoNumber(7) @JvmField val msgDelImgRsp: List<DelImgRsp>? = null
) : ProtoBuf
@Serializable
internal class TryUpImgReq(
@ProtoId(1) @JvmField val groupCode: Long = 0L,
@ProtoId(2) @JvmField val srcUin: Long = 0L,
@ProtoId(3) @JvmField val fileId: Long = 0L,
@ProtoId(4) @JvmField val fileMd5: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(5) @JvmField val fileSize: Long = 0L,
@ProtoId(6) @JvmField val fileName: String = "",
@ProtoId(7) @JvmField val srcTerm: Int = 0,
@ProtoId(8) @JvmField val platformType: Int = 0,
@ProtoId(9) @JvmField val buType: Int = 0,
@ProtoId(10) @JvmField val picWidth: Int = 0,
@ProtoId(11) @JvmField val picHeight: Int = 0,
@ProtoId(12) @JvmField val picType: Int = 0,
@ProtoId(13) @JvmField val buildVer: String = "",
@ProtoId(14) @JvmField val innerIp: Int = 0,
@ProtoId(15) @JvmField val appPicType: Int = 0,
@ProtoId(16) @JvmField val originalPic: Int = 0,
@ProtoId(17) @JvmField val fileIndex: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(18) @JvmField val dstUin: Long = 0L,
@ProtoId(19) @JvmField val srvUpload: Int = 0,
@ProtoId(20) @JvmField val transferUrl: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val groupCode: Long = 0L,
@ProtoNumber(2) @JvmField val srcUin: Long = 0L,
@ProtoNumber(3) @JvmField val fileId: Long = 0L,
@ProtoNumber(4) @JvmField val fileMd5: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(5) @JvmField val fileSize: Long = 0L,
@ProtoNumber(6) @JvmField val fileName: String = "",
@ProtoNumber(7) @JvmField val srcTerm: Int = 0,
@ProtoNumber(8) @JvmField val platformType: Int = 0,
@ProtoNumber(9) @JvmField val buType: Int = 0,
@ProtoNumber(10) @JvmField val picWidth: Int = 0,
@ProtoNumber(11) @JvmField val picHeight: Int = 0,
@ProtoNumber(12) @JvmField val picType: Int = 0,
@ProtoNumber(13) @JvmField val buildVer: String = "",
@ProtoNumber(14) @JvmField val innerIp: Int = 0,
@ProtoNumber(15) @JvmField val appPicType: Int = 0,
@ProtoNumber(16) @JvmField val originalPic: Int = 0,
@ProtoNumber(17) @JvmField val fileIndex: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(18) @JvmField val dstUin: Long = 0L,
@ProtoNumber(19) @JvmField val srvUpload: Int = 0,
@ProtoNumber(20) @JvmField val transferUrl: ByteArray = EMPTY_BYTE_ARRAY
) : ImgReq
@Serializable
internal class TryUpImgRsp(
@ProtoId(1) @JvmField val fileId: Long = 0L,
@ProtoId(2) @JvmField val result: Int = 0,
@ProtoId(3) @JvmField val failMsg: String = "",
@ProtoId(4) @JvmField val boolFileExit: Boolean = false,
@ProtoId(5) @JvmField val msgImgInfo: ImgInfo? = null,
@ProtoId(6) @JvmField val uint32UpIp: List<Int>? = null,
@ProtoId(7) @JvmField val uint32UpPort: List<Int>? = null,
@ProtoId(8) @JvmField val upUkey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(9) @JvmField val fileid: Long = 0L,
@ProtoId(10) @JvmField val upOffset: Long = 0L,
@ProtoId(11) @JvmField val blockSize: Long = 0L,
@ProtoId(12) @JvmField val boolNewBigChan: Boolean = false,
@ProtoId(26) @JvmField val msgUpIp6: List<IPv6Info>? = null,
@ProtoId(27) @JvmField val clientIp6: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(1001) @JvmField val msgInfo4busi: TryUpInfo4Busi? = null
@ProtoNumber(1) @JvmField val fileId: Long = 0L,
@ProtoNumber(2) @JvmField val result: Int = 0,
@ProtoNumber(3) @JvmField val failMsg: String = "",
@ProtoNumber(4) @JvmField val boolFileExit: Boolean = false,
@ProtoNumber(5) @JvmField val msgImgInfo: ImgInfo? = null,
@ProtoNumber(6) @JvmField val uint32UpIp: List<Int>? = null,
@ProtoNumber(7) @JvmField val uint32UpPort: List<Int>? = null,
@ProtoNumber(8) @JvmField val upUkey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(9) @JvmField val fileid: Long = 0L,
@ProtoNumber(10) @JvmField val upOffset: Long = 0L,
@ProtoNumber(11) @JvmField val blockSize: Long = 0L,
@ProtoNumber(12) @JvmField val boolNewBigChan: Boolean = false,
@ProtoNumber(26) @JvmField val msgUpIp6: List<IPv6Info>? = null,
@ProtoNumber(27) @JvmField val clientIp6: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(1001) @JvmField val msgInfo4busi: TryUpInfo4Busi? = null
) : ProtoBuf
@Serializable
internal class TryUpInfo4Busi(
@ProtoId(1) @JvmField val downDomain: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(2) @JvmField val thumbDownUrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val originalDownUrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(4) @JvmField val bigDownUrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(5) @JvmField val fileResid: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val downDomain: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) @JvmField val thumbDownUrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val originalDownUrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(4) @JvmField val bigDownUrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(5) @JvmField val fileResid: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class TryUpPttReq(
@ProtoId(1) @JvmField val groupCode: Long = 0L,
@ProtoId(2) @JvmField val srcUin: Long = 0L,
@ProtoId(3) @JvmField val fileId: Long = 0L,
@ProtoId(4) @JvmField val fileMd5: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(5) @JvmField val fileSize: Long = 0L,
@ProtoId(6) @JvmField val fileName: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(7) @JvmField val srcTerm: Int = 0,
@ProtoId(8) @JvmField val platformType: Int = 0,
@ProtoId(9) @JvmField val buType: Int = 0,
@ProtoId(10) @JvmField val buildVer: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(11) @JvmField val innerIp: Int = 0,
@ProtoId(12) @JvmField val voiceLength: Int = 0,
@ProtoId(13) @JvmField val boolNewUpChan: Boolean = false,
@ProtoId(14) @JvmField val codec: Int = 0,
@ProtoId(15) @JvmField val voiceType: Int = 0,
@ProtoId(16) @JvmField val buId: Int = 0
@ProtoNumber(1) @JvmField val groupCode: Long = 0L,
@ProtoNumber(2) @JvmField val srcUin: Long = 0L,
@ProtoNumber(3) @JvmField val fileId: Long = 0L,
@ProtoNumber(4) @JvmField val fileMd5: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(5) @JvmField val fileSize: Long = 0L,
@ProtoNumber(6) @JvmField val fileName: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(7) @JvmField val srcTerm: Int = 0,
@ProtoNumber(8) @JvmField val platformType: Int = 0,
@ProtoNumber(9) @JvmField val buType: Int = 0,
@ProtoNumber(10) @JvmField val buildVer: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(11) @JvmField val innerIp: Int = 0,
@ProtoNumber(12) @JvmField val voiceLength: Int = 0,
@ProtoNumber(13) @JvmField val boolNewUpChan: Boolean = false,
@ProtoNumber(14) @JvmField val codec: Int = 0,
@ProtoNumber(15) @JvmField val voiceType: Int = 0,
@ProtoNumber(16) @JvmField val buId: Int = 0
) : ProtoBuf
@Serializable
internal class TryUpPttRsp(
@ProtoId(1) @JvmField val fileId: Long = 0L,
@ProtoId(2) @JvmField val result: Int = 0,
@ProtoId(3) @JvmField val failMsg: ByteArray? = null,
@ProtoId(4) @JvmField val boolFileExit: Boolean = false,
@ProtoId(5) @JvmField val uint32UpIp: List<Int>? = null,
@ProtoId(6) @JvmField val uint32UpPort: List<Int>? = null,
@ProtoId(7) @JvmField val upUkey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(8) @JvmField val fileid: Long = 0L,
@ProtoId(9) @JvmField val upOffset: Long = 0L,
@ProtoId(10) @JvmField val blockSize: Long = 0L,
@ProtoId(11) @JvmField val fileKey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(12) @JvmField val channelType: Int = 0,
@ProtoId(26) @JvmField val msgUpIp6: List<IPv6Info>? = null,
@ProtoId(27) @JvmField val clientIp6: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val fileId: Long = 0L,
@ProtoNumber(2) @JvmField val result: Int = 0,
@ProtoNumber(3) @JvmField val failMsg: ByteArray? = null,
@ProtoNumber(4) @JvmField val boolFileExit: Boolean = false,
@ProtoNumber(5) @JvmField val uint32UpIp: List<Int>? = null,
@ProtoNumber(6) @JvmField val uint32UpPort: List<Int>? = null,
@ProtoNumber(7) @JvmField val upUkey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(8) @JvmField val fileid: Long = 0L,
@ProtoNumber(9) @JvmField val upOffset: Long = 0L,
@ProtoNumber(10) @JvmField val blockSize: Long = 0L,
@ProtoNumber(11) @JvmField val fileKey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(12) @JvmField val channelType: Int = 0,
@ProtoNumber(26) @JvmField val msgUpIp6: List<IPv6Info>? = null,
@ProtoNumber(27) @JvmField val clientIp6: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
}

View File

@ -3,8 +3,8 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.proto
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import kotlinx.serialization.protobuf.ProtoNumberType
import kotlinx.serialization.protobuf.ProtoIntegerType
import kotlinx.serialization.protobuf.ProtoNumber
import kotlinx.serialization.protobuf.ProtoType
import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf
@ -13,50 +13,50 @@ import kotlin.jvm.JvmField
internal class GroupOpenSysMsg : ProtoBuf {
@Serializable
internal class LightApp(
@ProtoId(1) @JvmField val app: String = "",
@ProtoId(2) @JvmField val view: String = "",
@ProtoId(3) @JvmField val desc: String = "",
@ProtoId(4) @JvmField val prompt: String = "",
@ProtoId(5) @JvmField val ver: String = "",
@ProtoId(6) @JvmField val meta: String = "",
@ProtoId(7) @JvmField val config: String = "",
@ProtoId(8) @JvmField val source: Source? = null
@ProtoNumber(1) @JvmField val app: String = "",
@ProtoNumber(2) @JvmField val view: String = "",
@ProtoNumber(3) @JvmField val desc: String = "",
@ProtoNumber(4) @JvmField val prompt: String = "",
@ProtoNumber(5) @JvmField val ver: String = "",
@ProtoNumber(6) @JvmField val meta: String = "",
@ProtoNumber(7) @JvmField val config: String = "",
@ProtoNumber(8) @JvmField val source: Source? = null
) : ProtoBuf
@Serializable
internal class RichMsg(
@ProtoId(1) @JvmField val title: String = "",
@ProtoId(2) @JvmField val desc: String = "",
@ProtoId(3) @JvmField val brief: String = "",
@ProtoId(4) @JvmField val cover: String = "",
@ProtoId(5) @JvmField val url: String = "",
@ProtoId(6) @JvmField val source: Source? = null
@ProtoNumber(1) @JvmField val title: String = "",
@ProtoNumber(2) @JvmField val desc: String = "",
@ProtoNumber(3) @JvmField val brief: String = "",
@ProtoNumber(4) @JvmField val cover: String = "",
@ProtoNumber(5) @JvmField val url: String = "",
@ProtoNumber(6) @JvmField val source: Source? = null
) : ProtoBuf
@Serializable
internal class Sender(
@ProtoId(1) @JvmField val uin: Long = 0L,
@ProtoId(2) @JvmField val nick: String = "",
@ProtoId(3) @JvmField val avatar: String = "",
@ProtoId(4) @JvmField val url: String = ""
@ProtoNumber(1) @JvmField val uin: Long = 0L,
@ProtoNumber(2) @JvmField val nick: String = "",
@ProtoNumber(3) @JvmField val avatar: String = "",
@ProtoNumber(4) @JvmField val url: String = ""
) : ProtoBuf
@Serializable
internal class Source(
@ProtoId(1) @JvmField val name: String = "",
@ProtoId(2) @JvmField val icon: String = "",
@ProtoId(3) @JvmField val url: String = ""
@ProtoNumber(1) @JvmField val name: String = "",
@ProtoNumber(2) @JvmField val icon: String = "",
@ProtoNumber(3) @JvmField val url: String = ""
) : ProtoBuf
@Serializable
internal class SysMsgBody(
@ProtoId(1) @JvmField val groupId: Long = 0L,
@ProtoId(2) @JvmField val appid: Long = 0L,
@ProtoId(3) @JvmField val sender: Sender? = null,
@ProtoId(4) @JvmField val msgType: Int = 0,
@ProtoId(5) @JvmField val content: String = "",
@ProtoId(6) @JvmField val richMsg: RichMsg? = null,
@ProtoId(7) @JvmField val lightApp: LightApp? = null
@ProtoNumber(1) @JvmField val groupId: Long = 0L,
@ProtoNumber(2) @JvmField val appid: Long = 0L,
@ProtoNumber(3) @JvmField val sender: Sender? = null,
@ProtoNumber(4) @JvmField val msgType: Int = 0,
@ProtoNumber(5) @JvmField val content: String = "",
@ProtoNumber(6) @JvmField val richMsg: RichMsg? = null,
@ProtoNumber(7) @JvmField val lightApp: LightApp? = null
) : ProtoBuf
}
@ -64,337 +64,337 @@ internal class GroupOpenSysMsg : ProtoBuf {
internal class TroopTips0x857 : ProtoBuf {
@Serializable
internal class AIOGrayTipsInfo(
@ProtoId(1) @JvmField val optUint32ShowLastest: Int = 0,
@ProtoId(2) @JvmField val optBytesContent: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val optUint32Remind: Int = 0,
@ProtoId(4) @JvmField val optBytesBrief: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(5) @JvmField val receiverUin: Long = 0L,
@ProtoId(6) @JvmField val reliaoAdminOpt: Int = 0,
@ProtoId(7) @JvmField val robotGroupOpt: Int = 0
@ProtoNumber(1) @JvmField val optUint32ShowLastest: Int = 0,
@ProtoNumber(2) @JvmField val optBytesContent: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val optUint32Remind: Int = 0,
@ProtoNumber(4) @JvmField val optBytesBrief: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(5) @JvmField val receiverUin: Long = 0L,
@ProtoNumber(6) @JvmField val reliaoAdminOpt: Int = 0,
@ProtoNumber(7) @JvmField val robotGroupOpt: Int = 0
) : ProtoBuf
@Serializable
internal class AIOTopTipsInfo(
@ProtoId(1) @JvmField val optBytesContent: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(2) @JvmField val optUint32Icon: Int = 0,
@ProtoId(3) @JvmField val optEnumAction: Int /* enum */ = 1,
@ProtoId(4) @JvmField val optBytesUrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(5) @JvmField val optBytesData: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(6) @JvmField val optBytesDataI: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(7) @JvmField val optBytesDataA: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(8) @JvmField val optBytesDataP: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val optBytesContent: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) @JvmField val optUint32Icon: Int = 0,
@ProtoNumber(3) @JvmField val optEnumAction: Int /* enum */ = 1,
@ProtoNumber(4) @JvmField val optBytesUrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(5) @JvmField val optBytesData: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(6) @JvmField val optBytesDataI: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(7) @JvmField val optBytesDataA: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(8) @JvmField val optBytesDataP: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class FloatedTipsInfo(
@ProtoId(1) @JvmField val optBytesContent: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val optBytesContent: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class GeneralGrayTipInfo(
@ProtoId(1) @JvmField val busiType: Long = 0L,
@ProtoId(2) @JvmField val busiId: Long = 0L,
@ProtoId(3) @JvmField val ctrlFlag: Int = 0,
@ProtoId(4) @JvmField val c2cType: Int = 0,
@ProtoId(5) @JvmField val serviceType: Int = 0,
@ProtoId(6) @JvmField val templId: Long = 0L,
@ProtoId(7) @JvmField val msgTemplParam: List<TemplParam>? = null,
@ProtoId(8) @JvmField val content: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(10) @JvmField val tipsSeqId: Long = 0L,
@ProtoId(100) @JvmField val pbReserv: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val busiType: Long = 0L,
@ProtoNumber(2) @JvmField val busiId: Long = 0L,
@ProtoNumber(3) @JvmField val ctrlFlag: Int = 0,
@ProtoNumber(4) @JvmField val c2cType: Int = 0,
@ProtoNumber(5) @JvmField val serviceType: Int = 0,
@ProtoNumber(6) @JvmField val templId: Long = 0L,
@ProtoNumber(7) @JvmField val msgTemplParam: List<TemplParam>? = null,
@ProtoNumber(8) @JvmField val content: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(10) @JvmField val tipsSeqId: Long = 0L,
@ProtoNumber(100) @JvmField val pbReserv: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class GoldMsgTipsElem(
@ProtoId(1) @JvmField val type: Int = 0,
@ProtoId(2) @JvmField val billno: String = "",
@ProtoId(3) @JvmField val result: Int = 0,
@ProtoId(4) @JvmField val amount: Int = 0,
@ProtoId(5) @JvmField val total: Int = 0,
@ProtoId(6) @JvmField val interval: Int = 0,
@ProtoId(7) @JvmField val finish: Int = 0,
@ProtoId(8) @JvmField val uin: List<Long>? = null,
@ProtoId(9) @JvmField val action: Int = 0
@ProtoNumber(1) @JvmField val type: Int = 0,
@ProtoNumber(2) @JvmField val billno: String = "",
@ProtoNumber(3) @JvmField val result: Int = 0,
@ProtoNumber(4) @JvmField val amount: Int = 0,
@ProtoNumber(5) @JvmField val total: Int = 0,
@ProtoNumber(6) @JvmField val interval: Int = 0,
@ProtoNumber(7) @JvmField val finish: Int = 0,
@ProtoNumber(8) @JvmField val uin: List<Long>? = null,
@ProtoNumber(9) @JvmField val action: Int = 0
) : ProtoBuf
@Serializable
internal class GroupInfoChange(
@ProtoId(1) @JvmField val groupHonorSwitch: Int = 0
@ProtoNumber(1) @JvmField val groupHonorSwitch: Int = 0
) : ProtoBuf
@Serializable
internal class GroupNotifyInfo(
@ProtoId(1) @JvmField val optUint32AutoPullFlag: Int = 0,
@ProtoId(2) @JvmField val optBytesFeedsId: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val optUint32AutoPullFlag: Int = 0,
@ProtoNumber(2) @JvmField val optBytesFeedsId: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class InstCtrl(
@ProtoId(1) @JvmField val msgSendToInst: List<InstInfo>? = null,
@ProtoId(2) @JvmField val msgExcludeInst: List<InstInfo>? = null,
@ProtoId(3) @JvmField val msgFromInst: InstInfo? = null
@ProtoNumber(1) @JvmField val msgSendToInst: List<InstInfo>? = null,
@ProtoNumber(2) @JvmField val msgExcludeInst: List<InstInfo>? = null,
@ProtoNumber(3) @JvmField val msgFromInst: InstInfo? = null
) : ProtoBuf
@Serializable
internal class InstInfo(
@ProtoId(1) @JvmField val apppid: Int = 0,
@ProtoId(2) @JvmField val instid: Int = 0,
@ProtoId(3) @JvmField val platform: Int = 0,
@ProtoId(4) @JvmField val openAppid: Int = 0,
@ProtoId(5) @JvmField val productid: Int = 0,
@ProtoId(6) @JvmField val ssoBid: Int = 0,
@ProtoId(7) @JvmField val guid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(8) @JvmField val verMin: Int = 0,
@ProtoId(9) @JvmField val verMax: Int = 0
@ProtoNumber(1) @JvmField val apppid: Int = 0,
@ProtoNumber(2) @JvmField val instid: Int = 0,
@ProtoNumber(3) @JvmField val platform: Int = 0,
@ProtoNumber(4) @JvmField val openAppid: Int = 0,
@ProtoNumber(5) @JvmField val productid: Int = 0,
@ProtoNumber(6) @JvmField val ssoBid: Int = 0,
@ProtoNumber(7) @JvmField val guid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(8) @JvmField val verMin: Int = 0,
@ProtoNumber(9) @JvmField val verMax: Int = 0
) : ProtoBuf
@Serializable
internal class LbsShareChangePushInfo(
@ProtoId(1) @JvmField val msgType: Int = 0,
@ProtoId(2) @JvmField val msgInfo: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val versionCtrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(4) @JvmField val groupId: Long = 0L,
@ProtoId(5) @JvmField val operUin: Long = 0L,
@ProtoId(6) @JvmField val grayTips: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(7) @JvmField val msgSeq: Long = 0L,
@ProtoId(8) @JvmField val joinNums: Int = 0,
@ProtoId(99) @JvmField val pushType: Int = 0,
@ProtoId(100) @JvmField val extInfo: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val msgType: Int = 0,
@ProtoNumber(2) @JvmField val msgInfo: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val versionCtrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(4) @JvmField val groupId: Long = 0L,
@ProtoNumber(5) @JvmField val operUin: Long = 0L,
@ProtoNumber(6) @JvmField val grayTips: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(7) @JvmField val msgSeq: Long = 0L,
@ProtoNumber(8) @JvmField val joinNums: Int = 0,
@ProtoNumber(99) @JvmField val pushType: Int = 0,
@ProtoNumber(100) @JvmField val extInfo: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class LuckyBagNotify(
@ProtoId(1) @JvmField val msgTips: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val msgTips: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class MediaChangePushInfo(
@ProtoId(1) @JvmField val msgType: Int = 0,
@ProtoId(2) @JvmField val msgInfo: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val versionCtrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(4) @JvmField val groupId: Long = 0L,
@ProtoId(5) @JvmField val operUin: Long = 0L,
@ProtoId(6) @JvmField val grayTips: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(7) @JvmField val msgSeq: Long = 0L,
@ProtoId(8) @JvmField val joinNums: Int = 0,
@ProtoId(9) @JvmField val msgPerSetting: PersonalSetting? = null,
@ProtoId(10) @JvmField val playMode: Int = 0,
@ProtoId(99) @JvmField val mediaType: Int = 0,
@ProtoId(100) @JvmField val extInfo: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val msgType: Int = 0,
@ProtoNumber(2) @JvmField val msgInfo: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val versionCtrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(4) @JvmField val groupId: Long = 0L,
@ProtoNumber(5) @JvmField val operUin: Long = 0L,
@ProtoNumber(6) @JvmField val grayTips: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(7) @JvmField val msgSeq: Long = 0L,
@ProtoNumber(8) @JvmField val joinNums: Int = 0,
@ProtoNumber(9) @JvmField val msgPerSetting: PersonalSetting? = null,
@ProtoNumber(10) @JvmField val playMode: Int = 0,
@ProtoNumber(99) @JvmField val mediaType: Int = 0,
@ProtoNumber(100) @JvmField val extInfo: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf {
@Serializable
internal class PersonalSetting(
@ProtoId(1) @JvmField val themeId: Int = 0,
@ProtoId(2) @JvmField val playerId: Int = 0,
@ProtoId(3) @JvmField val fontId: Int = 0
@ProtoNumber(1) @JvmField val themeId: Int = 0,
@ProtoNumber(2) @JvmField val playerId: Int = 0,
@ProtoNumber(3) @JvmField val fontId: Int = 0
) : ProtoBuf
}
@Serializable
internal class MessageBoxInfo(
@ProtoId(1) @JvmField val optBytesContent: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(2) @JvmField val optBytesTitle: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val optBytesButton: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val optBytesContent: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) @JvmField val optBytesTitle: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val optBytesButton: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class MessageRecallReminder(
@ProtoId(1) @JvmField val uin: Long = 0L,
@ProtoId(2) @JvmField val nickname: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val recalledMsgList: List<MessageMeta> = listOf(),
@ProtoId(4) @JvmField val reminderContent: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(5) @JvmField val userdef: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(6) @JvmField val groupType: Int = 0,
@ProtoId(7) @JvmField val opType: Int = 0
@ProtoNumber(1) @JvmField val uin: Long = 0L,
@ProtoNumber(2) @JvmField val nickname: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val recalledMsgList: List<MessageMeta> = listOf(),
@ProtoNumber(4) @JvmField val reminderContent: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(5) @JvmField val userdef: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(6) @JvmField val groupType: Int = 0,
@ProtoNumber(7) @JvmField val opType: Int = 0
) : ProtoBuf {
@Serializable
internal class MessageMeta(
@ProtoId(1) @JvmField val seq: Int = 0,
@ProtoId(2) @JvmField val time: Int = 0,
@ProtoId(3) @JvmField val msgRandom: Int = 0,
@ProtoId(4) @JvmField val msgType: Int = 0,
@ProtoId(5) @JvmField val msgFlag: Int = 0,
@ProtoId(6) @JvmField val authorUin: Long = 0L
@ProtoNumber(1) @JvmField val seq: Int = 0,
@ProtoNumber(2) @JvmField val time: Int = 0,
@ProtoNumber(3) @JvmField val msgRandom: Int = 0,
@ProtoNumber(4) @JvmField val msgType: Int = 0,
@ProtoNumber(5) @JvmField val msgFlag: Int = 0,
@ProtoNumber(6) @JvmField val authorUin: Long = 0L
) : ProtoBuf
}
@Serializable
internal class MiniAppNotify(
@ProtoId(1) @JvmField val msg: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val msg: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class NotifyMsgBody(
@ProtoId(1) @JvmField val optEnumType: Int /* enum */ = 1,
@ProtoId(2) @JvmField val optUint64MsgTime: Long = 0L,
@ProtoId(3) @JvmField val optUint64MsgExpires: Long = 0L,
@ProtoId(4) @JvmField val optUint64GroupCode: Long = 0L,
@ProtoId(5) @JvmField val optMsgGraytips: AIOGrayTipsInfo? = null,
@ProtoId(6) @JvmField val optMsgMessagebox: MessageBoxInfo? = null,
@ProtoId(7) @JvmField val optMsgFloatedtips: FloatedTipsInfo? = null,
@ProtoId(8) @JvmField val optMsgToptips: AIOTopTipsInfo? = null,
@ProtoId(9) @JvmField val optMsgRedtips: RedGrayTipsInfo? = null,
@ProtoId(10) @JvmField val optMsgGroupNotify: GroupNotifyInfo? = null,
@ProtoId(11) @JvmField val optMsgRecall: MessageRecallReminder? = null,
@ProtoId(12) @JvmField val optMsgThemeNotify: ThemeStateNotify? = null,
@ProtoId(13) @JvmField val serviceType: Int = 0,
@ProtoId(14) @JvmField val optMsgObjmsgUpdate: NotifyObjmsgUpdate? = null,
@ProtoId(15) @JvmField val optMsgWerewolfPush: WereWolfPush? = null,
@ProtoNumber(1) @JvmField val optEnumType: Int /* enum */ = 1,
@ProtoNumber(2) @JvmField val optUint64MsgTime: Long = 0L,
@ProtoNumber(3) @JvmField val optUint64MsgExpires: Long = 0L,
@ProtoNumber(4) @JvmField val optUint64GroupCode: Long = 0L,
@ProtoNumber(5) @JvmField val optMsgGraytips: AIOGrayTipsInfo? = null,
@ProtoNumber(6) @JvmField val optMsgMessagebox: MessageBoxInfo? = null,
@ProtoNumber(7) @JvmField val optMsgFloatedtips: FloatedTipsInfo? = null,
@ProtoNumber(8) @JvmField val optMsgToptips: AIOTopTipsInfo? = null,
@ProtoNumber(9) @JvmField val optMsgRedtips: RedGrayTipsInfo? = null,
@ProtoNumber(10) @JvmField val optMsgGroupNotify: GroupNotifyInfo? = null,
@ProtoNumber(11) @JvmField val optMsgRecall: MessageRecallReminder? = null,
@ProtoNumber(12) @JvmField val optMsgThemeNotify: ThemeStateNotify? = null,
@ProtoNumber(13) @JvmField val serviceType: Int = 0,
@ProtoNumber(14) @JvmField val optMsgObjmsgUpdate: NotifyObjmsgUpdate? = null,
@ProtoNumber(15) @JvmField val optMsgWerewolfPush: WereWolfPush? = null,
// @SerialId(16) @JvmField val optStcmGameState: ApolloGameStatus.STCMGameMessage? = null,
// @SerialId(17) @JvmField val aplloMsgPush: ApolloPushMsgInfo.STPushMsgElem? = null,
@ProtoId(18) @JvmField val optMsgGoldtips: GoldMsgTipsElem? = null,
@ProtoId(20) @JvmField val optMsgMiniappNotify: MiniAppNotify? = null,
@ProtoId(21) @JvmField val optUint64SenderUin: Long = 0L,
@ProtoId(22) @JvmField val optMsgLuckybagNotify: LuckyBagNotify? = null,
@ProtoId(23) @JvmField val optMsgTroopformtipsPush: TroopFormGrayTipsInfo? = null,
@ProtoId(24) @JvmField val optMsgMediaPush: MediaChangePushInfo? = null,
@ProtoId(26) @JvmField val optGeneralGrayTip: GeneralGrayTipInfo? = null,
@ProtoId(27) @JvmField val optMsgVideoPush: VideoChangePushInfo? = null,
@ProtoId(28) @JvmField val optLbsShareChangePlusInfo: LbsShareChangePushInfo? = null,
@ProtoId(29) @JvmField val optMsgSingPush: SingChangePushInfo? = null,
@ProtoId(30) @JvmField val optMsgGroupInfoChange: GroupInfoChange? = null
@ProtoNumber(18) @JvmField val optMsgGoldtips: GoldMsgTipsElem? = null,
@ProtoNumber(20) @JvmField val optMsgMiniappNotify: MiniAppNotify? = null,
@ProtoNumber(21) @JvmField val optUint64SenderUin: Long = 0L,
@ProtoNumber(22) @JvmField val optMsgLuckybagNotify: LuckyBagNotify? = null,
@ProtoNumber(23) @JvmField val optMsgTroopformtipsPush: TroopFormGrayTipsInfo? = null,
@ProtoNumber(24) @JvmField val optMsgMediaPush: MediaChangePushInfo? = null,
@ProtoNumber(26) @JvmField val optGeneralGrayTip: GeneralGrayTipInfo? = null,
@ProtoNumber(27) @JvmField val optMsgVideoPush: VideoChangePushInfo? = null,
@ProtoNumber(28) @JvmField val optLbsShareChangePlusInfo: LbsShareChangePushInfo? = null,
@ProtoNumber(29) @JvmField val optMsgSingPush: SingChangePushInfo? = null,
@ProtoNumber(30) @JvmField val optMsgGroupInfoChange: GroupInfoChange? = null
) : ProtoBuf
@Serializable
internal class NotifyObjmsgUpdate(
@ProtoId(1) @JvmField val objmsgId: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(2) @JvmField val updateType: Int = 0,
@ProtoId(3) @JvmField val extMsg: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val objmsgId: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) @JvmField val updateType: Int = 0,
@ProtoNumber(3) @JvmField val extMsg: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class RedGrayTipsInfo(
@ProtoId(1) @JvmField val optUint32ShowLastest: Int = 0,
@ProtoId(2) @JvmField val senderUin: Long = 0L,
@ProtoId(3) @JvmField val receiverUin: Long = 0L,
@ProtoId(4) @JvmField val senderRichContent: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(5) @JvmField val receiverRichContent: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(6) @JvmField val authkey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoType(ProtoNumberType.SIGNED) @ProtoId(7) @JvmField val sint32Msgtype: Int = 0,
@ProtoId(8) @JvmField val luckyFlag: Int = 0,
@ProtoId(9) @JvmField val hideFlag: Int = 0,
@ProtoId(10) @JvmField val pcBody: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(11) @JvmField val icon: Int = 0,
@ProtoId(12) @JvmField val luckyUin: Long = 0L,
@ProtoId(13) @JvmField val time: Int = 0,
@ProtoId(14) @JvmField val random: Int = 0,
@ProtoId(15) @JvmField val broadcastRichContent: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(16) @JvmField val idiom: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(17) @JvmField val idiomSeq: Int = 0,
@ProtoId(18) @JvmField val idiomAlpha: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(19) @JvmField val jumpurl: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val optUint32ShowLastest: Int = 0,
@ProtoNumber(2) @JvmField val senderUin: Long = 0L,
@ProtoNumber(3) @JvmField val receiverUin: Long = 0L,
@ProtoNumber(4) @JvmField val senderRichContent: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(5) @JvmField val receiverRichContent: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(6) @JvmField val authkey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoType(ProtoIntegerType.SIGNED) @ProtoNumber(7) @JvmField val sint32Msgtype: Int = 0,
@ProtoNumber(8) @JvmField val luckyFlag: Int = 0,
@ProtoNumber(9) @JvmField val hideFlag: Int = 0,
@ProtoNumber(10) @JvmField val pcBody: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(11) @JvmField val icon: Int = 0,
@ProtoNumber(12) @JvmField val luckyUin: Long = 0L,
@ProtoNumber(13) @JvmField val time: Int = 0,
@ProtoNumber(14) @JvmField val random: Int = 0,
@ProtoNumber(15) @JvmField val broadcastRichContent: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(16) @JvmField val idiom: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(17) @JvmField val idiomSeq: Int = 0,
@ProtoNumber(18) @JvmField val idiomAlpha: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(19) @JvmField val jumpurl: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class ReqBody(
@ProtoId(1) @JvmField val optUint64GroupCode: Long = 0L,
@ProtoId(2) @JvmField val uint64Memberuins: List<Long>? = null,
@ProtoId(3) @JvmField val optUint32Offline: Int = 0,
@ProtoId(4) @JvmField val msgInstCtrl: InstCtrl? = null,
@ProtoId(5) @JvmField val optBytesMsg: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(6) @JvmField val optUint32BusiType: Int = 0
@ProtoNumber(1) @JvmField val optUint64GroupCode: Long = 0L,
@ProtoNumber(2) @JvmField val uint64Memberuins: List<Long>? = null,
@ProtoNumber(3) @JvmField val optUint32Offline: Int = 0,
@ProtoNumber(4) @JvmField val msgInstCtrl: InstCtrl? = null,
@ProtoNumber(5) @JvmField val optBytesMsg: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(6) @JvmField val optUint32BusiType: Int = 0
) : ProtoBuf
@Serializable
internal class RspBody(
@ProtoId(1) @JvmField val optUint64GroupCode: Long = 0L
@ProtoNumber(1) @JvmField val optUint64GroupCode: Long = 0L
) : ProtoBuf
@Serializable
internal class SingChangePushInfo(
@ProtoId(1) @JvmField val seq: Long = 0L,
@ProtoId(2) @JvmField val actionType: Int = 0,
@ProtoId(3) @JvmField val groupId: Long = 0L,
@ProtoId(4) @JvmField val operUin: Long = 0L,
@ProtoId(5) @JvmField val grayTips: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(6) @JvmField val joinNums: Int = 0
@ProtoNumber(1) @JvmField val seq: Long = 0L,
@ProtoNumber(2) @JvmField val actionType: Int = 0,
@ProtoNumber(3) @JvmField val groupId: Long = 0L,
@ProtoNumber(4) @JvmField val operUin: Long = 0L,
@ProtoNumber(5) @JvmField val grayTips: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(6) @JvmField val joinNums: Int = 0
) : ProtoBuf
@Serializable
internal class TemplParam(
@ProtoId(1) @JvmField val name: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(2) @JvmField val value: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val name: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) @JvmField val value: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class ThemeStateNotify(
@ProtoId(1) @JvmField val state: Int = 0,
@ProtoId(2) @JvmField val feedsId: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val themeName: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(4) @JvmField val actionUin: Long = 0L,
@ProtoId(5) @JvmField val createUin: Long = 0L
@ProtoNumber(1) @JvmField val state: Int = 0,
@ProtoNumber(2) @JvmField val feedsId: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val themeName: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(4) @JvmField val actionUin: Long = 0L,
@ProtoNumber(5) @JvmField val createUin: Long = 0L
) : ProtoBuf
@Serializable
internal class TroopFormGrayTipsInfo(
@ProtoId(1) @JvmField val writerUin: Long = 0L,
@ProtoId(2) @JvmField val creatorUin: Long = 0L,
@ProtoId(3) @JvmField val richContent: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(4) @JvmField val optBytesUrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(5) @JvmField val creatorNick: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val writerUin: Long = 0L,
@ProtoNumber(2) @JvmField val creatorUin: Long = 0L,
@ProtoNumber(3) @JvmField val richContent: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(4) @JvmField val optBytesUrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(5) @JvmField val creatorNick: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class VideoChangePushInfo(
@ProtoId(1) @JvmField val seq: Long = 0L,
@ProtoId(2) @JvmField val actionType: Int = 0,
@ProtoId(3) @JvmField val groupId: Long = 0L,
@ProtoId(4) @JvmField val operUin: Long = 0L,
@ProtoId(5) @JvmField val grayTips: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(6) @JvmField val joinNums: Int = 0,
@ProtoId(100) @JvmField val extInfo: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val seq: Long = 0L,
@ProtoNumber(2) @JvmField val actionType: Int = 0,
@ProtoNumber(3) @JvmField val groupId: Long = 0L,
@ProtoNumber(4) @JvmField val operUin: Long = 0L,
@ProtoNumber(5) @JvmField val grayTips: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(6) @JvmField val joinNums: Int = 0,
@ProtoNumber(100) @JvmField val extInfo: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class WereWolfPush(
@ProtoId(1) @JvmField val pushType: Int = 0,
@ProtoId(2) @JvmField val gameRoom: Long = 0L,
@ProtoId(3) @JvmField val enumGameState: Int = 0,
@ProtoId(4) @JvmField val gameRound: Int = 0,
@ProtoId(5) @JvmField val roles: List<Role>? = null,
@ProtoId(6) @JvmField val speaker: Long = 0L,
@ProtoId(7) @JvmField val judgeUin: Long = 0L,
@ProtoId(8) @JvmField val judgeWords: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(9) @JvmField val enumOperation: Int = 0,
@ProtoId(10) @JvmField val srcUser: Long = 0L,
@ProtoId(11) @JvmField val dstUser: Long = 0L,
@ProtoId(12) @JvmField val deadUsers: List<Long>? = null,
@ProtoId(13) @JvmField val gameResult: Int = 0,
@ProtoId(14) @JvmField val timeoutSec: Int = 0,
@ProtoId(15) @JvmField val killConfirmed: Int = 0,
@ProtoId(16) @JvmField val judgeNickname: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(17) @JvmField val votedTieUsers: List<Long>? = null
@ProtoNumber(1) @JvmField val pushType: Int = 0,
@ProtoNumber(2) @JvmField val gameRoom: Long = 0L,
@ProtoNumber(3) @JvmField val enumGameState: Int = 0,
@ProtoNumber(4) @JvmField val gameRound: Int = 0,
@ProtoNumber(5) @JvmField val roles: List<Role>? = null,
@ProtoNumber(6) @JvmField val speaker: Long = 0L,
@ProtoNumber(7) @JvmField val judgeUin: Long = 0L,
@ProtoNumber(8) @JvmField val judgeWords: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(9) @JvmField val enumOperation: Int = 0,
@ProtoNumber(10) @JvmField val srcUser: Long = 0L,
@ProtoNumber(11) @JvmField val dstUser: Long = 0L,
@ProtoNumber(12) @JvmField val deadUsers: List<Long>? = null,
@ProtoNumber(13) @JvmField val gameResult: Int = 0,
@ProtoNumber(14) @JvmField val timeoutSec: Int = 0,
@ProtoNumber(15) @JvmField val killConfirmed: Int = 0,
@ProtoNumber(16) @JvmField val judgeNickname: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(17) @JvmField val votedTieUsers: List<Long>? = null
) : ProtoBuf {
@Serializable
internal class GameRecord(
@ProtoId(1) @JvmField val total: Int = 0,
@ProtoId(2) @JvmField val win: Int = 0,
@ProtoId(3) @JvmField val lose: Int = 0,
@ProtoId(4) @JvmField val draw: Int = 0
@ProtoNumber(1) @JvmField val total: Int = 0,
@ProtoNumber(2) @JvmField val win: Int = 0,
@ProtoNumber(3) @JvmField val lose: Int = 0,
@ProtoNumber(4) @JvmField val draw: Int = 0
) : ProtoBuf
@Serializable
internal class Role(
@ProtoId(1) @JvmField val uin: Long = 0L,
@ProtoId(2) @JvmField val enumType: Int = 0,
@ProtoId(3) @JvmField val enumState: Int = 0,
@ProtoId(4) @JvmField val canSpeak: Int = 0,
@ProtoId(5) @JvmField val canListen: Int = 0,
@ProtoId(6) @JvmField val position: Int = 0,
@ProtoId(7) @JvmField val canVote: Int = 0,
@ProtoId(8) @JvmField val canVoted: Int = 0,
@ProtoId(9) @JvmField val alreadyChecked: Int = 0,
@ProtoId(10) @JvmField val alreadySaved: Int = 0,
@ProtoId(11) @JvmField val alreadyPoisoned: Int = 0,
@ProtoId(12) @JvmField val playerState: Int = 0,
@ProtoId(13) @JvmField val enumDeadOp: Int = 0,
@ProtoId(14) @JvmField val enumOperation: Int = 0,
@ProtoId(15) @JvmField val dstUser: Long = 0L,
@ProtoId(16) @JvmField val operationRound: Int = 0,
@ProtoId(17) @JvmField val msgGameRecord: GameRecord? = null,
@ProtoId(18) @JvmField val isWerewolf: Int = 0,
@ProtoId(19) @JvmField val defendedUser: Long = 0L,
@ProtoId(20) @JvmField val isSheriff: Int = 0
@ProtoNumber(1) @JvmField val uin: Long = 0L,
@ProtoNumber(2) @JvmField val enumType: Int = 0,
@ProtoNumber(3) @JvmField val enumState: Int = 0,
@ProtoNumber(4) @JvmField val canSpeak: Int = 0,
@ProtoNumber(5) @JvmField val canListen: Int = 0,
@ProtoNumber(6) @JvmField val position: Int = 0,
@ProtoNumber(7) @JvmField val canVote: Int = 0,
@ProtoNumber(8) @JvmField val canVoted: Int = 0,
@ProtoNumber(9) @JvmField val alreadyChecked: Int = 0,
@ProtoNumber(10) @JvmField val alreadySaved: Int = 0,
@ProtoNumber(11) @JvmField val alreadyPoisoned: Int = 0,
@ProtoNumber(12) @JvmField val playerState: Int = 0,
@ProtoNumber(13) @JvmField val enumDeadOp: Int = 0,
@ProtoNumber(14) @JvmField val enumOperation: Int = 0,
@ProtoNumber(15) @JvmField val dstUser: Long = 0L,
@ProtoNumber(16) @JvmField val operationRound: Int = 0,
@ProtoNumber(17) @JvmField val msgGameRecord: GameRecord? = null,
@ProtoNumber(18) @JvmField val isWerewolf: Int = 0,
@ProtoNumber(19) @JvmField val defendedUser: Long = 0L,
@ProtoNumber(20) @JvmField val isSheriff: Int = 0
) : ProtoBuf
}
}

View File

@ -3,8 +3,8 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.proto
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import kotlinx.serialization.protobuf.ProtoNumberType
import kotlinx.serialization.protobuf.ProtoIntegerType
import kotlinx.serialization.protobuf.ProtoNumber
import kotlinx.serialization.protobuf.ProtoType
import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf
@ -14,74 +14,74 @@ import kotlin.jvm.JvmField
internal class Oidb0x858 : ProtoBuf {
@Serializable
internal class GoldMsgTipsElem(
@ProtoId(1) @JvmField val type: Int = 0,
@ProtoId(2) @JvmField val billno: String = "",
@ProtoId(3) @JvmField val result: Int = 0,
@ProtoId(4) @JvmField val amount: Int = 0,
@ProtoId(5) @JvmField val total: Int = 0,
@ProtoId(6) @JvmField val interval: Int = 0,
@ProtoId(7) @JvmField val finish: Int = 0,
@ProtoId(8) @JvmField val uin: List<Long>? = null,
@ProtoId(9) @JvmField val action: Int = 0
@ProtoNumber(1) @JvmField val type: Int = 0,
@ProtoNumber(2) @JvmField val billno: String = "",
@ProtoNumber(3) @JvmField val result: Int = 0,
@ProtoNumber(4) @JvmField val amount: Int = 0,
@ProtoNumber(5) @JvmField val total: Int = 0,
@ProtoNumber(6) @JvmField val interval: Int = 0,
@ProtoNumber(7) @JvmField val finish: Int = 0,
@ProtoNumber(8) @JvmField val uin: List<Long>? = null,
@ProtoNumber(9) @JvmField val action: Int = 0
) : ProtoBuf
@Serializable
internal class MessageRecallReminder(
@ProtoId(1) @JvmField val uin: Long = 0L,
@ProtoId(2) @JvmField val nickname: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val recalledMsgList: List<MessageMeta> = listOf(),
@ProtoId(4) @JvmField val reminderContent: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(5) @JvmField val userdef: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val uin: Long = 0L,
@ProtoNumber(2) @JvmField val nickname: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val recalledMsgList: List<MessageMeta> = listOf(),
@ProtoNumber(4) @JvmField val reminderContent: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(5) @JvmField val userdef: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf {
@Serializable
internal class MessageMeta(
@ProtoId(1) @JvmField val seq: Int = 0,
@ProtoId(2) @JvmField val time: Int = 0,
@ProtoId(3) @JvmField val msgRandom: Int = 0
@ProtoNumber(1) @JvmField val seq: Int = 0,
@ProtoNumber(2) @JvmField val time: Int = 0,
@ProtoNumber(3) @JvmField val msgRandom: Int = 0
) : ProtoBuf
}
@Serializable
internal class NotifyMsgBody(
@ProtoId(1) @JvmField val optEnumType: Int /* enum */ = 5,
@ProtoId(2) @JvmField val optUint64MsgTime: Long = 0L,
@ProtoId(3) @JvmField val optUint64MsgExpires: Long = 0L,
@ProtoId(4) @JvmField val optUint64ConfUin: Long = 0L,
@ProtoId(5) @JvmField val optMsgRedtips: RedGrayTipsInfo? = null,
@ProtoId(6) @JvmField val optMsgRecallReminder: MessageRecallReminder? = null,
@ProtoId(7) @JvmField val optMsgObjUpdate: NotifyObjmsgUpdate? = null,
@ProtoNumber(1) @JvmField val optEnumType: Int /* enum */ = 5,
@ProtoNumber(2) @JvmField val optUint64MsgTime: Long = 0L,
@ProtoNumber(3) @JvmField val optUint64MsgExpires: Long = 0L,
@ProtoNumber(4) @JvmField val optUint64ConfUin: Long = 0L,
@ProtoNumber(5) @JvmField val optMsgRedtips: RedGrayTipsInfo? = null,
@ProtoNumber(6) @JvmField val optMsgRecallReminder: MessageRecallReminder? = null,
@ProtoNumber(7) @JvmField val optMsgObjUpdate: NotifyObjmsgUpdate? = null,
// @SerialId(8) @JvmField val optStcmGameState: ApolloGameStatus.STCMGameMessage? = null,
// @SerialId(9) @JvmField val aplloMsgPush: ApolloPushMsgInfo.STPushMsgElem? = null,
@ProtoId(10) @JvmField val optMsgGoldtips: GoldMsgTipsElem? = null
@ProtoNumber(10) @JvmField val optMsgGoldtips: GoldMsgTipsElem? = null
) : ProtoBuf
@Serializable
internal class NotifyObjmsgUpdate(
@ProtoId(1) @JvmField val objmsgId: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(2) @JvmField val updateType: Int = 0,
@ProtoId(3) @JvmField val extMsg: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val objmsgId: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) @JvmField val updateType: Int = 0,
@ProtoNumber(3) @JvmField val extMsg: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class RedGrayTipsInfo(
@ProtoId(1) @JvmField val optUint32ShowLastest: Int = 0,
@ProtoId(2) @JvmField val senderUin: Long = 0L,
@ProtoId(3) @JvmField val receiverUin: Long = 0L,
@ProtoId(4) @JvmField val senderRichContent: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(5) @JvmField val receiverRichContent: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(6) @JvmField val authkey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoType(ProtoNumberType.SIGNED) @ProtoId(7) @JvmField val sint32Msgtype: Int = 0,
@ProtoId(8) @JvmField val luckyFlag: Int = 0,
@ProtoId(9) @JvmField val hideFlag: Int = 0,
@ProtoId(10) @JvmField val pcBody: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(11) @JvmField val icon: Int = 0,
@ProtoId(12) @JvmField val luckyUin: Long = 0L,
@ProtoId(13) @JvmField val time: Int = 0,
@ProtoId(14) @JvmField val random: Int = 0,
@ProtoId(15) @JvmField val broadcastRichContent: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(16) @JvmField val idiom: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(17) @JvmField val idiomSeq: Int = 0,
@ProtoId(18) @JvmField val idiomAlpha: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(19) @JvmField val jumpurl: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val optUint32ShowLastest: Int = 0,
@ProtoNumber(2) @JvmField val senderUin: Long = 0L,
@ProtoNumber(3) @JvmField val receiverUin: Long = 0L,
@ProtoNumber(4) @JvmField val senderRichContent: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(5) @JvmField val receiverRichContent: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(6) @JvmField val authkey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoType(ProtoIntegerType.SIGNED) @ProtoNumber(7) @JvmField val sint32Msgtype: Int = 0,
@ProtoNumber(8) @JvmField val luckyFlag: Int = 0,
@ProtoNumber(9) @JvmField val hideFlag: Int = 0,
@ProtoNumber(10) @JvmField val pcBody: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(11) @JvmField val icon: Int = 0,
@ProtoNumber(12) @JvmField val luckyUin: Long = 0L,
@ProtoNumber(13) @JvmField val time: Int = 0,
@ProtoNumber(14) @JvmField val random: Int = 0,
@ProtoNumber(15) @JvmField val broadcastRichContent: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(16) @JvmField val idiom: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(17) @JvmField val idiomSeq: Int = 0,
@ProtoNumber(18) @JvmField val idiomAlpha: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(19) @JvmField val jumpurl: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
}

View File

@ -1,7 +1,7 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.proto
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import kotlinx.serialization.protobuf.ProtoNumber
import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf
import kotlin.jvm.JvmField
@ -9,56 +9,56 @@ import kotlin.jvm.JvmField
internal class Common : ProtoBuf {
@Serializable
internal class BindInfo(
@ProtoId(1) @JvmField val friUin: Long = 0L,
@ProtoId(2) @JvmField val friNick: String = "",
@ProtoId(3) @JvmField val time: Long = 0L,
@ProtoId(4) @JvmField val bindStatus: Int = 0
@ProtoNumber(1) @JvmField val friUin: Long = 0L,
@ProtoNumber(2) @JvmField val friNick: String = "",
@ProtoNumber(3) @JvmField val time: Long = 0L,
@ProtoNumber(4) @JvmField val bindStatus: Int = 0
) : ProtoBuf
@Serializable
internal class MedalInfo(
@ProtoId(1) @JvmField val id: Int = 0,
@ProtoId(2) @JvmField val type: Int = 0,
@ProtoId(4) @JvmField val seq: Long = 0,
@ProtoId(5) @JvmField val name: String = "",
@ProtoId(6) @JvmField val newflag: Int = 0,
@ProtoId(7) @JvmField val time: Long = 0L,
@ProtoId(8) @JvmField val msgBindFri: BindInfo? = null,
@ProtoId(11) @JvmField val desc: String = "",
@ProtoId(31) @JvmField val level: Int = 0,
@ProtoId(36) @JvmField val taskinfos: List<MedalTaskInfo>? = null,
@ProtoId(40) @JvmField val point: Int = 0,
@ProtoId(41) @JvmField val pointLevel2: Int = 0,
@ProtoId(42) @JvmField val pointLevel3: Int = 0,
@ProtoId(43) @JvmField val seqLevel2: Long = 0,
@ProtoId(44) @JvmField val seqLevel3: Long = 0,
@ProtoId(45) @JvmField val timeLevel2: Long = 0L,
@ProtoId(46) @JvmField val timeLevel3: Long = 0L,
@ProtoId(47) @JvmField val descLevel2: String = "",
@ProtoId(48) @JvmField val descLevel3: String = "",
@ProtoId(49) @JvmField val endtime: Int = 0,
@ProtoId(50) @JvmField val detailUrl: String = "",
@ProtoId(51) @JvmField val detailUrl2: String = "",
@ProtoId(52) @JvmField val detailUrl3: String = "",
@ProtoId(53) @JvmField val taskDesc: String = "",
@ProtoId(54) @JvmField val taskDesc2: String = "",
@ProtoId(55) @JvmField val taskDesc3: String = "",
@ProtoId(56) @JvmField val levelCount: Int = 0,
@ProtoId(57) @JvmField val noProgress: Int = 0,
@ProtoId(58) @JvmField val resource: String = "",
@ProtoId(59) @JvmField val fromuinLevel: Int = 0,
@ProtoId(60) @JvmField val unread: Int = 0,
@ProtoId(61) @JvmField val unread2: Int = 0,
@ProtoId(62) @JvmField val unread3: Int = 0
@ProtoNumber(1) @JvmField val id: Int = 0,
@ProtoNumber(2) @JvmField val type: Int = 0,
@ProtoNumber(4) @JvmField val seq: Long = 0,
@ProtoNumber(5) @JvmField val name: String = "",
@ProtoNumber(6) @JvmField val newflag: Int = 0,
@ProtoNumber(7) @JvmField val time: Long = 0L,
@ProtoNumber(8) @JvmField val msgBindFri: BindInfo? = null,
@ProtoNumber(11) @JvmField val desc: String = "",
@ProtoNumber(31) @JvmField val level: Int = 0,
@ProtoNumber(36) @JvmField val taskinfos: List<MedalTaskInfo>? = null,
@ProtoNumber(40) @JvmField val point: Int = 0,
@ProtoNumber(41) @JvmField val pointLevel2: Int = 0,
@ProtoNumber(42) @JvmField val pointLevel3: Int = 0,
@ProtoNumber(43) @JvmField val seqLevel2: Long = 0,
@ProtoNumber(44) @JvmField val seqLevel3: Long = 0,
@ProtoNumber(45) @JvmField val timeLevel2: Long = 0L,
@ProtoNumber(46) @JvmField val timeLevel3: Long = 0L,
@ProtoNumber(47) @JvmField val descLevel2: String = "",
@ProtoNumber(48) @JvmField val descLevel3: String = "",
@ProtoNumber(49) @JvmField val endtime: Int = 0,
@ProtoNumber(50) @JvmField val detailUrl: String = "",
@ProtoNumber(51) @JvmField val detailUrl2: String = "",
@ProtoNumber(52) @JvmField val detailUrl3: String = "",
@ProtoNumber(53) @JvmField val taskDesc: String = "",
@ProtoNumber(54) @JvmField val taskDesc2: String = "",
@ProtoNumber(55) @JvmField val taskDesc3: String = "",
@ProtoNumber(56) @JvmField val levelCount: Int = 0,
@ProtoNumber(57) @JvmField val noProgress: Int = 0,
@ProtoNumber(58) @JvmField val resource: String = "",
@ProtoNumber(59) @JvmField val fromuinLevel: Int = 0,
@ProtoNumber(60) @JvmField val unread: Int = 0,
@ProtoNumber(61) @JvmField val unread2: Int = 0,
@ProtoNumber(62) @JvmField val unread3: Int = 0
) : ProtoBuf
@Serializable
internal class MedalTaskInfo(
@ProtoId(1) @JvmField val taskid: Int = 0,
@ProtoId(32) @JvmField val int32TaskValue: Int = 0,
@ProtoId(33) @JvmField val tarValue: Int = 0,
@ProtoId(34) @JvmField val tarValueLevel2: Int = 0,
@ProtoId(35) @JvmField val tarValueLevel3: Int = 0
@ProtoNumber(1) @JvmField val taskid: Int = 0,
@ProtoNumber(32) @JvmField val int32TaskValue: Int = 0,
@ProtoNumber(33) @JvmField val tarValue: Int = 0,
@ProtoNumber(34) @JvmField val tarValueLevel2: Int = 0,
@ProtoNumber(35) @JvmField val tarValueLevel3: Int = 0
) : ProtoBuf
}
@ -66,475 +66,475 @@ internal class Common : ProtoBuf {
internal class AppointDefine : ProtoBuf {
@Serializable
internal class ADFeedContent(
@ProtoId(1) @JvmField val msgUserInfo: UserInfo? = null,
@ProtoId(2) @JvmField val strPicUrl: List<String> = listOf(),
@ProtoId(3) @JvmField val msgText: RichText? = null,
@ProtoId(4) @JvmField val attendInfo: String = "",
@ProtoId(5) @JvmField val actionUrl: String = "",
@ProtoId(6) @JvmField val publishTime: Int = 0,
@ProtoId(7) @JvmField val msgHotTopicList: HotTopicList? = null,
@ProtoId(8) @JvmField val moreUrl: String = "",
@ProtoId(9) @JvmField val recordDuration: String = ""
@ProtoNumber(1) @JvmField val msgUserInfo: UserInfo? = null,
@ProtoNumber(2) @JvmField val strPicUrl: List<String> = listOf(),
@ProtoNumber(3) @JvmField val msgText: RichText? = null,
@ProtoNumber(4) @JvmField val attendInfo: String = "",
@ProtoNumber(5) @JvmField val actionUrl: String = "",
@ProtoNumber(6) @JvmField val publishTime: Int = 0,
@ProtoNumber(7) @JvmField val msgHotTopicList: HotTopicList? = null,
@ProtoNumber(8) @JvmField val moreUrl: String = "",
@ProtoNumber(9) @JvmField val recordDuration: String = ""
) : ProtoBuf
@Serializable
internal class RichText(
@ProtoId(1) @JvmField val msgElems: List<Elem>? = null
@ProtoNumber(1) @JvmField val msgElems: List<Elem>? = null
) : ProtoBuf
@Serializable
internal class RankEvent(
@ProtoId(1) @JvmField val listtype: Int = 0,
@ProtoId(2) @JvmField val notifytype: Int = 0,
@ProtoId(3) @JvmField val eventtime: Int = 0,
@ProtoId(4) @JvmField val seq: Int = 0,
@ProtoId(5) @JvmField val notifyTips: String = ""
@ProtoNumber(1) @JvmField val listtype: Int = 0,
@ProtoNumber(2) @JvmField val notifytype: Int = 0,
@ProtoNumber(3) @JvmField val eventtime: Int = 0,
@ProtoNumber(4) @JvmField val seq: Int = 0,
@ProtoNumber(5) @JvmField val notifyTips: String = ""
) : ProtoBuf
@Serializable
internal class Wifi(
@ProtoId(1) @JvmField val mac: Long = 0L,
@ProtoId(2) @JvmField val int32Rssi: Int = 0
@ProtoNumber(1) @JvmField val mac: Long = 0L,
@ProtoNumber(2) @JvmField val int32Rssi: Int = 0
) : ProtoBuf
@Serializable
internal class InterestItem(
@ProtoId(1) @JvmField val tagId: Long = 0L,
@ProtoId(2) @JvmField val tagName: String = "",
@ProtoId(3) @JvmField val tagIconUrl: String = "",
@ProtoId(4) @JvmField val tagHref: String = "",
@ProtoId(5) @JvmField val tagBackColor: String = "",
@ProtoId(6) @JvmField val tagFontColor: String = "",
@ProtoId(7) @JvmField val tagVid: String = "",
@ProtoId(8) @JvmField val tagType: Int = 0,
@ProtoId(9) @JvmField val addTime: Int = 0,
@ProtoId(10) @JvmField val tagCategory: String = "",
@ProtoId(11) @JvmField val tagOtherUrl: String = "",
@ProtoId(12) @JvmField val bid: Int = 0
@ProtoNumber(1) @JvmField val tagId: Long = 0L,
@ProtoNumber(2) @JvmField val tagName: String = "",
@ProtoNumber(3) @JvmField val tagIconUrl: String = "",
@ProtoNumber(4) @JvmField val tagHref: String = "",
@ProtoNumber(5) @JvmField val tagBackColor: String = "",
@ProtoNumber(6) @JvmField val tagFontColor: String = "",
@ProtoNumber(7) @JvmField val tagVid: String = "",
@ProtoNumber(8) @JvmField val tagType: Int = 0,
@ProtoNumber(9) @JvmField val addTime: Int = 0,
@ProtoNumber(10) @JvmField val tagCategory: String = "",
@ProtoNumber(11) @JvmField val tagOtherUrl: String = "",
@ProtoNumber(12) @JvmField val bid: Int = 0
) : ProtoBuf
@Serializable
internal class ShopID(
@ProtoId(1) @JvmField val shopid: String = "",
@ProtoId(2) @JvmField val sp: Int = 0
@ProtoNumber(1) @JvmField val shopid: String = "",
@ProtoNumber(2) @JvmField val sp: Int = 0
) : ProtoBuf
@Serializable
internal class FeedComment(
@ProtoId(1) @JvmField val commentId: String = "",
@ProtoId(2) @JvmField val feedId: String = "",
@ProtoId(3) @JvmField val msgPublisherInfo: StrangerInfo? = null,
@ProtoId(4) @JvmField val time: Int = 0,
@ProtoId(6) @JvmField val msgReplyInfo: ReplyInfo? = null,
@ProtoId(7) @JvmField val flag: Int = 0,
@ProtoId(8) @JvmField val msgContent: RichText? = null,
@ProtoId(9) @JvmField val hot: Int = 0
@ProtoNumber(1) @JvmField val commentId: String = "",
@ProtoNumber(2) @JvmField val feedId: String = "",
@ProtoNumber(3) @JvmField val msgPublisherInfo: StrangerInfo? = null,
@ProtoNumber(4) @JvmField val time: Int = 0,
@ProtoNumber(6) @JvmField val msgReplyInfo: ReplyInfo? = null,
@ProtoNumber(7) @JvmField val flag: Int = 0,
@ProtoNumber(8) @JvmField val msgContent: RichText? = null,
@ProtoNumber(9) @JvmField val hot: Int = 0
) : ProtoBuf
@Serializable
internal class ADFeed(
@ProtoId(1) @JvmField val taskId: Int = 0,
@ProtoId(2) @JvmField val style: Int = 0,
@ProtoId(3) @JvmField val content: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val taskId: Int = 0,
@ProtoNumber(2) @JvmField val style: Int = 0,
@ProtoNumber(3) @JvmField val content: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class Cell(
@ProtoId(1) @JvmField val int32Mcc: Int = -1,
@ProtoId(2) @JvmField val int32Mnc: Int = -1,
@ProtoId(3) @JvmField val int32Lac: Int = -1,
@ProtoId(4) @JvmField val int32Cellid: Int = -1,
@ProtoId(5) @JvmField val int32Rssi: Int = 0
@ProtoNumber(1) @JvmField val int32Mcc: Int = -1,
@ProtoNumber(2) @JvmField val int32Mnc: Int = -1,
@ProtoNumber(3) @JvmField val int32Lac: Int = -1,
@ProtoNumber(4) @JvmField val int32Cellid: Int = -1,
@ProtoNumber(5) @JvmField val int32Rssi: Int = 0
) : ProtoBuf
@Serializable
internal class RecentVistorEvent(
@ProtoId(1) @JvmField val eventtype: Int = 0,
@ProtoId(2) @JvmField val eventTinyid: Long = 0L,
@ProtoId(3) @JvmField val unreadCount: Int = 0
@ProtoNumber(1) @JvmField val eventtype: Int = 0,
@ProtoNumber(2) @JvmField val eventTinyid: Long = 0L,
@ProtoNumber(3) @JvmField val unreadCount: Int = 0
) : ProtoBuf
@Serializable
internal class OrganizerInfo(
@ProtoId(1) @JvmField val hostName: String = "",
@ProtoId(2) @JvmField val hostUrl: String = "",
@ProtoId(3) @JvmField val hostCover: String = ""
@ProtoNumber(1) @JvmField val hostName: String = "",
@ProtoNumber(2) @JvmField val hostUrl: String = "",
@ProtoNumber(3) @JvmField val hostCover: String = ""
) : ProtoBuf
@Serializable
internal class InterestTag(
@ProtoId(1) @JvmField val tagType: Int = 0,
@ProtoId(2) @JvmField val msgTagList: List<InterestItem>? = null
@ProtoNumber(1) @JvmField val tagType: Int = 0,
@ProtoNumber(2) @JvmField val msgTagList: List<InterestItem>? = null
) : ProtoBuf
@Serializable
internal class AppointInfoEx(
@ProtoId(1) @JvmField val feedsPicUrl: String = "",
@ProtoId(2) @JvmField val feedsUrl: String = "",
@ProtoId(3) @JvmField val detailTitle: String = "",
@ProtoId(4) @JvmField val detailDescribe: String = "",
@ProtoId(5) @JvmField val showPublisher: Int = 0,
@ProtoId(6) @JvmField val detailPicUrl: String = "",
@ProtoId(7) @JvmField val detailUrl: String = "",
@ProtoId(8) @JvmField val showAttend: Int = 0
@ProtoNumber(1) @JvmField val feedsPicUrl: String = "",
@ProtoNumber(2) @JvmField val feedsUrl: String = "",
@ProtoNumber(3) @JvmField val detailTitle: String = "",
@ProtoNumber(4) @JvmField val detailDescribe: String = "",
@ProtoNumber(5) @JvmField val showPublisher: Int = 0,
@ProtoNumber(6) @JvmField val detailPicUrl: String = "",
@ProtoNumber(7) @JvmField val detailUrl: String = "",
@ProtoNumber(8) @JvmField val showAttend: Int = 0
) : ProtoBuf
@Serializable
internal class DateComment(
@ProtoId(1) @JvmField val commentId: String = "",
@ProtoId(2) @JvmField val msgAppointId: AppointID? = null,
@ProtoId(3) @JvmField val msgPublisherInfo: StrangerInfo? = null,
@ProtoId(4) @JvmField val time: Int = 0,
@ProtoId(6) @JvmField val msgReplyInfo: ReplyInfo? = null,
@ProtoId(7) @JvmField val flag: Int = 0,
@ProtoId(8) @JvmField val msgContent: RichText? = null
@ProtoNumber(1) @JvmField val commentId: String = "",
@ProtoNumber(2) @JvmField val msgAppointId: AppointID? = null,
@ProtoNumber(3) @JvmField val msgPublisherInfo: StrangerInfo? = null,
@ProtoNumber(4) @JvmField val time: Int = 0,
@ProtoNumber(6) @JvmField val msgReplyInfo: ReplyInfo? = null,
@ProtoNumber(7) @JvmField val flag: Int = 0,
@ProtoNumber(8) @JvmField val msgContent: RichText? = null
) : ProtoBuf
@Serializable
internal class AppointContent(
@ProtoId(1) @JvmField val appointSubject: Int = 0,
@ProtoId(2) @JvmField val payType: Int = 0,
@ProtoId(3) @JvmField val appointDate: Int = 0,
@ProtoId(4) @JvmField val appointGender: Int = 0,
@ProtoId(5) @JvmField val appointIntroduce: String = "",
@ProtoId(6) @JvmField val msgAppointAddress: AddressInfo? = null,
@ProtoId(7) @JvmField val msgTravelInfo: TravelInfo? = null
@ProtoNumber(1) @JvmField val appointSubject: Int = 0,
@ProtoNumber(2) @JvmField val payType: Int = 0,
@ProtoNumber(3) @JvmField val appointDate: Int = 0,
@ProtoNumber(4) @JvmField val appointGender: Int = 0,
@ProtoNumber(5) @JvmField val appointIntroduce: String = "",
@ProtoNumber(6) @JvmField val msgAppointAddress: AddressInfo? = null,
@ProtoNumber(7) @JvmField val msgTravelInfo: TravelInfo? = null
) : ProtoBuf
@Serializable
internal class FeedInfo(
@ProtoId(1) @JvmField val feedType: Long = 0L,
@ProtoId(2) @JvmField val feedId: String = "",
@ProtoId(3) @JvmField val msgFeedContent: FeedContent? = null,
@ProtoId(4) @JvmField val msgTopicInfo: NearbyTopic? = null,
@ProtoId(5) @JvmField val publishTime: Long = 0,
@ProtoId(6) @JvmField val praiseCount: Int = 0,
@ProtoId(7) @JvmField val praiseFlag: Int = 0,
@ProtoId(8) @JvmField val msgPraiseUser: List<StrangerInfo>? = null,
@ProtoId(9) @JvmField val commentCount: Int = 0,
@ProtoId(10) @JvmField val msgCommentList: List<FeedComment>? = null,
@ProtoId(11) @JvmField val commentRetAll: Int = 0,
@ProtoId(12) @JvmField val hotFlag: Int = 0,
@ProtoId(13) @JvmField val svrReserved: Long = 0L,
@ProtoId(14) @JvmField val msgHotEntry: HotEntry? = null
@ProtoNumber(1) @JvmField val feedType: Long = 0L,
@ProtoNumber(2) @JvmField val feedId: String = "",
@ProtoNumber(3) @JvmField val msgFeedContent: FeedContent? = null,
@ProtoNumber(4) @JvmField val msgTopicInfo: NearbyTopic? = null,
@ProtoNumber(5) @JvmField val publishTime: Long = 0,
@ProtoNumber(6) @JvmField val praiseCount: Int = 0,
@ProtoNumber(7) @JvmField val praiseFlag: Int = 0,
@ProtoNumber(8) @JvmField val msgPraiseUser: List<StrangerInfo>? = null,
@ProtoNumber(9) @JvmField val commentCount: Int = 0,
@ProtoNumber(10) @JvmField val msgCommentList: List<FeedComment>? = null,
@ProtoNumber(11) @JvmField val commentRetAll: Int = 0,
@ProtoNumber(12) @JvmField val hotFlag: Int = 0,
@ProtoNumber(13) @JvmField val svrReserved: Long = 0L,
@ProtoNumber(14) @JvmField val msgHotEntry: HotEntry? = null
) : ProtoBuf
@Serializable
internal class HotTopicList(
@ProtoId(1) @JvmField val topicList: List<HotTopic>? = null
@ProtoNumber(1) @JvmField val topicList: List<HotTopic>? = null
) : ProtoBuf
@Serializable
internal class FeedContent(
@ProtoId(1) @JvmField val strPicUrl: List<String> = listOf(),
@ProtoId(2) @JvmField val msgText: RichText? = null,
@ProtoId(3) @JvmField val hrefUrl: String = "",
@ProtoId(5) @JvmField val groupName: String = "",
@ProtoId(6) @JvmField val groupBulletin: String = "",
@ProtoId(7) @JvmField val feedType: Int = 0,
@ProtoId(8) @JvmField val poiId: String = "",
@ProtoId(9) @JvmField val poiTitle: String = "",
@ProtoId(20) @JvmField val effectiveTime: Int = 0,
@ProtoId(21) @JvmField val expiationTime: Int = 0,
@ProtoId(22) @JvmField val msgLocale: LocaleInfo? = null,
@ProtoId(23) @JvmField val feedsIndex: Int = 0,
@ProtoId(24) @JvmField val msgAd: ADFeed? = null,
@ProtoId(25) @JvmField val privateData: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val strPicUrl: List<String> = listOf(),
@ProtoNumber(2) @JvmField val msgText: RichText? = null,
@ProtoNumber(3) @JvmField val hrefUrl: String = "",
@ProtoNumber(5) @JvmField val groupName: String = "",
@ProtoNumber(6) @JvmField val groupBulletin: String = "",
@ProtoNumber(7) @JvmField val feedType: Int = 0,
@ProtoNumber(8) @JvmField val poiId: String = "",
@ProtoNumber(9) @JvmField val poiTitle: String = "",
@ProtoNumber(20) @JvmField val effectiveTime: Int = 0,
@ProtoNumber(21) @JvmField val expiationTime: Int = 0,
@ProtoNumber(22) @JvmField val msgLocale: LocaleInfo? = null,
@ProtoNumber(23) @JvmField val feedsIndex: Int = 0,
@ProtoNumber(24) @JvmField val msgAd: ADFeed? = null,
@ProtoNumber(25) @JvmField val privateData: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class TravelInfo(
@ProtoId(1) @JvmField val msgDepartLocale: LocaleInfo? = null,
@ProtoId(2) @JvmField val msgDestination: LocaleInfo? = null,
@ProtoId(3) @JvmField val vehicle: Int = 0,
@ProtoId(4) @JvmField val partnerCount: Int = 0,
@ProtoId(5) @JvmField val placePicUrl: String = "",
@ProtoId(6) @JvmField val placeUrl: String = ""
@ProtoNumber(1) @JvmField val msgDepartLocale: LocaleInfo? = null,
@ProtoNumber(2) @JvmField val msgDestination: LocaleInfo? = null,
@ProtoNumber(3) @JvmField val vehicle: Int = 0,
@ProtoNumber(4) @JvmField val partnerCount: Int = 0,
@ProtoNumber(5) @JvmField val placePicUrl: String = "",
@ProtoNumber(6) @JvmField val placeUrl: String = ""
) : ProtoBuf
@Serializable
internal class RecentFreshFeed(
@ProtoId(1) @JvmField val freshFeedInfo: List<FreshFeedInfo>? = null,
@ProtoId(2) @JvmField val uid: Long = 0L
@ProtoNumber(1) @JvmField val freshFeedInfo: List<FreshFeedInfo>? = null,
@ProtoNumber(2) @JvmField val uid: Long = 0L
) : ProtoBuf
@Serializable
internal class GPS(
@ProtoId(1) @JvmField val int32Lat: Int = 900000000,
@ProtoId(2) @JvmField val int32Lon: Int = 900000000,
@ProtoId(3) @JvmField val int32Alt: Int = -10000000,
@ProtoId(4) @JvmField val int32Type: Int = 0
@ProtoNumber(1) @JvmField val int32Lat: Int = 900000000,
@ProtoNumber(2) @JvmField val int32Lon: Int = 900000000,
@ProtoNumber(3) @JvmField val int32Alt: Int = -10000000,
@ProtoNumber(4) @JvmField val int32Type: Int = 0
) : ProtoBuf
@Serializable
internal class AppointID(
@ProtoId(1) @JvmField val requestId: String = ""
@ProtoNumber(1) @JvmField val requestId: String = ""
) : ProtoBuf
@Serializable
internal class LocaleInfo(
@ProtoId(1) @JvmField val name: String = "",
@ProtoId(2) @JvmField val country: String = "",
@ProtoId(3) @JvmField val province: String = "",
@ProtoId(4) @JvmField val city: String = "",
@ProtoId(5) @JvmField val region: String = "",
@ProtoId(6) @JvmField val poi: String = "",
@ProtoId(7) @JvmField val msgGps: GPS? = null,
@ProtoId(8) @JvmField val address: String = ""
@ProtoNumber(1) @JvmField val name: String = "",
@ProtoNumber(2) @JvmField val country: String = "",
@ProtoNumber(3) @JvmField val province: String = "",
@ProtoNumber(4) @JvmField val city: String = "",
@ProtoNumber(5) @JvmField val region: String = "",
@ProtoNumber(6) @JvmField val poi: String = "",
@ProtoNumber(7) @JvmField val msgGps: GPS? = null,
@ProtoNumber(8) @JvmField val address: String = ""
) : ProtoBuf
@Serializable
internal class LBSInfo(
@ProtoId(1) @JvmField val msgGps: GPS? = null,
@ProtoId(2) @JvmField val msgWifis: List<Wifi>? = null,
@ProtoId(3) @JvmField val msgCells: List<Cell>? = null
@ProtoNumber(1) @JvmField val msgGps: GPS? = null,
@ProtoNumber(2) @JvmField val msgWifis: List<Wifi>? = null,
@ProtoNumber(3) @JvmField val msgCells: List<Cell>? = null
) : ProtoBuf
@Serializable
internal class FeedEvent(
@ProtoId(1) @JvmField val eventId: Long = 0L,
@ProtoId(2) @JvmField val time: Int = 0,
@ProtoId(3) @JvmField val eventtype: Int = 0,
@ProtoId(4) @JvmField val msgUserInfo: StrangerInfo? = null,
@ProtoId(5) @JvmField val msgFeedInfo: FeedInfo? = null,
@ProtoId(6) @JvmField val eventTips: String = "",
@ProtoId(7) @JvmField val msgComment: FeedComment? = null,
@ProtoId(8) @JvmField val cancelEventId: Long = 0L
@ProtoNumber(1) @JvmField val eventId: Long = 0L,
@ProtoNumber(2) @JvmField val time: Int = 0,
@ProtoNumber(3) @JvmField val eventtype: Int = 0,
@ProtoNumber(4) @JvmField val msgUserInfo: StrangerInfo? = null,
@ProtoNumber(5) @JvmField val msgFeedInfo: FeedInfo? = null,
@ProtoNumber(6) @JvmField val eventTips: String = "",
@ProtoNumber(7) @JvmField val msgComment: FeedComment? = null,
@ProtoNumber(8) @JvmField val cancelEventId: Long = 0L
) : ProtoBuf
@Serializable
internal class FeedsCookie(
@ProtoId(1) @JvmField val strList: List<String> = listOf(),
@ProtoId(2) @JvmField val pose: Int = 0,
@ProtoId(3) @JvmField val cookie: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(4) @JvmField val uint64Topics: List<Long>? = null
@ProtoNumber(1) @JvmField val strList: List<String> = listOf(),
@ProtoNumber(2) @JvmField val pose: Int = 0,
@ProtoNumber(3) @JvmField val cookie: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(4) @JvmField val uint64Topics: List<Long>? = null
) : ProtoBuf
@Serializable
internal class NearbyTopic(
@ProtoId(1) @JvmField val topicId: Long = 0L,
@ProtoId(2) @JvmField val topic: String = "",
@ProtoId(3) @JvmField val foreword: String = "",
@ProtoId(4) @JvmField val createTime: Int = 0,
@ProtoId(5) @JvmField val updateTime: Int = 0,
@ProtoId(6) @JvmField val hotFlag: Int = 0,
@ProtoId(7) @JvmField val buttonStyle: Int = 0,
@ProtoId(8) @JvmField val buttonSrc: String = "",
@ProtoId(9) @JvmField val backgroundSrc: String = "",
@ProtoId(10) @JvmField val attendeeInfo: String = "",
@ProtoId(11) @JvmField val index: Int = 0,
@ProtoId(12) @JvmField val publishScope: Int = 0,
@ProtoId(13) @JvmField val effectiveTime: Int = 0,
@ProtoId(14) @JvmField val expiationTime: Int = 0,
@ProtoId(15) @JvmField val pushedUsrCount: Int = 0,
@ProtoId(16) @JvmField val timerangeLeft: Int = 0,
@ProtoId(17) @JvmField val timerangeRight: Int = 0,
@ProtoId(18) @JvmField val area: String = ""
@ProtoNumber(1) @JvmField val topicId: Long = 0L,
@ProtoNumber(2) @JvmField val topic: String = "",
@ProtoNumber(3) @JvmField val foreword: String = "",
@ProtoNumber(4) @JvmField val createTime: Int = 0,
@ProtoNumber(5) @JvmField val updateTime: Int = 0,
@ProtoNumber(6) @JvmField val hotFlag: Int = 0,
@ProtoNumber(7) @JvmField val buttonStyle: Int = 0,
@ProtoNumber(8) @JvmField val buttonSrc: String = "",
@ProtoNumber(9) @JvmField val backgroundSrc: String = "",
@ProtoNumber(10) @JvmField val attendeeInfo: String = "",
@ProtoNumber(11) @JvmField val index: Int = 0,
@ProtoNumber(12) @JvmField val publishScope: Int = 0,
@ProtoNumber(13) @JvmField val effectiveTime: Int = 0,
@ProtoNumber(14) @JvmField val expiationTime: Int = 0,
@ProtoNumber(15) @JvmField val pushedUsrCount: Int = 0,
@ProtoNumber(16) @JvmField val timerangeLeft: Int = 0,
@ProtoNumber(17) @JvmField val timerangeRight: Int = 0,
@ProtoNumber(18) @JvmField val area: String = ""
) : ProtoBuf
@Serializable
internal class NearbyEvent(
@ProtoId(1) @JvmField val eventtype: Int = 0,
@ProtoId(2) @JvmField val msgRankevent: RankEvent? = null,
@ProtoId(3) @JvmField val eventUin: Long = 0L,
@ProtoId(4) @JvmField val eventTinyid: Long = 0L
@ProtoNumber(1) @JvmField val eventtype: Int = 0,
@ProtoNumber(2) @JvmField val msgRankevent: RankEvent? = null,
@ProtoNumber(3) @JvmField val eventUin: Long = 0L,
@ProtoNumber(4) @JvmField val eventTinyid: Long = 0L
) : ProtoBuf
@Serializable
internal class Feed(
@ProtoId(1) @JvmField val msgUserInfo: PublisherInfo? = null,
@ProtoId(2) @JvmField val msgFeedInfo: FeedInfo? = null,
@ProtoId(3) @JvmField val ownerFlag: Int = 0
@ProtoNumber(1) @JvmField val msgUserInfo: PublisherInfo? = null,
@ProtoNumber(2) @JvmField val msgFeedInfo: FeedInfo? = null,
@ProtoNumber(3) @JvmField val ownerFlag: Int = 0
) : ProtoBuf
@Serializable
internal class ActivityInfo(
@ProtoId(2) @JvmField val name: String = "",
@ProtoId(3) @JvmField val cover: String = "",
@ProtoId(4) @JvmField val url: String = "",
@ProtoId(5) @JvmField val startTime: Int = 0,
@ProtoId(6) @JvmField val endTime: Int = 0,
@ProtoId(7) @JvmField val locName: String = "",
@ProtoId(8) @JvmField val enroll: Long = 0L,
@ProtoId(9) @JvmField val createUin: Long = 0L,
@ProtoId(10) @JvmField val createTime: Int = 0,
@ProtoId(11) @JvmField val organizerInfo: OrganizerInfo = OrganizerInfo(),
@ProtoId(12) @JvmField val flag: Long? = null
@ProtoNumber(2) @JvmField val name: String = "",
@ProtoNumber(3) @JvmField val cover: String = "",
@ProtoNumber(4) @JvmField val url: String = "",
@ProtoNumber(5) @JvmField val startTime: Int = 0,
@ProtoNumber(6) @JvmField val endTime: Int = 0,
@ProtoNumber(7) @JvmField val locName: String = "",
@ProtoNumber(8) @JvmField val enroll: Long = 0L,
@ProtoNumber(9) @JvmField val createUin: Long = 0L,
@ProtoNumber(10) @JvmField val createTime: Int = 0,
@ProtoNumber(11) @JvmField val organizerInfo: OrganizerInfo = OrganizerInfo(),
@ProtoNumber(12) @JvmField val flag: Long? = null
) : ProtoBuf
@Serializable
internal class HotEntry(
@ProtoId(1) @JvmField val openFlag: Int = 0,
@ProtoId(2) @JvmField val restTime: Int = 0,
@ProtoId(3) @JvmField val foreword: String = "",
@ProtoId(4) @JvmField val backgroundSrc: String = ""
@ProtoNumber(1) @JvmField val openFlag: Int = 0,
@ProtoNumber(2) @JvmField val restTime: Int = 0,
@ProtoNumber(3) @JvmField val foreword: String = "",
@ProtoNumber(4) @JvmField val backgroundSrc: String = ""
) : ProtoBuf
@Serializable
internal class UserFeed(
@ProtoId(1) @JvmField val msgUserInfo: PublisherInfo? = null,
@ProtoId(2) @JvmField val msgFeedInfo: FeedInfo? = null,
@ProtoId(3) @JvmField val ownerFlag: Int = 0,
@ProtoId(4) @JvmField val msgActivityInfo: ActivityInfo? = null
@ProtoNumber(1) @JvmField val msgUserInfo: PublisherInfo? = null,
@ProtoNumber(2) @JvmField val msgFeedInfo: FeedInfo? = null,
@ProtoNumber(3) @JvmField val ownerFlag: Int = 0,
@ProtoNumber(4) @JvmField val msgActivityInfo: ActivityInfo? = null
) : ProtoBuf
@Serializable
internal class Elem(
@ProtoId(1) @JvmField val content: String = "",
@ProtoId(2) @JvmField val msgFaceInfo: Face? = null
@ProtoNumber(1) @JvmField val content: String = "",
@ProtoNumber(2) @JvmField val msgFaceInfo: Face? = null
) : ProtoBuf
@Serializable
internal class HotFreshFeedList(
@ProtoId(1) @JvmField val msgFeeds: List<HotUserFeed>? = null,
@ProtoId(2) @JvmField val updateTime: Int = 0
@ProtoNumber(1) @JvmField val msgFeeds: List<HotUserFeed>? = null,
@ProtoNumber(2) @JvmField val updateTime: Int = 0
) : ProtoBuf
@Serializable
internal class RptInterestTag(
@ProtoId(1) @JvmField val interestTags: List<InterestTag>? = null
@ProtoNumber(1) @JvmField val interestTags: List<InterestTag>? = null
) : ProtoBuf
@Serializable
internal class AddressInfo(
@ProtoId(1) @JvmField val companyZone: String = "",
@ProtoId(2) @JvmField val companyName: String = "",
@ProtoId(3) @JvmField val companyAddr: String = "",
@ProtoId(4) @JvmField val companyPicUrl: String = "",
@ProtoId(5) @JvmField val companyUrl: String = "",
@ProtoId(6) @JvmField val msgCompanyId: ShopID? = null
@ProtoNumber(1) @JvmField val companyZone: String = "",
@ProtoNumber(2) @JvmField val companyName: String = "",
@ProtoNumber(3) @JvmField val companyAddr: String = "",
@ProtoNumber(4) @JvmField val companyPicUrl: String = "",
@ProtoNumber(5) @JvmField val companyUrl: String = "",
@ProtoNumber(6) @JvmField val msgCompanyId: ShopID? = null
) : ProtoBuf
@Serializable
internal class PublisherInfo(
@ProtoId(1) @JvmField val tinyid: Long = 0L,
@ProtoId(2) @JvmField val nickname: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val age: Int = 0,
@ProtoId(4) @JvmField val gender: Int = 0,
@ProtoId(5) @JvmField val constellation: String = "",
@ProtoId(6) @JvmField val profession: Int = 0,
@ProtoId(7) @JvmField val distance: String = "",
@ProtoId(8) @JvmField val marriage: Int = 0,
@ProtoId(9) @JvmField val vipinfo: String = "",
@ProtoId(10) @JvmField val recommend: Int = 0,
@ProtoId(11) @JvmField val godflag: Int = 0,
@ProtoId(12) @JvmField val chatflag: Int = 0,
@ProtoId(13) @JvmField val chatupCount: Int = 0,
@ProtoId(14) @JvmField val charm: Int = 0,
@ProtoId(15) @JvmField val charmLevel: Int = 0,
@ProtoId(16) @JvmField val pubNumber: Int = 0,
@ProtoId(17) @JvmField val msgCommonLabel: CommonLabel? = null,
@ProtoId(18) @JvmField val recentVistorTime: Int = 0,
@ProtoId(19) @JvmField val strangerDeclare: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(20) @JvmField val friendUin: Long = 0L,
@ProtoId(21) @JvmField val historyFlag: Int = 0,
@ProtoId(22) @JvmField val followflag: Long = 0L
@ProtoNumber(1) @JvmField val tinyid: Long = 0L,
@ProtoNumber(2) @JvmField val nickname: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val age: Int = 0,
@ProtoNumber(4) @JvmField val gender: Int = 0,
@ProtoNumber(5) @JvmField val constellation: String = "",
@ProtoNumber(6) @JvmField val profession: Int = 0,
@ProtoNumber(7) @JvmField val distance: String = "",
@ProtoNumber(8) @JvmField val marriage: Int = 0,
@ProtoNumber(9) @JvmField val vipinfo: String = "",
@ProtoNumber(10) @JvmField val recommend: Int = 0,
@ProtoNumber(11) @JvmField val godflag: Int = 0,
@ProtoNumber(12) @JvmField val chatflag: Int = 0,
@ProtoNumber(13) @JvmField val chatupCount: Int = 0,
@ProtoNumber(14) @JvmField val charm: Int = 0,
@ProtoNumber(15) @JvmField val charmLevel: Int = 0,
@ProtoNumber(16) @JvmField val pubNumber: Int = 0,
@ProtoNumber(17) @JvmField val msgCommonLabel: CommonLabel? = null,
@ProtoNumber(18) @JvmField val recentVistorTime: Int = 0,
@ProtoNumber(19) @JvmField val strangerDeclare: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(20) @JvmField val friendUin: Long = 0L,
@ProtoNumber(21) @JvmField val historyFlag: Int = 0,
@ProtoNumber(22) @JvmField val followflag: Long = 0L
) : ProtoBuf
@Serializable
internal class HotUserFeed(
@ProtoId(1) @JvmField val feedId: String = "",
@ProtoId(2) @JvmField val praiseCount: Int = 0,
@ProtoId(3) @JvmField val publishUid: Long = 0L,
@ProtoId(4) @JvmField val publishTime: Int = 0
@ProtoNumber(1) @JvmField val feedId: String = "",
@ProtoNumber(2) @JvmField val praiseCount: Int = 0,
@ProtoNumber(3) @JvmField val publishUid: Long = 0L,
@ProtoNumber(4) @JvmField val publishTime: Int = 0
) : ProtoBuf
@Serializable
internal class FreshFeedInfo(
@ProtoId(1) @JvmField val uin: Long = 0L,
@ProtoId(2) @JvmField val time: Int = 0,
@ProtoId(3) @JvmField val feedId: String = "",
@ProtoId(4) @JvmField val feedType: Long = 0L
@ProtoNumber(1) @JvmField val uin: Long = 0L,
@ProtoNumber(2) @JvmField val time: Int = 0,
@ProtoNumber(3) @JvmField val feedId: String = "",
@ProtoNumber(4) @JvmField val feedType: Long = 0L
) : ProtoBuf
@Serializable
internal class CommonLabel(
@ProtoId(1) @JvmField val lableId: Int = 0,
@ProtoId(2) @JvmField val lableMsgPre: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val lableMsgLast: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(4) @JvmField val interstName: List<ByteArray>? = null,
@ProtoId(5) @JvmField val interstType: List<Int>? = null
@ProtoNumber(1) @JvmField val lableId: Int = 0,
@ProtoNumber(2) @JvmField val lableMsgPre: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val lableMsgLast: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(4) @JvmField val interstName: List<ByteArray>? = null,
@ProtoNumber(5) @JvmField val interstType: List<Int>? = null
) : ProtoBuf
@Serializable
internal class Face(
@ProtoId(1) @JvmField val index: Int = 0
@ProtoNumber(1) @JvmField val index: Int = 0
) : ProtoBuf
@Serializable
internal class StrangerInfo(
@ProtoId(1) @JvmField val tinyid: Long = 0L,
@ProtoId(2) @JvmField val nickname: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val age: Int = 0,
@ProtoId(4) @JvmField val gender: Int = 0,
@ProtoId(5) @JvmField val dating: Int = 0,
@ProtoId(6) @JvmField val listIdx: Int = 0,
@ProtoId(7) @JvmField val constellation: String = "",
@ProtoId(8) @JvmField val profession: Int = 0,
@ProtoId(9) @JvmField val marriage: Int = 0,
@ProtoId(10) @JvmField val vipinfo: String = "",
@ProtoId(11) @JvmField val recommend: Int = 0,
@ProtoId(12) @JvmField val godflag: Int = 0,
@ProtoId(13) @JvmField val charm: Int = 0,
@ProtoId(14) @JvmField val charmLevel: Int = 0,
@ProtoId(15) @JvmField val uin: Long = 0L
@ProtoNumber(1) @JvmField val tinyid: Long = 0L,
@ProtoNumber(2) @JvmField val nickname: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val age: Int = 0,
@ProtoNumber(4) @JvmField val gender: Int = 0,
@ProtoNumber(5) @JvmField val dating: Int = 0,
@ProtoNumber(6) @JvmField val listIdx: Int = 0,
@ProtoNumber(7) @JvmField val constellation: String = "",
@ProtoNumber(8) @JvmField val profession: Int = 0,
@ProtoNumber(9) @JvmField val marriage: Int = 0,
@ProtoNumber(10) @JvmField val vipinfo: String = "",
@ProtoNumber(11) @JvmField val recommend: Int = 0,
@ProtoNumber(12) @JvmField val godflag: Int = 0,
@ProtoNumber(13) @JvmField val charm: Int = 0,
@ProtoNumber(14) @JvmField val charmLevel: Int = 0,
@ProtoNumber(15) @JvmField val uin: Long = 0L
) : ProtoBuf
@Serializable
internal class HotTopic(
@ProtoId(1) @JvmField val id: Long = 0L,
@ProtoId(2) @JvmField val title: String = "",
@ProtoId(3) @JvmField val topicType: Long = 0L,
@ProtoId(4) @JvmField val total: Long = 0L,
@ProtoId(5) @JvmField val times: Long = 0L,
@ProtoId(6) @JvmField val historyTimes: Long = 0L,
@ProtoId(7) @JvmField val bgUrl: String = "",
@ProtoId(8) @JvmField val url: String = "",
@ProtoId(9) @JvmField val extraInfo: String = ""
@ProtoNumber(1) @JvmField val id: Long = 0L,
@ProtoNumber(2) @JvmField val title: String = "",
@ProtoNumber(3) @JvmField val topicType: Long = 0L,
@ProtoNumber(4) @JvmField val total: Long = 0L,
@ProtoNumber(5) @JvmField val times: Long = 0L,
@ProtoNumber(6) @JvmField val historyTimes: Long = 0L,
@ProtoNumber(7) @JvmField val bgUrl: String = "",
@ProtoNumber(8) @JvmField val url: String = "",
@ProtoNumber(9) @JvmField val extraInfo: String = ""
) : ProtoBuf
@Serializable
internal class DateEvent(
@ProtoId(1) @JvmField val eventId: Long = 0L,
@ProtoId(2) @JvmField val time: Int = 0,
@ProtoId(3) @JvmField val type: Int = 0,
@ProtoId(4) @JvmField val msgUserInfo: StrangerInfo? = null,
@ProtoId(5) @JvmField val msgDateInfo: AppointInfo? = null,
@ProtoId(6) @JvmField val attendIdx: Int = 0,
@ProtoId(7) @JvmField val eventTips: String = "",
@ProtoId(8) @JvmField val msgComment: DateComment? = null,
@ProtoId(9) @JvmField val cancelEventId: Long = 0L
@ProtoNumber(1) @JvmField val eventId: Long = 0L,
@ProtoNumber(2) @JvmField val time: Int = 0,
@ProtoNumber(3) @JvmField val type: Int = 0,
@ProtoNumber(4) @JvmField val msgUserInfo: StrangerInfo? = null,
@ProtoNumber(5) @JvmField val msgDateInfo: AppointInfo? = null,
@ProtoNumber(6) @JvmField val attendIdx: Int = 0,
@ProtoNumber(7) @JvmField val eventTips: String = "",
@ProtoNumber(8) @JvmField val msgComment: DateComment? = null,
@ProtoNumber(9) @JvmField val cancelEventId: Long = 0L
) : ProtoBuf
@Serializable
internal class AppointInfo(
@ProtoId(1) @JvmField val msgAppointId: AppointID? = null,
@ProtoId(2) @JvmField val msgAppointment: AppointContent? = null,
@ProtoId(3) @JvmField val appointStatus: Int = 0,
@ProtoId(4) @JvmField val joinWording: String = "",
@ProtoId(5) @JvmField val viewWording: String = "",
@ProtoId(6) @JvmField val unreadCount: Int = 0,
@ProtoId(7) @JvmField val owner: Int = 0,
@ProtoId(8) @JvmField val join: Int = 0,
@ProtoId(9) @JvmField val view: Int = 0,
@ProtoId(10) @JvmField val commentWording: String = "",
@ProtoId(11) @JvmField val commentNum: Int = 0,
@ProtoId(12) @JvmField val attendStatus: Int = 0,
@ProtoId(13) @JvmField val msgAppointmentEx: AppointInfoEx? = null
@ProtoNumber(1) @JvmField val msgAppointId: AppointID? = null,
@ProtoNumber(2) @JvmField val msgAppointment: AppointContent? = null,
@ProtoNumber(3) @JvmField val appointStatus: Int = 0,
@ProtoNumber(4) @JvmField val joinWording: String = "",
@ProtoNumber(5) @JvmField val viewWording: String = "",
@ProtoNumber(6) @JvmField val unreadCount: Int = 0,
@ProtoNumber(7) @JvmField val owner: Int = 0,
@ProtoNumber(8) @JvmField val join: Int = 0,
@ProtoNumber(9) @JvmField val view: Int = 0,
@ProtoNumber(10) @JvmField val commentWording: String = "",
@ProtoNumber(11) @JvmField val commentNum: Int = 0,
@ProtoNumber(12) @JvmField val attendStatus: Int = 0,
@ProtoNumber(13) @JvmField val msgAppointmentEx: AppointInfoEx? = null
) : ProtoBuf
@Serializable
internal class UserInfo(
@ProtoId(1) @JvmField val uin: Long = 0L,
@ProtoId(2) @JvmField val nickname: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val age: Int = 0,
@ProtoId(4) @JvmField val gender: Int = 0,
@ProtoId(5) @JvmField val avatar: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val uin: Long = 0L,
@ProtoNumber(2) @JvmField val nickname: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val age: Int = 0,
@ProtoNumber(4) @JvmField val gender: Int = 0,
@ProtoNumber(5) @JvmField val avatar: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class ReplyInfo(
@ProtoId(1) @JvmField val commentId: String = "",
@ProtoId(2) @JvmField val msgStrangerInfo: StrangerInfo? = null
@ProtoNumber(1) @JvmField val commentId: String = "",
@ProtoNumber(2) @JvmField val msgStrangerInfo: StrangerInfo? = null
) : ProtoBuf
}

View File

@ -3,7 +3,7 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.proto
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import kotlinx.serialization.protobuf.ProtoNumber
import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf
import kotlin.jvm.JvmField
@ -12,40 +12,40 @@ import kotlin.jvm.JvmField
internal class Vec0xd50 : ProtoBuf {
@Serializable
internal class ExtSnsFrdData(
@ProtoId(1) @JvmField val frdUin: Long = 0L,
@ProtoId(91001) @JvmField val musicSwitch: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(101001) @JvmField val mutualmarkAlienation: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(141001) @JvmField val mutualmarkScore: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(151001) @JvmField val ksingSwitch: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(181001) @JvmField val lbsShare: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val frdUin: Long = 0L,
@ProtoNumber(91001) @JvmField val musicSwitch: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(101001) @JvmField val mutualmarkAlienation: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(141001) @JvmField val mutualmarkScore: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(151001) @JvmField val ksingSwitch: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(181001) @JvmField val lbsShare: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class RspBody(
@ProtoId(1) @JvmField val msgUpdateData: List<ExtSnsFrdData>? = null,
@ProtoId(11) @JvmField val over: Int = 0,
@ProtoId(12) @JvmField val nextStart: Int = 0,
@ProtoId(13) @JvmField val uint64UnfinishedUins: List<Long>? = null
@ProtoNumber(1) @JvmField val msgUpdateData: List<ExtSnsFrdData>? = null,
@ProtoNumber(11) @JvmField val over: Int = 0,
@ProtoNumber(12) @JvmField val nextStart: Int = 0,
@ProtoNumber(13) @JvmField val uint64UnfinishedUins: List<Long>? = null
) : ProtoBuf
@Serializable
internal class ReqBody(
@ProtoId(1) @JvmField val appid: Long = 0L,
@ProtoId(2) @JvmField val maxPkgSize: Int = 0,
@ProtoId(3) @JvmField val startTime: Int = 0,
@ProtoId(4) @JvmField val startIndex: Int = 0,
@ProtoId(5) @JvmField val reqNum: Int = 0,
@ProtoId(6) @JvmField val uinList: List<Long>? = null,
@ProtoId(91001) @JvmField val reqMusicSwitch: Int = 0,
@ProtoId(101001) @JvmField val reqMutualmarkAlienation: Int = 0,
@ProtoId(141001) @JvmField val reqMutualmarkScore: Int = 0,
@ProtoId(151001) @JvmField val reqKsingSwitch: Int = 0,
@ProtoId(181001) @JvmField val reqMutualmarkLbsshare: Int = 0
@ProtoNumber(1) @JvmField val appid: Long = 0L,
@ProtoNumber(2) @JvmField val maxPkgSize: Int = 0,
@ProtoNumber(3) @JvmField val startTime: Int = 0,
@ProtoNumber(4) @JvmField val startIndex: Int = 0,
@ProtoNumber(5) @JvmField val reqNum: Int = 0,
@ProtoNumber(6) @JvmField val uinList: List<Long>? = null,
@ProtoNumber(91001) @JvmField val reqMusicSwitch: Int = 0,
@ProtoNumber(101001) @JvmField val reqMutualmarkAlienation: Int = 0,
@ProtoNumber(141001) @JvmField val reqMutualmarkScore: Int = 0,
@ProtoNumber(151001) @JvmField val reqKsingSwitch: Int = 0,
@ProtoNumber(181001) @JvmField val reqMutualmarkLbsshare: Int = 0
) : ProtoBuf
@Serializable
internal class KSingRelationInfo(
@ProtoId(1) @JvmField val flag: Int = 0
@ProtoNumber(1) @JvmField val flag: Int = 0
) : ProtoBuf
}
@ -53,21 +53,21 @@ internal class Vec0xd50 : ProtoBuf {
internal class Vec0xd6b : ProtoBuf {
@Serializable
internal class ReqBody(
@ProtoId(1) @JvmField val maxPkgSize: Int = 0,
@ProtoId(2) @JvmField val startTime: Int = 0,
@ProtoId(11) @JvmField val uinList: List<Long>? = null
@ProtoNumber(1) @JvmField val maxPkgSize: Int = 0,
@ProtoNumber(2) @JvmField val startTime: Int = 0,
@ProtoNumber(11) @JvmField val uinList: List<Long>? = null
) : ProtoBuf
@Serializable
internal class RspBody(
@ProtoId(11) @JvmField val msgMutualmarkData: List<MutualMarkData>? = null,
@ProtoId(12) @JvmField val uint64UnfinishedUins: List<Long>? = null
@ProtoNumber(11) @JvmField val msgMutualmarkData: List<MutualMarkData>? = null,
@ProtoNumber(12) @JvmField val uint64UnfinishedUins: List<Long>? = null
) : ProtoBuf
@Serializable
internal class MutualMarkData(
@ProtoId(1) @JvmField val frdUin: Long = 0L,
@ProtoId(2) @JvmField val result: Int = 0
@ProtoNumber(1) @JvmField val frdUin: Long = 0L,
@ProtoNumber(2) @JvmField val result: Int = 0
// @SerialId(11) @JvmField val mutualmarkInfo: List<net.mamoe.mirai.qqandroid.network.protocol.data.proto.Mutualmark.MutualMark>? = null
) : ProtoBuf
}

View File

@ -1,7 +1,7 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.proto
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import kotlinx.serialization.protobuf.ProtoNumber
import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf
import kotlin.jvm.JvmField
@ -10,51 +10,51 @@ import kotlin.jvm.JvmField
internal class GroupLabel : ProtoBuf {
@Serializable
internal class Label(
@ProtoId(1) @JvmField val name: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(2) @JvmField val enumType: Int /* enum */ = 1,
@ProtoId(3) @JvmField val textColor: Color? = null,
@ProtoId(4) @JvmField val edgingColor: Color? = null,
@ProtoId(5) @JvmField val labelAttr: Int = 0,
@ProtoId(6) @JvmField val labelType: Int = 0
@ProtoNumber(1) @JvmField val name: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) @JvmField val enumType: Int /* enum */ = 1,
@ProtoNumber(3) @JvmField val textColor: Color? = null,
@ProtoNumber(4) @JvmField val edgingColor: Color? = null,
@ProtoNumber(5) @JvmField val labelAttr: Int = 0,
@ProtoNumber(6) @JvmField val labelType: Int = 0
) : ProtoBuf
@Serializable
internal class RspBody(
@ProtoId(1) @JvmField val error: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(2) @JvmField val groupInfo: List<GroupInfo>? = null
@ProtoNumber(1) @JvmField val error: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) @JvmField val groupInfo: List<GroupInfo>? = null
) : ProtoBuf
@Serializable
internal class SourceId(
@ProtoId(1) @JvmField val sourceId: Int = 0
@ProtoNumber(1) @JvmField val sourceId: Int = 0
) : ProtoBuf
@Serializable
internal class GroupInfo(
@ProtoId(1) @JvmField val int32Result: Int = 0,
@ProtoId(2) @JvmField val groupCode: Long = 0L,
@ProtoId(3) @JvmField val groupLabel: List<Label>? = null
@ProtoNumber(1) @JvmField val int32Result: Int = 0,
@ProtoNumber(2) @JvmField val groupCode: Long = 0L,
@ProtoNumber(3) @JvmField val groupLabel: List<Label>? = null
) : ProtoBuf
@Serializable
internal class Color(
@ProtoId(1) @JvmField val r: Int = 0,
@ProtoId(2) @JvmField val g: Int = 0,
@ProtoId(3) @JvmField val b: Int = 0
@ProtoNumber(1) @JvmField val r: Int = 0,
@ProtoNumber(2) @JvmField val g: Int = 0,
@ProtoNumber(3) @JvmField val b: Int = 0
) : ProtoBuf
@Serializable
internal class ReqBody(
@ProtoId(1) @JvmField val sourceId: SourceId? = null,
@ProtoId(2) @JvmField val uinInfo: UinInfo? = null,
@ProtoId(3) @JvmField val numberLabel: Int = 5,
@ProtoId(4) @JvmField val groupCode: List<Long>? = null,
@ProtoId(5) @JvmField val labelStyle: Int = 0
@ProtoNumber(1) @JvmField val sourceId: SourceId? = null,
@ProtoNumber(2) @JvmField val uinInfo: UinInfo? = null,
@ProtoNumber(3) @JvmField val numberLabel: Int = 5,
@ProtoNumber(4) @JvmField val groupCode: List<Long>? = null,
@ProtoNumber(5) @JvmField val labelStyle: Int = 0
) : ProtoBuf
@Serializable
internal class UinInfo(
@ProtoId(1) @JvmField val int64Longitude: Long = 0L,
@ProtoId(2) @JvmField val int64Latitude: Long = 0L
@ProtoNumber(1) @JvmField val int64Longitude: Long = 0L,
@ProtoNumber(2) @JvmField val int64Latitude: Long = 0L
) : ProtoBuf
}

View File

@ -1,8 +1,8 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.proto
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import kotlinx.serialization.protobuf.ProtoNumberType
import kotlinx.serialization.protobuf.ProtoIntegerType
import kotlinx.serialization.protobuf.ProtoNumber
import kotlinx.serialization.protobuf.ProtoType
import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf
@ -12,90 +12,90 @@ import kotlin.jvm.JvmField
internal class BdhExtinfo : ProtoBuf {
@Serializable
internal class CommFileExtReq(
@ProtoId(1) @JvmField val actionType: Int = 0,
@ProtoId(2) @JvmField val uuid: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val actionType: Int = 0,
@ProtoNumber(2) @JvmField val uuid: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class CommFileExtRsp(
@ProtoId(1) @JvmField val int32Retcode: Int = 0,
@ProtoId(2) @JvmField val downloadUrl: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val int32Retcode: Int = 0,
@ProtoNumber(2) @JvmField val downloadUrl: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class PicInfo(
@ProtoId(1) @JvmField val idx: Int = 0,
@ProtoId(2) @JvmField val size: Int = 0,
@ProtoId(3) @JvmField val binMd5: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(4) @JvmField val type: Int = 0
@ProtoNumber(1) @JvmField val idx: Int = 0,
@ProtoNumber(2) @JvmField val size: Int = 0,
@ProtoNumber(3) @JvmField val binMd5: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(4) @JvmField val type: Int = 0
) : ProtoBuf
@Serializable
internal class QQVoiceExtReq(
@ProtoId(1) @JvmField val qid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(2) @JvmField val fmt: Int = 0,
@ProtoId(3) @JvmField val rate: Int = 0,
@ProtoId(4) @JvmField val bits: Int = 0,
@ProtoId(5) @JvmField val channel: Int = 0,
@ProtoId(6) @JvmField val pinyin: Int = 0
@ProtoNumber(1) @JvmField val qid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) @JvmField val fmt: Int = 0,
@ProtoNumber(3) @JvmField val rate: Int = 0,
@ProtoNumber(4) @JvmField val bits: Int = 0,
@ProtoNumber(5) @JvmField val channel: Int = 0,
@ProtoNumber(6) @JvmField val pinyin: Int = 0
) : ProtoBuf
@Serializable
internal class QQVoiceExtRsp(
@ProtoId(1) @JvmField val qid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(2) @JvmField val int32Retcode: Int = 0,
@ProtoId(3) @JvmField val msgResult: List<QQVoiceResult>? = null
@ProtoNumber(1) @JvmField val qid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) @JvmField val int32Retcode: Int = 0,
@ProtoNumber(3) @JvmField val msgResult: List<QQVoiceResult>? = null
) : ProtoBuf
@Serializable
internal class QQVoiceResult(
@ProtoId(1) @JvmField val text: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(2) @JvmField val pinyin: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val source: Int = 0
@ProtoNumber(1) @JvmField val text: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) @JvmField val pinyin: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val source: Int = 0
) : ProtoBuf
@Serializable
internal class ShortVideoReqExtInfo(
@ProtoId(1) @JvmField val cmd: Int = 0,
@ProtoId(2) @JvmField val sessionId: Long = 0L,
@ProtoId(3) @JvmField val msgThumbinfo: PicInfo? = null,
@ProtoId(4) @JvmField val msgVideoinfo: VideoInfo? = null,
@ProtoId(5) @JvmField val msgShortvideoSureReq: ShortVideoSureReqInfo? = null,
@ProtoId(6) @JvmField val boolIsMergeCmdBeforeData: Boolean = false
@ProtoNumber(1) @JvmField val cmd: Int = 0,
@ProtoNumber(2) @JvmField val sessionId: Long = 0L,
@ProtoNumber(3) @JvmField val msgThumbinfo: PicInfo? = null,
@ProtoNumber(4) @JvmField val msgVideoinfo: VideoInfo? = null,
@ProtoNumber(5) @JvmField val msgShortvideoSureReq: ShortVideoSureReqInfo? = null,
@ProtoNumber(6) @JvmField val boolIsMergeCmdBeforeData: Boolean = false
) : ProtoBuf
@Serializable
internal class ShortVideoRspExtInfo(
@ProtoId(1) @JvmField val cmd: Int = 0,
@ProtoId(2) @JvmField val sessionId: Long = 0L,
@ProtoId(3) @JvmField val int32Retcode: Int = 0,
@ProtoId(4) @JvmField val errinfo: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(5) @JvmField val msgThumbinfo: PicInfo? = null,
@ProtoId(6) @JvmField val msgVideoinfo: VideoInfo? = null,
@ProtoId(7) @JvmField val msgShortvideoSureRsp: ShortVideoSureRspInfo? = null,
@ProtoId(8) @JvmField val retryFlag: Int = 0
@ProtoNumber(1) @JvmField val cmd: Int = 0,
@ProtoNumber(2) @JvmField val sessionId: Long = 0L,
@ProtoNumber(3) @JvmField val int32Retcode: Int = 0,
@ProtoNumber(4) @JvmField val errinfo: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(5) @JvmField val msgThumbinfo: PicInfo? = null,
@ProtoNumber(6) @JvmField val msgVideoinfo: VideoInfo? = null,
@ProtoNumber(7) @JvmField val msgShortvideoSureRsp: ShortVideoSureRspInfo? = null,
@ProtoNumber(8) @JvmField val retryFlag: Int = 0
) : ProtoBuf
@Serializable
internal class ShortVideoSureReqInfo(
@ProtoId(1) @JvmField val fromuin: Long = 0L,
@ProtoId(2) @JvmField val chatType: Int = 0,
@ProtoId(3) @JvmField val touin: Long = 0L,
@ProtoId(4) @JvmField val groupCode: Long = 0L,
@ProtoId(5) @JvmField val clientType: Int = 0,
@ProtoId(6) @JvmField val msgThumbinfo: PicInfo? = null,
@ProtoId(7) @JvmField val msgMergeVideoinfo: List<VideoInfo>? = null,
@ProtoId(8) @JvmField val msgDropVideoinfo: List<VideoInfo>? = null,
@ProtoId(9) @JvmField val businessType: Int = 0,
@ProtoId(10) @JvmField val subBusinessType: Int = 0
@ProtoNumber(1) @JvmField val fromuin: Long = 0L,
@ProtoNumber(2) @JvmField val chatType: Int = 0,
@ProtoNumber(3) @JvmField val touin: Long = 0L,
@ProtoNumber(4) @JvmField val groupCode: Long = 0L,
@ProtoNumber(5) @JvmField val clientType: Int = 0,
@ProtoNumber(6) @JvmField val msgThumbinfo: PicInfo? = null,
@ProtoNumber(7) @JvmField val msgMergeVideoinfo: List<VideoInfo>? = null,
@ProtoNumber(8) @JvmField val msgDropVideoinfo: List<VideoInfo>? = null,
@ProtoNumber(9) @JvmField val businessType: Int = 0,
@ProtoNumber(10) @JvmField val subBusinessType: Int = 0
) : ProtoBuf
@Serializable
internal class ShortVideoSureRspInfo(
@ProtoId(1) @JvmField val fileid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(2) @JvmField val ukey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val msgVideoinfo: VideoInfo? = null,
@ProtoId(4) @JvmField val mergeCost: Int = 0
@ProtoNumber(1) @JvmField val fileid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) @JvmField val ukey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val msgVideoinfo: VideoInfo? = null,
@ProtoNumber(4) @JvmField val mergeCost: Int = 0
) : ProtoBuf
@Serializable
@ -103,31 +103,31 @@ internal class BdhExtinfo : ProtoBuf {
@Serializable
internal class StoryVideoExtRsp(
@ProtoId(1) @JvmField val int32Retcode: Int = 0,
@ProtoId(2) @JvmField val msg: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val cdnUrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(4) @JvmField val fileKey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(5) @JvmField val fileId: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val int32Retcode: Int = 0,
@ProtoNumber(2) @JvmField val msg: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val cdnUrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(4) @JvmField val fileKey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(5) @JvmField val fileId: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class UploadPicExtInfo(
@ProtoId(1) @JvmField val fileResid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(2) @JvmField val downloadUrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val thumbDownloadUrl: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val fileResid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) @JvmField val downloadUrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val thumbDownloadUrl: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class VideoInfo(
@ProtoId(1) @JvmField val idx: Int = 0,
@ProtoId(2) @JvmField val size: Int = 0,
@ProtoId(3) @JvmField val binMd5: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(4) @JvmField val format: Int = 0,
@ProtoId(5) @JvmField val resLen: Int = 0,
@ProtoId(6) @JvmField val resWidth: Int = 0,
@ProtoId(7) @JvmField val time: Int = 0,
@ProtoId(8) @JvmField val starttime: Long = 0L,
@ProtoId(9) @JvmField val isAudio: Int = 0
@ProtoNumber(1) @JvmField val idx: Int = 0,
@ProtoNumber(2) @JvmField val size: Int = 0,
@ProtoNumber(3) @JvmField val binMd5: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(4) @JvmField val format: Int = 0,
@ProtoNumber(5) @JvmField val resLen: Int = 0,
@ProtoNumber(6) @JvmField val resWidth: Int = 0,
@ProtoNumber(7) @JvmField val time: Int = 0,
@ProtoNumber(8) @JvmField val starttime: Long = 0L,
@ProtoNumber(9) @JvmField val isAudio: Int = 0
) : ProtoBuf
}
@ -135,142 +135,142 @@ internal class BdhExtinfo : ProtoBuf {
internal class CSDataHighwayHead : ProtoBuf {
@Serializable
internal class C2CCommonExtendinfo(
@ProtoId(1) @JvmField val infoId: Int = 0,
@ProtoId(2) @JvmField val msgFilterExtendinfo: FilterExtendinfo? = null
@ProtoNumber(1) @JvmField val infoId: Int = 0,
@ProtoNumber(2) @JvmField val msgFilterExtendinfo: FilterExtendinfo? = null
) : ProtoBuf
@Serializable
internal class DataHighwayHead(
@ProtoId(1) @JvmField val version: Int = 0,
@ProtoId(2) @JvmField val uin: String = "", // yes
@ProtoId(3) @JvmField val command: String = "",
@ProtoId(4) @JvmField val seq: Int = 0,
@ProtoId(5) @JvmField val retryTimes: Int = 0,
@ProtoId(6) @JvmField val appid: Int = 0,
@ProtoId(7) @JvmField val dataflag: Int = 0,
@ProtoId(8) @JvmField val commandId: Int = 0,
@ProtoId(9) @JvmField val buildVer: String = "",
@ProtoId(10) @JvmField val localeId: Int = 0
@ProtoNumber(1) @JvmField val version: Int = 0,
@ProtoNumber(2) @JvmField val uin: String = "", // yes
@ProtoNumber(3) @JvmField val command: String = "",
@ProtoNumber(4) @JvmField val seq: Int = 0,
@ProtoNumber(5) @JvmField val retryTimes: Int = 0,
@ProtoNumber(6) @JvmField val appid: Int = 0,
@ProtoNumber(7) @JvmField val dataflag: Int = 0,
@ProtoNumber(8) @JvmField val commandId: Int = 0,
@ProtoNumber(9) @JvmField val buildVer: String = "",
@ProtoNumber(10) @JvmField val localeId: Int = 0
) : ProtoBuf
@Serializable
internal class DataHole(
@ProtoId(1) @JvmField val begin: Long = 0L,
@ProtoId(2) @JvmField val end: Long = 0L
@ProtoNumber(1) @JvmField val begin: Long = 0L,
@ProtoNumber(2) @JvmField val end: Long = 0L
) : ProtoBuf
@Serializable
internal class FilterExtendinfo(
@ProtoId(1) @JvmField val filterFlag: Int = 0,
@ProtoId(2) @JvmField val msgImageFilterRequest: ImageFilterRequest? = null
@ProtoNumber(1) @JvmField val filterFlag: Int = 0,
@ProtoNumber(2) @JvmField val msgImageFilterRequest: ImageFilterRequest? = null
) : ProtoBuf
@Serializable
internal class FilterStyle(
@ProtoId(1) @JvmField val styleId: Int = 0,
@ProtoId(2) @JvmField val styleName: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val styleId: Int = 0,
@ProtoNumber(2) @JvmField val styleName: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class ImageFilterRequest(
@ProtoId(1) @JvmField val sessionId: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(2) @JvmField val clientIp: Int = 0,
@ProtoId(3) @JvmField val uin: Long = 0L,
@ProtoId(4) @JvmField val style: FilterStyle? = null,
@ProtoId(5) @JvmField val width: Int = 0,
@ProtoId(6) @JvmField val height: Int = 0,
@ProtoId(7) @JvmField val imageData: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val sessionId: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) @JvmField val clientIp: Int = 0,
@ProtoNumber(3) @JvmField val uin: Long = 0L,
@ProtoNumber(4) @JvmField val style: FilterStyle? = null,
@ProtoNumber(5) @JvmField val width: Int = 0,
@ProtoNumber(6) @JvmField val height: Int = 0,
@ProtoNumber(7) @JvmField val imageData: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class ImageFilterResponse(
@ProtoId(1) @JvmField val retCode: Int = 0,
@ProtoId(2) @JvmField val imageData: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val costTime: Int = 0
@ProtoNumber(1) @JvmField val retCode: Int = 0,
@ProtoNumber(2) @JvmField val imageData: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val costTime: Int = 0
) : ProtoBuf
@Serializable
internal class LoginSigHead(
@ProtoId(1) @JvmField val loginsigType: Int = 0,
@ProtoId(2) @JvmField val loginsig: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val loginsigType: Int = 0,
@ProtoNumber(2) @JvmField val loginsig: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class NewServiceTicket(
@ProtoId(1) @JvmField val signature: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(2) @JvmField val ukey: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val signature: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) @JvmField val ukey: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class PicInfoExt(
@ProtoId(1) @JvmField val picWidth: Int = 0,
@ProtoId(2) @JvmField val picHeight: Int = 0,
@ProtoId(3) @JvmField val picFlag: Int = 0,
@ProtoId(4) @JvmField val busiType: Int = 0,
@ProtoId(5) @JvmField val srcTerm: Int = 0,
@ProtoId(6) @JvmField val platType: Int = 0,
@ProtoId(7) @JvmField val netType: Int = 0,
@ProtoId(8) @JvmField val imgType: Int = 0,
@ProtoId(9) @JvmField val appPicType: Int = 0
@ProtoNumber(1) @JvmField val picWidth: Int = 0,
@ProtoNumber(2) @JvmField val picHeight: Int = 0,
@ProtoNumber(3) @JvmField val picFlag: Int = 0,
@ProtoNumber(4) @JvmField val busiType: Int = 0,
@ProtoNumber(5) @JvmField val srcTerm: Int = 0,
@ProtoNumber(6) @JvmField val platType: Int = 0,
@ProtoNumber(7) @JvmField val netType: Int = 0,
@ProtoNumber(8) @JvmField val imgType: Int = 0,
@ProtoNumber(9) @JvmField val appPicType: Int = 0
) : ProtoBuf
@Serializable
internal class PicRspExtInfo(
@ProtoId(1) @JvmField val skey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(2) @JvmField val clientIp: Int = 0,
@ProtoId(3) @JvmField val upOffset: Long = 0L,
@ProtoId(4) @JvmField val blockSize: Long = 0L
@ProtoNumber(1) @JvmField val skey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) @JvmField val clientIp: Int = 0,
@ProtoNumber(3) @JvmField val upOffset: Long = 0L,
@ProtoNumber(4) @JvmField val blockSize: Long = 0L
) : ProtoBuf
@Serializable
internal class QueryHoleRsp(
@ProtoId(1) @JvmField val result: Int = 0,
@ProtoId(2) @JvmField val dataHole: List<DataHole>? = null,
@ProtoId(3) @JvmField val boolCompFlag: Boolean = false
@ProtoNumber(1) @JvmField val result: Int = 0,
@ProtoNumber(2) @JvmField val dataHole: List<DataHole>? = null,
@ProtoNumber(3) @JvmField val boolCompFlag: Boolean = false
) : ProtoBuf
@Serializable
internal class ReqDataHighwayHead(
@ProtoId(1) @JvmField val msgBasehead: DataHighwayHead? = null,
@ProtoId(2) @JvmField val msgSeghead: SegHead? = null,
@ProtoId(3) @JvmField val reqExtendinfo: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(4) @JvmField val timestamp: Long = 0L,
@ProtoId(5) @JvmField val msgLoginSigHead: LoginSigHead? = null
@ProtoNumber(1) @JvmField val msgBasehead: DataHighwayHead? = null,
@ProtoNumber(2) @JvmField val msgSeghead: SegHead? = null,
@ProtoNumber(3) @JvmField val reqExtendinfo: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(4) @JvmField val timestamp: Long = 0L,
@ProtoNumber(5) @JvmField val msgLoginSigHead: LoginSigHead? = null
) : ProtoBuf
@Serializable
internal class RspBody(
@ProtoId(1) @JvmField val msgQueryHoleRsp: QueryHoleRsp? = null
@ProtoNumber(1) @JvmField val msgQueryHoleRsp: QueryHoleRsp? = null
) : ProtoBuf
@Serializable
internal class RspDataHighwayHead(
@ProtoId(1) @JvmField val msgBasehead: DataHighwayHead? = null,
@ProtoId(2) @JvmField val msgSeghead: SegHead? = null,
@ProtoId(3) @JvmField val errorCode: Int = 0,
@ProtoId(4) @JvmField val allowRetry: Int = 0,
@ProtoId(5) @JvmField val cachecost: Int = 0,
@ProtoId(6) @JvmField val htcost: Int = 0,
@ProtoId(7) @JvmField val rspExtendinfo: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(8) @JvmField val timestamp: Long = 0L,
@ProtoId(9) @JvmField val range: Long = 0L,
@ProtoId(10) @JvmField val isReset: Int = 0
@ProtoNumber(1) @JvmField val msgBasehead: DataHighwayHead? = null,
@ProtoNumber(2) @JvmField val msgSeghead: SegHead? = null,
@ProtoNumber(3) @JvmField val errorCode: Int = 0,
@ProtoNumber(4) @JvmField val allowRetry: Int = 0,
@ProtoNumber(5) @JvmField val cachecost: Int = 0,
@ProtoNumber(6) @JvmField val htcost: Int = 0,
@ProtoNumber(7) @JvmField val rspExtendinfo: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(8) @JvmField val timestamp: Long = 0L,
@ProtoNumber(9) @JvmField val range: Long = 0L,
@ProtoNumber(10) @JvmField val isReset: Int = 0
) : ProtoBuf
@Serializable
internal class SegHead(
@ProtoId(1) @JvmField val serviceid: Int = 0,
@ProtoId(2) @JvmField val filesize: Long = 0L,
@ProtoId(3) @JvmField val dataoffset: Long = 0L,
@ProtoId(4) @JvmField val datalength: Int = 0,
@ProtoId(5) @JvmField val rtcode: Int = 0,
@ProtoId(6) @JvmField val serviceticket: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(7) @JvmField val flag: Int = 0,
@ProtoId(8) @JvmField val md5: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(9) @JvmField val fileMd5: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(10) @JvmField val cacheAddr: Int = 0,
@ProtoId(11) @JvmField val queryTimes: Int = 0,
@ProtoId(12) @JvmField val updateCacheip: Int = 0
@ProtoNumber(1) @JvmField val serviceid: Int = 0,
@ProtoNumber(2) @JvmField val filesize: Long = 0L,
@ProtoNumber(3) @JvmField val dataoffset: Long = 0L,
@ProtoNumber(4) @JvmField val datalength: Int = 0,
@ProtoNumber(5) @JvmField val rtcode: Int = 0,
@ProtoNumber(6) @JvmField val serviceticket: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(7) @JvmField val flag: Int = 0,
@ProtoNumber(8) @JvmField val md5: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(9) @JvmField val fileMd5: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(10) @JvmField val cacheAddr: Int = 0,
@ProtoNumber(11) @JvmField val queryTimes: Int = 0,
@ProtoNumber(12) @JvmField val updateCacheip: Int = 0
) : ProtoBuf
}
@ -278,31 +278,31 @@ internal class CSDataHighwayHead : ProtoBuf {
internal class HwConfigPersistentPB : ProtoBuf {
@Serializable
internal class HwConfigItemPB(
@ProtoId(1) @JvmField val ingKey: String = "",
@ProtoId(2) @JvmField val endPointList: List<HwEndPointPB>? = null
@ProtoNumber(1) @JvmField val ingKey: String = "",
@ProtoNumber(2) @JvmField val endPointList: List<HwEndPointPB>? = null
) : ProtoBuf
@Serializable
internal class HwConfigPB(
@ProtoId(1) @JvmField val configItemList: List<HwConfigItemPB>? = null,
@ProtoId(2) @JvmField val netSegConfList: List<HwNetSegConfPB>? = null,
@ProtoId(3) @JvmField val shortVideoNetConf: List<HwNetSegConfPB>? = null,
@ProtoId(4) @JvmField val configItemListIp6: List<HwConfigItemPB>? = null
@ProtoNumber(1) @JvmField val configItemList: List<HwConfigItemPB>? = null,
@ProtoNumber(2) @JvmField val netSegConfList: List<HwNetSegConfPB>? = null,
@ProtoNumber(3) @JvmField val shortVideoNetConf: List<HwNetSegConfPB>? = null,
@ProtoNumber(4) @JvmField val configItemListIp6: List<HwConfigItemPB>? = null
) : ProtoBuf
@Serializable
internal class HwEndPointPB(
@ProtoId(1) @JvmField val ingHost: String = "",
@ProtoId(2) @JvmField val int32Port: Int = 0,
@ProtoId(3) @JvmField val int64Timestampe: Long = 0L
@ProtoNumber(1) @JvmField val ingHost: String = "",
@ProtoNumber(2) @JvmField val int32Port: Int = 0,
@ProtoNumber(3) @JvmField val int64Timestampe: Long = 0L
) : ProtoBuf
@Serializable
internal class HwNetSegConfPB(
@ProtoId(1) @JvmField val int64NetType: Long = 0L,
@ProtoId(2) @JvmField val int64SegSize: Long = 0L,
@ProtoId(3) @JvmField val int64SegNum: Long = 0L,
@ProtoId(4) @JvmField val int64CurConnNum: Long = 0L
@ProtoNumber(1) @JvmField val int64NetType: Long = 0L,
@ProtoNumber(2) @JvmField val int64SegSize: Long = 0L,
@ProtoNumber(3) @JvmField val int64SegNum: Long = 0L,
@ProtoNumber(4) @JvmField val int64CurConnNum: Long = 0L
) : ProtoBuf
}
@ -310,8 +310,8 @@ internal class HwConfigPersistentPB : ProtoBuf {
internal class HwSessionInfoPersistentPB : ProtoBuf {
@Serializable
internal class HwSessionInfoPB(
@ProtoId(1) @JvmField val httpconnSigSession: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(2) @JvmField val sessionKey: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val httpconnSigSession: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) @JvmField val sessionKey: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
}
@ -319,137 +319,137 @@ internal class HwSessionInfoPersistentPB : ProtoBuf {
internal class Subcmd0x501 : ProtoBuf {
@Serializable
internal class ReqBody(
@ProtoId(1281) @JvmField val msgSubcmd0x501ReqBody: SubCmd0x501ReqBody? = null
@ProtoNumber(1281) @JvmField val msgSubcmd0x501ReqBody: SubCmd0x501ReqBody? = null
) : ProtoBuf
@Serializable
internal class RspBody(
@ProtoId(1281) @JvmField val msgSubcmd0x501RspBody: SubCmd0x501Rspbody? = null
@ProtoNumber(1281) @JvmField val msgSubcmd0x501RspBody: SubCmd0x501Rspbody? = null
) : ProtoBuf
@Serializable
internal class SubCmd0x501ReqBody(
@ProtoId(1) @JvmField val uin: Long = 0L,
@ProtoId(2) @JvmField val idcId: Int = 0,
@ProtoId(3) @JvmField val appid: Int = 0,
@ProtoId(4) @JvmField val loginSigType: Int = 0,
@ProtoId(5) @JvmField val loginSigTicket: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(6) @JvmField val requestFlag: Int = 0,
@ProtoId(7) @JvmField val uint32ServiceTypes: List<Int>? = null,
@ProtoId(8) @JvmField val bid: Int = 0,
@ProtoId(9) @JvmField val term: Int = 0,
@ProtoId(10) @JvmField val plat: Int = 0,
@ProtoId(11) @JvmField val net: Int = 0,
@ProtoId(12) @JvmField val caller: Int = 0
@ProtoNumber(1) @JvmField val uin: Long = 0L,
@ProtoNumber(2) @JvmField val idcId: Int = 0,
@ProtoNumber(3) @JvmField val appid: Int = 0,
@ProtoNumber(4) @JvmField val loginSigType: Int = 0,
@ProtoNumber(5) @JvmField val loginSigTicket: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(6) @JvmField val requestFlag: Int = 0,
@ProtoNumber(7) @JvmField val uint32ServiceTypes: List<Int>? = null,
@ProtoNumber(8) @JvmField val bid: Int = 0,
@ProtoNumber(9) @JvmField val term: Int = 0,
@ProtoNumber(10) @JvmField val plat: Int = 0,
@ProtoNumber(11) @JvmField val net: Int = 0,
@ProtoNumber(12) @JvmField val caller: Int = 0
) : ProtoBuf
@Serializable
internal class SubCmd0x501Rspbody(
@ProtoId(1) @JvmField val httpconnSigSession: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(2) @JvmField val sessionKey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val msgHttpconnAddrs: List<SrvAddrs>? = null,
@ProtoId(4) @JvmField val preConnection: Int = 0,
@ProtoId(5) @JvmField val csConn: Int = 0,
@ProtoId(6) @JvmField val msgIpLearnConf: IpLearnConf? = null,
@ProtoId(7) @JvmField val msgDynTimeoutConf: DynTimeOutConf? = null,
@ProtoId(8) @JvmField val msgOpenUpConf: OpenUpConf? = null,
@ProtoId(9) @JvmField val msgDownloadEncryptConf: DownloadEncryptConf? = null,
@ProtoId(10) @JvmField val msgShortVideoConf: ShortVideoConf? = null,
@ProtoId(11) @JvmField val msgPtvConf: PTVConf? = null
@ProtoNumber(1) @JvmField val httpconnSigSession: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) @JvmField val sessionKey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val msgHttpconnAddrs: List<SrvAddrs>? = null,
@ProtoNumber(4) @JvmField val preConnection: Int = 0,
@ProtoNumber(5) @JvmField val csConn: Int = 0,
@ProtoNumber(6) @JvmField val msgIpLearnConf: IpLearnConf? = null,
@ProtoNumber(7) @JvmField val msgDynTimeoutConf: DynTimeOutConf? = null,
@ProtoNumber(8) @JvmField val msgOpenUpConf: OpenUpConf? = null,
@ProtoNumber(9) @JvmField val msgDownloadEncryptConf: DownloadEncryptConf? = null,
@ProtoNumber(10) @JvmField val msgShortVideoConf: ShortVideoConf? = null,
@ProtoNumber(11) @JvmField val msgPtvConf: PTVConf? = null
) : ProtoBuf {
@Serializable
internal class DownloadEncryptConf(
@ProtoId(1) @JvmField val boolEnableEncryptRequest: Boolean = false,
@ProtoId(2) @JvmField val boolEnableEncryptedPic: Boolean = false,
@ProtoId(3) @JvmField val ctrlFlag: Int = 0
@ProtoNumber(1) @JvmField val boolEnableEncryptRequest: Boolean = false,
@ProtoNumber(2) @JvmField val boolEnableEncryptedPic: Boolean = false,
@ProtoNumber(3) @JvmField val ctrlFlag: Int = 0
) : ProtoBuf
@Serializable
internal class DynTimeOutConf(
@ProtoId(1) @JvmField val tbase2g: Int = 0,
@ProtoId(2) @JvmField val tbase3g: Int = 0,
@ProtoId(3) @JvmField val tbase4g: Int = 0,
@ProtoId(4) @JvmField val tbaseWifi: Int = 0,
@ProtoId(5) @JvmField val torg2g: Int = 0,
@ProtoId(6) @JvmField val torg3g: Int = 0,
@ProtoId(7) @JvmField val torg4g: Int = 0,
@ProtoId(8) @JvmField val torgWifi: Int = 0,
@ProtoId(9) @JvmField val maxTimeout: Int = 0,
@ProtoId(10) @JvmField val enableDynTimeout: Int = 0,
@ProtoId(11) @JvmField val maxTimeout2g: Int = 0,
@ProtoId(12) @JvmField val maxTimeout3g: Int = 0,
@ProtoId(13) @JvmField val maxTimeout4g: Int = 0,
@ProtoId(14) @JvmField val maxTimeoutWifi: Int = 0,
@ProtoId(15) @JvmField val hbTimeout2g: Int = 0,
@ProtoId(16) @JvmField val hbTimeout3g: Int = 0,
@ProtoId(17) @JvmField val hbTimeout4g: Int = 0,
@ProtoId(18) @JvmField val hbTimeoutWifi: Int = 0,
@ProtoId(19) @JvmField val hbTimeoutDefault: Int = 0
@ProtoNumber(1) @JvmField val tbase2g: Int = 0,
@ProtoNumber(2) @JvmField val tbase3g: Int = 0,
@ProtoNumber(3) @JvmField val tbase4g: Int = 0,
@ProtoNumber(4) @JvmField val tbaseWifi: Int = 0,
@ProtoNumber(5) @JvmField val torg2g: Int = 0,
@ProtoNumber(6) @JvmField val torg3g: Int = 0,
@ProtoNumber(7) @JvmField val torg4g: Int = 0,
@ProtoNumber(8) @JvmField val torgWifi: Int = 0,
@ProtoNumber(9) @JvmField val maxTimeout: Int = 0,
@ProtoNumber(10) @JvmField val enableDynTimeout: Int = 0,
@ProtoNumber(11) @JvmField val maxTimeout2g: Int = 0,
@ProtoNumber(12) @JvmField val maxTimeout3g: Int = 0,
@ProtoNumber(13) @JvmField val maxTimeout4g: Int = 0,
@ProtoNumber(14) @JvmField val maxTimeoutWifi: Int = 0,
@ProtoNumber(15) @JvmField val hbTimeout2g: Int = 0,
@ProtoNumber(16) @JvmField val hbTimeout3g: Int = 0,
@ProtoNumber(17) @JvmField val hbTimeout4g: Int = 0,
@ProtoNumber(18) @JvmField val hbTimeoutWifi: Int = 0,
@ProtoNumber(19) @JvmField val hbTimeoutDefault: Int = 0
) : ProtoBuf
@Serializable
internal class Ip6Addr(
@ProtoId(1) @JvmField val type: Int = 0,
@ProtoId(2) @JvmField val ip6: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val port: Int = 0,
@ProtoId(4) @JvmField val area: Int = 0,
@ProtoId(5) @JvmField val sameIsp: Int = 0
@ProtoNumber(1) @JvmField val type: Int = 0,
@ProtoNumber(2) @JvmField val ip6: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val port: Int = 0,
@ProtoNumber(4) @JvmField val area: Int = 0,
@ProtoNumber(5) @JvmField val sameIsp: Int = 0
) : ProtoBuf
@Serializable
internal class IpAddr(
@ProtoId(1) @JvmField val type: Int = 0,
@ProtoType(ProtoNumberType.FIXED) @ProtoId(2) @JvmField val ip: Int = 0,
@ProtoId(3) @JvmField val port: Int = 0,
@ProtoId(4) @JvmField val area: Int = 0,
@ProtoId(5) @JvmField val sameIsp: Int = 0
@ProtoNumber(1) @JvmField val type: Int = 0,
@ProtoType(ProtoIntegerType.FIXED) @ProtoNumber(2) @JvmField val ip: Int = 0,
@ProtoNumber(3) @JvmField val port: Int = 0,
@ProtoNumber(4) @JvmField val area: Int = 0,
@ProtoNumber(5) @JvmField val sameIsp: Int = 0
) : ProtoBuf
@Serializable
internal class IpLearnConf(
@ProtoId(1) @JvmField val refreshCachedIp: Int = 0,
@ProtoId(2) @JvmField val enableIpLearn: Int = 0
@ProtoNumber(1) @JvmField val refreshCachedIp: Int = 0,
@ProtoNumber(2) @JvmField val enableIpLearn: Int = 0
) : ProtoBuf
@Serializable
internal class NetSegConf(
@ProtoId(1) @JvmField val netType: Int = 0,
@ProtoId(2) @JvmField val segsize: Int = 0,
@ProtoId(3) @JvmField val segnum: Int = 0,
@ProtoId(4) @JvmField val curconnnum: Int = 0
@ProtoNumber(1) @JvmField val netType: Int = 0,
@ProtoNumber(2) @JvmField val segsize: Int = 0,
@ProtoNumber(3) @JvmField val segnum: Int = 0,
@ProtoNumber(4) @JvmField val curconnnum: Int = 0
) : ProtoBuf
@Serializable
internal class OpenUpConf(
@ProtoId(1) @JvmField val boolEnableOpenup: Boolean = false,
@ProtoId(2) @JvmField val preSendSegnum: Int = 0,
@ProtoId(3) @JvmField val preSendSegnum3g: Int = 0,
@ProtoId(4) @JvmField val preSendSegnum4g: Int = 0,
@ProtoId(5) @JvmField val preSendSegnumWifi: Int = 0
@ProtoNumber(1) @JvmField val boolEnableOpenup: Boolean = false,
@ProtoNumber(2) @JvmField val preSendSegnum: Int = 0,
@ProtoNumber(3) @JvmField val preSendSegnum3g: Int = 0,
@ProtoNumber(4) @JvmField val preSendSegnum4g: Int = 0,
@ProtoNumber(5) @JvmField val preSendSegnumWifi: Int = 0
) : ProtoBuf
@Serializable
internal class PTVConf(
@ProtoId(1) @JvmField val channelType: Int = 0,
@ProtoId(2) @JvmField val msgNetsegconf: List<NetSegConf>? = null,
@ProtoId(3) @JvmField val boolOpenHardwareCodec: Boolean = false
@ProtoNumber(1) @JvmField val channelType: Int = 0,
@ProtoNumber(2) @JvmField val msgNetsegconf: List<NetSegConf>? = null,
@ProtoNumber(3) @JvmField val boolOpenHardwareCodec: Boolean = false
) : ProtoBuf
@Serializable
internal class ShortVideoConf(
@ProtoId(1) @JvmField val channelType: Int = 0,
@ProtoId(2) @JvmField val msgNetsegconf: List<NetSegConf>? = null,
@ProtoId(3) @JvmField val boolOpenHardwareCodec: Boolean = false,
@ProtoId(4) @JvmField val boolSendAheadSignal: Boolean = false
@ProtoNumber(1) @JvmField val channelType: Int = 0,
@ProtoNumber(2) @JvmField val msgNetsegconf: List<NetSegConf>? = null,
@ProtoNumber(3) @JvmField val boolOpenHardwareCodec: Boolean = false,
@ProtoNumber(4) @JvmField val boolSendAheadSignal: Boolean = false
) : ProtoBuf
@Serializable
internal class SrvAddrs(
@ProtoId(1) @JvmField val serviceType: Int = 0,
@ProtoId(2) @JvmField val msgAddrs: List<IpAddr>? = null,
@ProtoId(3) @JvmField val fragmentSize: Int = 0,
@ProtoId(4) @JvmField val msgNetsegconf: List<NetSegConf>? = null,
@ProtoId(5) @JvmField val msgAddrsV6: List<Ip6Addr>? = null
@ProtoNumber(1) @JvmField val serviceType: Int = 0,
@ProtoNumber(2) @JvmField val msgAddrs: List<IpAddr>? = null,
@ProtoNumber(3) @JvmField val fragmentSize: Int = 0,
@ProtoNumber(4) @JvmField val msgNetsegconf: List<NetSegConf>? = null,
@ProtoNumber(5) @JvmField val msgAddrsV6: List<Ip6Addr>? = null
) : ProtoBuf
}
}

View File

@ -1,7 +1,7 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.proto
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import kotlinx.serialization.protobuf.ProtoNumber
import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf
import kotlin.jvm.JvmField
@ -9,256 +9,256 @@ import kotlin.jvm.JvmField
internal class HummerCommelem : ProtoBuf {
@Serializable
internal class MsgElemInfoServtype1(
@ProtoId(1) @JvmField val rewardId: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(2) @JvmField val senderUin: Long = 0L,
@ProtoId(3) @JvmField val picType: Int = 0,
@ProtoId(4) @JvmField val rewardMoney: Int = 0,
@ProtoId(5) @JvmField val url: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(6) @JvmField val content: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(7) @JvmField val createTimestamp: Int = 0,
@ProtoId(8) @JvmField val status: Int = 0,
@ProtoId(9) @JvmField val size: Int = 0,
@ProtoId(10) @JvmField val videoDuration: Int = 0,
@ProtoId(11) @JvmField val seq: Long = 0L,
@ProtoId(12) @JvmField val rewardTypeExt: Int = 0
@ProtoNumber(1) @JvmField val rewardId: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) @JvmField val senderUin: Long = 0L,
@ProtoNumber(3) @JvmField val picType: Int = 0,
@ProtoNumber(4) @JvmField val rewardMoney: Int = 0,
@ProtoNumber(5) @JvmField val url: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(6) @JvmField val content: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(7) @JvmField val createTimestamp: Int = 0,
@ProtoNumber(8) @JvmField val status: Int = 0,
@ProtoNumber(9) @JvmField val size: Int = 0,
@ProtoNumber(10) @JvmField val videoDuration: Int = 0,
@ProtoNumber(11) @JvmField val seq: Long = 0L,
@ProtoNumber(12) @JvmField val rewardTypeExt: Int = 0
) : ProtoBuf
@Serializable
internal class MsgElemInfoServtype11(
@ProtoId(1) @JvmField val resID: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(2) @JvmField val resMD5: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val reserveInfo1: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(4) @JvmField val reserveInfo2: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(5) @JvmField val doodleDataOffset: Int = 0,
@ProtoId(6) @JvmField val doodleGifId: Int = 0,
@ProtoId(7) @JvmField val doodleUrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(8) @JvmField val doodleMd5: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val resID: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) @JvmField val resMD5: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val reserveInfo1: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(4) @JvmField val reserveInfo2: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(5) @JvmField val doodleDataOffset: Int = 0,
@ProtoNumber(6) @JvmField val doodleGifId: Int = 0,
@ProtoNumber(7) @JvmField val doodleUrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(8) @JvmField val doodleMd5: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class MsgElemInfoServtype13(
@ProtoId(1) @JvmField val sysHeadId: Int = 0,
@ProtoId(2) @JvmField val headFlag: Int = 0
@ProtoNumber(1) @JvmField val sysHeadId: Int = 0,
@ProtoNumber(2) @JvmField val headFlag: Int = 0
) : ProtoBuf
@Serializable
internal class MsgElemInfoServtype14(
@ProtoId(1) @JvmField val id: Int = 0,
@ProtoId(2) @JvmField val reserveInfo: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val id: Int = 0,
@ProtoNumber(2) @JvmField val reserveInfo: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class MsgElemInfoServtype15(
@ProtoId(1) @JvmField val vid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(2) @JvmField val cover: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val title: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(4) @JvmField val summary: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(5) @JvmField val createTime: Long = 0L,
@ProtoId(6) @JvmField val commentContent: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(7) @JvmField val author: Long = 0L,
@ProtoId(8) @JvmField val ctrVersion: Int = 0
@ProtoNumber(1) @JvmField val vid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) @JvmField val cover: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val title: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(4) @JvmField val summary: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(5) @JvmField val createTime: Long = 0L,
@ProtoNumber(6) @JvmField val commentContent: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(7) @JvmField val author: Long = 0L,
@ProtoNumber(8) @JvmField val ctrVersion: Int = 0
) : ProtoBuf
@Serializable
internal class MsgElemInfoServtype16(
@ProtoId(1) @JvmField val uid: Long = 0L,
@ProtoId(2) @JvmField val unionID: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val storyID: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(4) @JvmField val md5: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(5) @JvmField val thumbUrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(6) @JvmField val doodleUrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(7) @JvmField val videoWidth: Int = 0,
@ProtoId(8) @JvmField val videoHeight: Int = 0,
@ProtoId(9) @JvmField val sourceName: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(10) @JvmField val sourceActionType: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(11) @JvmField val sourceActionData: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(12) @JvmField val ctrVersion: Int = 0
@ProtoNumber(1) @JvmField val uid: Long = 0L,
@ProtoNumber(2) @JvmField val unionID: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val storyID: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(4) @JvmField val md5: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(5) @JvmField val thumbUrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(6) @JvmField val doodleUrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(7) @JvmField val videoWidth: Int = 0,
@ProtoNumber(8) @JvmField val videoHeight: Int = 0,
@ProtoNumber(9) @JvmField val sourceName: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(10) @JvmField val sourceActionType: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(11) @JvmField val sourceActionData: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(12) @JvmField val ctrVersion: Int = 0
) : ProtoBuf
@Serializable
internal class MsgElemInfoServtype18(
@ProtoId(1) @JvmField val currentAmount: Long = 0L,
@ProtoId(2) @JvmField val totalAmount: Long = 0L,
@ProtoId(3) @JvmField val listid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(4) @JvmField val authKey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(5) @JvmField val number: Int = 0
@ProtoNumber(1) @JvmField val currentAmount: Long = 0L,
@ProtoNumber(2) @JvmField val totalAmount: Long = 0L,
@ProtoNumber(3) @JvmField val listid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(4) @JvmField val authKey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(5) @JvmField val number: Int = 0
) : ProtoBuf
@Serializable
internal class MsgElemInfoServtype19(
@ProtoId(1) @JvmField val data: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val data: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class MsgElemInfoServtype2(
@ProtoId(1) @JvmField val pokeType: Int = 0,
@ProtoId(2) @JvmField val pokeSummary: String = "",
@ProtoId(3) @JvmField val doubleHit: Int = 0,
@ProtoId(4) @JvmField val vaspokeId: Int = 0,
@ProtoId(5) @JvmField val vaspokeName: String = "",
@ProtoId(6) @JvmField val vaspokeMinver: String = "",
@ProtoId(7) @JvmField val pokeStrength: Int = 0,
@ProtoId(8) @JvmField val msgType: Int = 0,
@ProtoId(9) @JvmField val faceBubbleCount: Int = 0,
@ProtoId(10) @JvmField val pokeFlag: Int = 0
@ProtoNumber(1) @JvmField val pokeType: Int = 0,
@ProtoNumber(2) @JvmField val pokeSummary: String = "",
@ProtoNumber(3) @JvmField val doubleHit: Int = 0,
@ProtoNumber(4) @JvmField val vaspokeId: Int = 0,
@ProtoNumber(5) @JvmField val vaspokeName: String = "",
@ProtoNumber(6) @JvmField val vaspokeMinver: String = "",
@ProtoNumber(7) @JvmField val pokeStrength: Int = 0,
@ProtoNumber(8) @JvmField val msgType: Int = 0,
@ProtoNumber(9) @JvmField val faceBubbleCount: Int = 0,
@ProtoNumber(10) @JvmField val pokeFlag: Int = 0
) : ProtoBuf
@Serializable
internal class MsgElemInfoServtype20(
@ProtoId(1) @JvmField val data: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val data: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class MsgElemInfoServtype21(
@ProtoId(1) @JvmField val topicId: Int = 0,
@ProtoId(2) @JvmField val confessorUin: Long = 0L,
@ProtoId(3) @JvmField val confessorNick: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(4) @JvmField val confessorSex: Int = 0,
@ProtoId(5) @JvmField val sysmsgFlag: Int = 0,
@ProtoId(6) @JvmField val c2cConfessCtx: C2CConfessContext? = null,
@ProtoId(7) @JvmField val topic: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(8) @JvmField val confessTime: Long = 0L,
@ProtoId(9) @JvmField val groupConfessMsg: GroupConfessMsg? = null,
@ProtoId(10) @JvmField val groupConfessCtx: GroupConfessContext? = null
@ProtoNumber(1) @JvmField val topicId: Int = 0,
@ProtoNumber(2) @JvmField val confessorUin: Long = 0L,
@ProtoNumber(3) @JvmField val confessorNick: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(4) @JvmField val confessorSex: Int = 0,
@ProtoNumber(5) @JvmField val sysmsgFlag: Int = 0,
@ProtoNumber(6) @JvmField val c2cConfessCtx: C2CConfessContext? = null,
@ProtoNumber(7) @JvmField val topic: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(8) @JvmField val confessTime: Long = 0L,
@ProtoNumber(9) @JvmField val groupConfessMsg: GroupConfessMsg? = null,
@ProtoNumber(10) @JvmField val groupConfessCtx: GroupConfessContext? = null
) : ProtoBuf {
@Serializable
internal class C2CConfessContext(
@ProtoId(1) @JvmField val confessorUin: Long = 0L,
@ProtoId(2) @JvmField val confessToUin: Long = 0L,
@ProtoId(3) @JvmField val sendUin: Long = 0L,
@ProtoId(4) @JvmField val confessorNick: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(5) @JvmField val confess: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(6) @JvmField val bgType: Int = 0,
@ProtoId(7) @JvmField val topicId: Int = 0,
@ProtoId(8) @JvmField val confessTime: Long = 0L,
@ProtoId(9) @JvmField val confessorSex: Int = 0,
@ProtoId(10) @JvmField val bizType: Int = 0,
@ProtoId(11) @JvmField val confessNum: Int = 0,
@ProtoId(12) @JvmField val confessToSex: Int = 0
@ProtoNumber(1) @JvmField val confessorUin: Long = 0L,
@ProtoNumber(2) @JvmField val confessToUin: Long = 0L,
@ProtoNumber(3) @JvmField val sendUin: Long = 0L,
@ProtoNumber(4) @JvmField val confessorNick: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(5) @JvmField val confess: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(6) @JvmField val bgType: Int = 0,
@ProtoNumber(7) @JvmField val topicId: Int = 0,
@ProtoNumber(8) @JvmField val confessTime: Long = 0L,
@ProtoNumber(9) @JvmField val confessorSex: Int = 0,
@ProtoNumber(10) @JvmField val bizType: Int = 0,
@ProtoNumber(11) @JvmField val confessNum: Int = 0,
@ProtoNumber(12) @JvmField val confessToSex: Int = 0
) : ProtoBuf
@Serializable
internal class GroupConfessContext(
@ProtoId(1) @JvmField val confessorUin: Long = 0L,
@ProtoId(2) @JvmField val confessToUin: Long = 0L,
@ProtoId(3) @JvmField val sendUin: Long = 0L,
@ProtoId(4) @JvmField val confessorSex: Int = 0,
@ProtoId(5) @JvmField val confessToNick: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(6) @JvmField val topic: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(7) @JvmField val topicId: Int = 0,
@ProtoId(8) @JvmField val confessTime: Long = 0L,
@ProtoId(9) @JvmField val confessToNickType: Int = 0,
@ProtoId(10) @JvmField val confessorNick: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val confessorUin: Long = 0L,
@ProtoNumber(2) @JvmField val confessToUin: Long = 0L,
@ProtoNumber(3) @JvmField val sendUin: Long = 0L,
@ProtoNumber(4) @JvmField val confessorSex: Int = 0,
@ProtoNumber(5) @JvmField val confessToNick: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(6) @JvmField val topic: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(7) @JvmField val topicId: Int = 0,
@ProtoNumber(8) @JvmField val confessTime: Long = 0L,
@ProtoNumber(9) @JvmField val confessToNickType: Int = 0,
@ProtoNumber(10) @JvmField val confessorNick: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class GroupConfessItem(
@ProtoId(1) @JvmField val topicId: Int = 0,
@ProtoId(2) @JvmField val confessToUin: Long = 0L,
@ProtoId(3) @JvmField val confessToNick: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(4) @JvmField val topic: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(5) @JvmField val confessToNickType: Int = 0
@ProtoNumber(1) @JvmField val topicId: Int = 0,
@ProtoNumber(2) @JvmField val confessToUin: Long = 0L,
@ProtoNumber(3) @JvmField val confessToNick: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(4) @JvmField val topic: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(5) @JvmField val confessToNickType: Int = 0
) : ProtoBuf
@Serializable
internal class GroupConfessMsg(
@ProtoId(1) @JvmField val confessTime: Long = 0L,
@ProtoId(2) @JvmField val confessorUin: Long = 0L,
@ProtoId(3) @JvmField val confessorSex: Int = 0,
@ProtoId(4) @JvmField val sysmsgFlag: Int = 0,
@ProtoId(5) @JvmField val confessItems: List<GroupConfessItem>? = null,
@ProtoId(6) @JvmField val totalTopicCount: Int = 0
@ProtoNumber(1) @JvmField val confessTime: Long = 0L,
@ProtoNumber(2) @JvmField val confessorUin: Long = 0L,
@ProtoNumber(3) @JvmField val confessorSex: Int = 0,
@ProtoNumber(4) @JvmField val sysmsgFlag: Int = 0,
@ProtoNumber(5) @JvmField val confessItems: List<GroupConfessItem>? = null,
@ProtoNumber(6) @JvmField val totalTopicCount: Int = 0
) : ProtoBuf
}
@Serializable
internal class MsgElemInfoServtype23(
@ProtoId(1) @JvmField val faceType: Int = 0,
@ProtoId(2) @JvmField val faceBubbleCount: Int = 0,
@ProtoId(3) @JvmField val faceSummary: String = "",
@ProtoId(4) @JvmField val flag: Int = 0,
@ProtoId(5) @JvmField val others: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val faceType: Int = 0,
@ProtoNumber(2) @JvmField val faceBubbleCount: Int = 0,
@ProtoNumber(3) @JvmField val faceSummary: String = "",
@ProtoNumber(4) @JvmField val flag: Int = 0,
@ProtoNumber(5) @JvmField val others: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class MsgElemInfoServtype24(
@ProtoId(1) @JvmField val limitChatEnter: LimitChatEnter? = null,
@ProtoId(2) @JvmField val limitChatExit: LimitChatExit? = null
@ProtoNumber(1) @JvmField val limitChatEnter: LimitChatEnter? = null,
@ProtoNumber(2) @JvmField val limitChatExit: LimitChatExit? = null
) : ProtoBuf {
@Serializable
internal class LimitChatEnter(
@ProtoId(1) @JvmField val tipsWording: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(2) @JvmField val leftChatTime: Int = 0,
@ProtoId(3) @JvmField val matchTs: Long = 0L,
@ProtoId(4) @JvmField val matchExpiredTime: Int = 0,
@ProtoId(5) @JvmField val c2cExpiredTime: Int = 0,
@ProtoId(6) @JvmField val readyTs: Long = 0L,
@ProtoId(7) @JvmField val matchNick: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val tipsWording: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) @JvmField val leftChatTime: Int = 0,
@ProtoNumber(3) @JvmField val matchTs: Long = 0L,
@ProtoNumber(4) @JvmField val matchExpiredTime: Int = 0,
@ProtoNumber(5) @JvmField val c2cExpiredTime: Int = 0,
@ProtoNumber(6) @JvmField val readyTs: Long = 0L,
@ProtoNumber(7) @JvmField val matchNick: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class LimitChatExit(
@ProtoId(1) @JvmField val exitMethod: Int = 0,
@ProtoId(2) @JvmField val matchTs: Long = 0L
@ProtoNumber(1) @JvmField val exitMethod: Int = 0,
@ProtoNumber(2) @JvmField val matchTs: Long = 0L
) : ProtoBuf
}
@Serializable
internal class MsgElemInfoServtype27(
@ProtoId(1) @JvmField val videoFile: ImMsgBody.VideoFile? = null
@ProtoNumber(1) @JvmField val videoFile: ImMsgBody.VideoFile? = null
) : ProtoBuf
@Serializable
internal class MsgElemInfoServtype29(
@ProtoId(1) @JvmField val luckybagMsg: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val luckybagMsg: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class MsgElemInfoServtype3(
@ProtoId(1) @JvmField val flashTroopPic: ImMsgBody.CustomFace? = null,
@ProtoId(2) @JvmField val flashC2cPic: ImMsgBody.NotOnlineImage? = null
@ProtoNumber(1) @JvmField val flashTroopPic: ImMsgBody.CustomFace? = null,
@ProtoNumber(2) @JvmField val flashC2cPic: ImMsgBody.NotOnlineImage? = null
) : ProtoBuf
@Serializable
internal class MsgElemInfoServtype31(
@ProtoId(1) @JvmField val text: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(2) @JvmField val ext: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val text: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) @JvmField val ext: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class MsgElemInfoServtype4(
@ProtoId(1) @JvmField val imsgType: Int = 0,
@ProtoId(4) @JvmField val stStoryAioObjMsg: StoryAioObjMsg? = null
@ProtoNumber(1) @JvmField val imsgType: Int = 0,
@ProtoNumber(4) @JvmField val stStoryAioObjMsg: StoryAioObjMsg? = null
) : ProtoBuf
@Serializable
internal class MsgElemInfoServtype5(
@ProtoId(1) @JvmField val vid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(2) @JvmField val cover: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val title: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(4) @JvmField val summary: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(5) @JvmField val createTime: Long = 0L,
@ProtoId(6) @JvmField val commentContent: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(7) @JvmField val author: Long = 0L
@ProtoNumber(1) @JvmField val vid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) @JvmField val cover: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val title: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(4) @JvmField val summary: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(5) @JvmField val createTime: Long = 0L,
@ProtoNumber(6) @JvmField val commentContent: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(7) @JvmField val author: Long = 0L
) : ProtoBuf
@Serializable
internal class MsgElemInfoServtype8(
@ProtoId(1) @JvmField val wifiDeliverGiftMsg: ImMsgBody.DeliverGiftMsg? = null
@ProtoNumber(1) @JvmField val wifiDeliverGiftMsg: ImMsgBody.DeliverGiftMsg? = null
) : ProtoBuf
@Serializable
internal class MsgElemInfoServtype9(
@ProtoId(1) @JvmField val anchorStatus: Int = 0,
@ProtoId(2) @JvmField val jumpSchema: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val anchorNickname: String = "",
@ProtoId(4) @JvmField val anchorHeadUrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(5) @JvmField val liveTitle: String = ""
@ProtoNumber(1) @JvmField val anchorStatus: Int = 0,
@ProtoNumber(2) @JvmField val jumpSchema: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val anchorNickname: String = "",
@ProtoNumber(4) @JvmField val anchorHeadUrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(5) @JvmField val liveTitle: String = ""
) : ProtoBuf
@Serializable
internal class StoryAioObjMsg(
@ProtoId(1) @JvmField val uiUrl: String = "",
@ProtoId(2) @JvmField val jmpUrl: String = ""
@ProtoNumber(1) @JvmField val uiUrl: String = "",
@ProtoNumber(2) @JvmField val jmpUrl: String = ""
) : ProtoBuf
}

View File

@ -1,7 +1,7 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.proto
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import kotlinx.serialization.protobuf.ProtoNumber
import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf
import net.mamoe.mirai.utils.currentTimeSeconds
import kotlin.jvm.JvmField
@ -12,22 +12,22 @@ internal interface ImgReq : ProtoBuf
@Serializable
internal class GetImgUrlReq(
@ProtoId(1) @JvmField val srcUni: Int,
@ProtoId(2) @JvmField val dstUni: Int,
@ProtoId(3) @JvmField val fileResID: String,//UUID
@ProtoNumber(1) @JvmField val srcUni: Int,
@ProtoNumber(2) @JvmField val dstUni: Int,
@ProtoNumber(3) @JvmField val fileResID: String,//UUID
/**
* UUID例子: 没有找到
*/
@ProtoId(4) @JvmField val urlFlag: Int = 1,
@ProtoNumber(4) @JvmField val urlFlag: Int = 1,
//5 unknown, 好像没用
@ProtoId(6) @JvmField val urlType: Int = 4,
@ProtoId(7) @JvmField val requestTerm: Int = 5,//确定
@ProtoId(8) @JvmField val requestPlatformType: Int = 9,//确定
@ProtoId(9) @JvmField val srcFileType: Int = 1,//2=ftn1=picplatform255
@ProtoId(10) @JvmField val innerIP: Int = 0,//确定
@ProtoId(11) @JvmField val addressBook: Int = 0,//[ChatType.internalID]== 1006为1[为CONTACT时] 我觉得发0没问题
@ProtoId(12) @JvmField val buType: Int = 1,//确定
@ProtoId(13) @JvmField val buildVer: String = "8.2.7.4410",//版本号
@ProtoId(14) @JvmField val timestamp: Int = currentTimeSeconds.toInt(),//(pic_up_timestamp)
@ProtoId(15) @JvmField val requestTransferType: Int = 1
@ProtoNumber(6) @JvmField val urlType: Int = 4,
@ProtoNumber(7) @JvmField val requestTerm: Int = 5,//确定
@ProtoNumber(8) @JvmField val requestPlatformType: Int = 9,//确定
@ProtoNumber(9) @JvmField val srcFileType: Int = 1,//2=ftn1=picplatform255
@ProtoNumber(10) @JvmField val innerIP: Int = 0,//确定
@ProtoNumber(11) @JvmField val addressBook: Int = 0,//[ChatType.internalID]== 1006为1[为CONTACT时] 我觉得发0没问题
@ProtoNumber(12) @JvmField val buType: Int = 1,//确定
@ProtoNumber(13) @JvmField val buildVer: String = "8.2.7.4410",//版本号
@ProtoNumber(14) @JvmField val timestamp: Int = currentTimeSeconds.toInt(),//(pic_up_timestamp)
@ProtoNumber(15) @JvmField val requestTransferType: Int = 1
) : ImgReq

View File

@ -1,7 +1,7 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.proto
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import kotlinx.serialization.protobuf.ProtoNumber
import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf
import kotlin.jvm.JvmField
@ -9,65 +9,65 @@ import kotlin.jvm.JvmField
internal class LongMsg : ProtoBuf {
@Serializable
internal class MsgDeleteReq(
@ProtoId(1) @JvmField val msgResid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(2) @JvmField val msgType: Int = 0
@ProtoNumber(1) @JvmField val msgResid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) @JvmField val msgType: Int = 0
) : ProtoBuf
@Serializable
internal class MsgDeleteRsp(
@ProtoId(1) @JvmField val result: Int = 0,
@ProtoId(2) @JvmField val msgResid: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val result: Int = 0,
@ProtoNumber(2) @JvmField val msgResid: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class MsgDownReq(
@ProtoId(1) @JvmField val srcUin: Int = 0,
@ProtoId(2) @JvmField val msgResid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val msgType: Int = 0,
@ProtoId(4) @JvmField val needCache: Int = 0
@ProtoNumber(1) @JvmField val srcUin: Int = 0,
@ProtoNumber(2) @JvmField val msgResid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val msgType: Int = 0,
@ProtoNumber(4) @JvmField val needCache: Int = 0
) : ProtoBuf
@Serializable
internal class MsgDownRsp(
@ProtoId(1) @JvmField val result: Int = 0,
@ProtoId(2) @JvmField val msgResid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val msgContent: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val result: Int = 0,
@ProtoNumber(2) @JvmField val msgResid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val msgContent: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class MsgUpReq(
@ProtoId(1) @JvmField val msgType: Int = 0,
@ProtoId(2) @JvmField val dstUin: Long = 0L,
@ProtoId(3) @JvmField val msgId: Int = 0,
@ProtoId(4) @JvmField val msgContent: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(5) @JvmField val storeType: Int = 0,
@ProtoId(6) @JvmField val msgUkey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(7) @JvmField val needCache: Int = 0
@ProtoNumber(1) @JvmField val msgType: Int = 0,
@ProtoNumber(2) @JvmField val dstUin: Long = 0L,
@ProtoNumber(3) @JvmField val msgId: Int = 0,
@ProtoNumber(4) @JvmField val msgContent: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(5) @JvmField val storeType: Int = 0,
@ProtoNumber(6) @JvmField val msgUkey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(7) @JvmField val needCache: Int = 0
) : ProtoBuf
@Serializable
internal class MsgUpRsp(
@ProtoId(1) @JvmField val result: Int = 0,
@ProtoId(2) @JvmField val msgId: Int = 0,
@ProtoId(3) @JvmField val msgResid: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val result: Int = 0,
@ProtoNumber(2) @JvmField val msgId: Int = 0,
@ProtoNumber(3) @JvmField val msgResid: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class ReqBody(
@ProtoId(1) @JvmField val subcmd: Int = 0,
@ProtoId(2) @JvmField val termType: Int = 0,
@ProtoId(3) @JvmField val platformType: Int = 0,
@ProtoId(4) @JvmField val msgUpReq: List<LongMsg.MsgUpReq>? = null,
@ProtoId(5) @JvmField val msgDownReq: List<LongMsg.MsgDownReq>? = null,
@ProtoId(6) @JvmField val msgDelReq: List<LongMsg.MsgDeleteReq>? = null,
@ProtoId(10) @JvmField val agentType: Int = 0
@ProtoNumber(1) @JvmField val subcmd: Int = 0,
@ProtoNumber(2) @JvmField val termType: Int = 0,
@ProtoNumber(3) @JvmField val platformType: Int = 0,
@ProtoNumber(4) @JvmField val msgUpReq: List<LongMsg.MsgUpReq>? = null,
@ProtoNumber(5) @JvmField val msgDownReq: List<LongMsg.MsgDownReq>? = null,
@ProtoNumber(6) @JvmField val msgDelReq: List<LongMsg.MsgDeleteReq>? = null,
@ProtoNumber(10) @JvmField val agentType: Int = 0
) : ProtoBuf
@Serializable
internal class RspBody(
@ProtoId(1) @JvmField val subcmd: Int = 0,
@ProtoId(2) @JvmField val msgUpRsp: List<LongMsg.MsgUpRsp>? = null,
@ProtoId(3) @JvmField val msgDownRsp: List<LongMsg.MsgDownRsp>? = null,
@ProtoId(4) @JvmField val msgDelRsp: List<LongMsg.MsgDeleteRsp>? = null
@ProtoNumber(1) @JvmField val subcmd: Int = 0,
@ProtoNumber(2) @JvmField val msgUpRsp: List<LongMsg.MsgUpRsp>? = null,
@ProtoNumber(3) @JvmField val msgDownRsp: List<LongMsg.MsgDownRsp>? = null,
@ProtoNumber(4) @JvmField val msgDelRsp: List<LongMsg.MsgDeleteRsp>? = null
) : ProtoBuf
}

View File

@ -1,7 +1,7 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.proto
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import kotlinx.serialization.protobuf.ProtoNumber
import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf
import kotlin.jvm.JvmField
@ -13,143 +13,143 @@ import kotlin.jvm.JvmField
internal class MsgComm : ProtoBuf {
@Serializable
internal class AppShareInfo(
@ProtoId(1) @JvmField val appshareId: Int = 0,
@ProtoId(2) @JvmField val appshareCookie: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val appshareResource: PluginInfo? = null
@ProtoNumber(1) @JvmField val appshareId: Int = 0,
@ProtoNumber(2) @JvmField val appshareCookie: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val appshareResource: PluginInfo? = null
) : ProtoBuf
@Serializable
internal class C2CTmpMsgHead(
@ProtoId(1) @JvmField val c2cType: Int = 0,
@ProtoId(2) @JvmField val serviceType: Int = 0,
@ProtoId(3) @JvmField val groupUin: Long = 0L,
@ProtoId(4) @JvmField val groupCode: Long = 0L,
@ProtoId(5) @JvmField val sig: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(6) @JvmField val sigType: Int = 0,
@ProtoId(7) @JvmField val fromPhone: String = "",
@ProtoId(8) @JvmField val toPhone: String = "",
@ProtoId(9) @JvmField val lockDisplay: Int = 0,
@ProtoId(10) @JvmField val directionFlag: Int = 0,
@ProtoId(11) @JvmField val reserved: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val c2cType: Int = 0,
@ProtoNumber(2) @JvmField val serviceType: Int = 0,
@ProtoNumber(3) @JvmField val groupUin: Long = 0L,
@ProtoNumber(4) @JvmField val groupCode: Long = 0L,
@ProtoNumber(5) @JvmField val sig: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(6) @JvmField val sigType: Int = 0,
@ProtoNumber(7) @JvmField val fromPhone: String = "",
@ProtoNumber(8) @JvmField val toPhone: String = "",
@ProtoNumber(9) @JvmField val lockDisplay: Int = 0,
@ProtoNumber(10) @JvmField val directionFlag: Int = 0,
@ProtoNumber(11) @JvmField val reserved: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class ContentHead(
@ProtoId(1) @JvmField val pkgNum: Int = 0,
@ProtoId(2) @JvmField val pkgIndex: Int = 0,
@ProtoId(3) @JvmField val divSeq: Int = 0,
@ProtoId(4) @JvmField val autoReply: Int = 0
@ProtoNumber(1) @JvmField val pkgNum: Int = 0,
@ProtoNumber(2) @JvmField val pkgIndex: Int = 0,
@ProtoNumber(3) @JvmField val divSeq: Int = 0,
@ProtoNumber(4) @JvmField val autoReply: Int = 0
) : ProtoBuf
@Serializable
internal class DiscussInfo(
@ProtoId(1) @JvmField val discussUin: Long = 0L,
@ProtoId(2) @JvmField val discussType: Int = 0,
@ProtoId(3) @JvmField val discussInfoSeq: Long = 0L,
@ProtoId(4) @JvmField val discussRemark: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(5) @JvmField val discussName: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val discussUin: Long = 0L,
@ProtoNumber(2) @JvmField val discussType: Int = 0,
@ProtoNumber(3) @JvmField val discussInfoSeq: Long = 0L,
@ProtoNumber(4) @JvmField val discussRemark: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(5) @JvmField val discussName: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class ExtGroupKeyInfo(
@ProtoId(1) @JvmField val curMaxSeq: Int = 0,
@ProtoId(2) @JvmField val curTime: Long = 0L
@ProtoNumber(1) @JvmField val curMaxSeq: Int = 0,
@ProtoNumber(2) @JvmField val curTime: Long = 0L
) : ProtoBuf
@Serializable
internal class GroupInfo(
@ProtoId(1) @JvmField val groupCode: Long = 0L,
@ProtoId(2) @JvmField val groupType: Int = 0,
@ProtoId(3) @JvmField val groupInfoSeq: Long = 0L,
@ProtoId(4) @JvmField val groupCard: String = "",
@ProtoId(5) @JvmField val groupRank: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(6) @JvmField val groupLevel: Int = 0,
@ProtoId(7) @JvmField val groupCardType: Int = 0,
@ProtoId(8) @JvmField val groupName: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val groupCode: Long = 0L,
@ProtoNumber(2) @JvmField val groupType: Int = 0,
@ProtoNumber(3) @JvmField val groupInfoSeq: Long = 0L,
@ProtoNumber(4) @JvmField val groupCard: String = "",
@ProtoNumber(5) @JvmField val groupRank: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(6) @JvmField val groupLevel: Int = 0,
@ProtoNumber(7) @JvmField val groupCardType: Int = 0,
@ProtoNumber(8) @JvmField val groupName: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class Msg(
@ProtoId(1) @JvmField val msgHead: MsgHead,
@ProtoId(2) @JvmField val contentHead: ContentHead? = null,
@ProtoId(3) @JvmField val msgBody: ImMsgBody.MsgBody,
@ProtoId(4) @JvmField val appshareInfo: AppShareInfo? = null
@ProtoNumber(1) @JvmField val msgHead: MsgHead,
@ProtoNumber(2) @JvmField val contentHead: ContentHead? = null,
@ProtoNumber(3) @JvmField val msgBody: ImMsgBody.MsgBody,
@ProtoNumber(4) @JvmField val appshareInfo: AppShareInfo? = null
) : ProtoBuf
@Serializable
internal class MsgHead(
@ProtoId(1) @JvmField val fromUin: Long = 0L,
@ProtoId(2) @JvmField val toUin: Long = 0L,
@ProtoId(3) @JvmField val msgType: Int = 0,
@ProtoId(4) @JvmField val c2cCmd: Int = 0,
@ProtoId(5) @JvmField val msgSeq: Int = 0,
@ProtoId(6) @JvmField val msgTime: Int = 0,
@ProtoId(7) var msgUid: Long = 0L,
@ProtoId(8) @JvmField val c2cTmpMsgHead: C2CTmpMsgHead? = null,
@ProtoId(9) @JvmField val groupInfo: GroupInfo? = null,
@ProtoId(10) @JvmField val fromAppid: Int = 0,
@ProtoId(11) @JvmField val fromInstid: Int = 0,
@ProtoId(12) @JvmField val userActive: Int = 0,
@ProtoId(13) @JvmField val discussInfo: DiscussInfo? = null,
@ProtoId(14) @JvmField val fromNick: String = "",
@ProtoId(15) @JvmField val authUin: Long = 0L,
@ProtoId(16) @JvmField val authNick: String = "",
@ProtoId(17) @JvmField val msgFlag: Int = 0,
@ProtoId(18) @JvmField val authRemark: String = "",
@ProtoId(19) @JvmField val groupName: String = "",
@ProtoId(20) @JvmField val mutiltransHead: MutilTransHead? = null,
@ProtoId(21) @JvmField val msgInstCtrl: ImMsgHead.InstCtrl? = null,
@ProtoId(22) @JvmField val publicAccountGroupSendFlag: Int = 0,
@ProtoId(23) @JvmField val wseqInC2cMsghead: Int = 0,
@ProtoId(24) @JvmField val cpid: Long = 0L,
@ProtoId(25) @JvmField val extGroupKeyInfo: ExtGroupKeyInfo? = null,
@ProtoId(26) @JvmField val multiCompatibleText: String = "",
@ProtoId(27) @JvmField val authSex: Int = 0,
@ProtoId(28) @JvmField val isSrcMsg: Boolean = false
@ProtoNumber(1) @JvmField val fromUin: Long = 0L,
@ProtoNumber(2) @JvmField val toUin: Long = 0L,
@ProtoNumber(3) @JvmField val msgType: Int = 0,
@ProtoNumber(4) @JvmField val c2cCmd: Int = 0,
@ProtoNumber(5) @JvmField val msgSeq: Int = 0,
@ProtoNumber(6) @JvmField val msgTime: Int = 0,
@ProtoNumber(7) var msgUid: Long = 0L,
@ProtoNumber(8) @JvmField val c2cTmpMsgHead: C2CTmpMsgHead? = null,
@ProtoNumber(9) @JvmField val groupInfo: GroupInfo? = null,
@ProtoNumber(10) @JvmField val fromAppid: Int = 0,
@ProtoNumber(11) @JvmField val fromInstid: Int = 0,
@ProtoNumber(12) @JvmField val userActive: Int = 0,
@ProtoNumber(13) @JvmField val discussInfo: DiscussInfo? = null,
@ProtoNumber(14) @JvmField val fromNick: String = "",
@ProtoNumber(15) @JvmField val authUin: Long = 0L,
@ProtoNumber(16) @JvmField val authNick: String = "",
@ProtoNumber(17) @JvmField val msgFlag: Int = 0,
@ProtoNumber(18) @JvmField val authRemark: String = "",
@ProtoNumber(19) @JvmField val groupName: String = "",
@ProtoNumber(20) @JvmField val mutiltransHead: MutilTransHead? = null,
@ProtoNumber(21) @JvmField val msgInstCtrl: ImMsgHead.InstCtrl? = null,
@ProtoNumber(22) @JvmField val publicAccountGroupSendFlag: Int = 0,
@ProtoNumber(23) @JvmField val wseqInC2cMsghead: Int = 0,
@ProtoNumber(24) @JvmField val cpid: Long = 0L,
@ProtoNumber(25) @JvmField val extGroupKeyInfo: ExtGroupKeyInfo? = null,
@ProtoNumber(26) @JvmField val multiCompatibleText: String = "",
@ProtoNumber(27) @JvmField val authSex: Int = 0,
@ProtoNumber(28) @JvmField val isSrcMsg: Boolean = false
) : ProtoBuf
@Serializable
internal class MsgType0x210(
@ProtoId(1) @JvmField val subMsgType: Int = 0,
@ProtoId(2) @JvmField val msgContent: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val subMsgType: Int = 0,
@ProtoNumber(2) @JvmField val msgContent: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class MutilTransHead(
@ProtoId(1) @JvmField val status: Int = 0,
@ProtoId(2) @JvmField val msgId: Int = 0
@ProtoNumber(1) @JvmField val status: Int = 0,
@ProtoNumber(2) @JvmField val msgId: Int = 0
) : ProtoBuf
@Serializable
internal class PluginInfo(
@ProtoId(1) @JvmField val resId: Int = 0,
@ProtoId(2) @JvmField val pkgName: String = "",
@ProtoId(3) @JvmField val newVer: Int = 0,
@ProtoId(4) @JvmField val resType: Int = 0,
@ProtoId(5) @JvmField val lanType: Int = 0,
@ProtoId(6) @JvmField val priority: Int = 0,
@ProtoId(7) @JvmField val resName: String = "",
@ProtoId(8) @JvmField val resDesc: String = "",
@ProtoId(9) @JvmField val resUrlBig: String = "",
@ProtoId(10) @JvmField val resUrlSmall: String = "",
@ProtoId(11) @JvmField val resConf: String = ""
@ProtoNumber(1) @JvmField val resId: Int = 0,
@ProtoNumber(2) @JvmField val pkgName: String = "",
@ProtoNumber(3) @JvmField val newVer: Int = 0,
@ProtoNumber(4) @JvmField val resType: Int = 0,
@ProtoNumber(5) @JvmField val lanType: Int = 0,
@ProtoNumber(6) @JvmField val priority: Int = 0,
@ProtoNumber(7) @JvmField val resName: String = "",
@ProtoNumber(8) @JvmField val resDesc: String = "",
@ProtoNumber(9) @JvmField val resUrlBig: String = "",
@ProtoNumber(10) @JvmField val resUrlSmall: String = "",
@ProtoNumber(11) @JvmField val resConf: String = ""
) : ProtoBuf
@Serializable
internal class Uin2Nick(
@ProtoId(1) @JvmField val uin: Long = 0L,
@ProtoId(2) @JvmField val nick: String = ""
@ProtoNumber(1) @JvmField val uin: Long = 0L,
@ProtoNumber(2) @JvmField val nick: String = ""
) : ProtoBuf
@Serializable
internal class UinPairMsg(
@ProtoId(1) @JvmField val lastReadTime: Int = 0,
@ProtoId(2) @JvmField val peerUin: Long = 0L,
@ProtoId(3) @JvmField val msgCompleted: Int = 0,
@ProtoId(4) @JvmField val msg: List<Msg>? = null,
@ProtoId(5) @JvmField val unreadMsgNum: Int = 0,
@ProtoId(8) @JvmField val c2cType: Int = 0,
@ProtoId(9) @JvmField val serviceType: Int = 0,
@ProtoId(10) @JvmField val pbReserve: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val lastReadTime: Int = 0,
@ProtoNumber(2) @JvmField val peerUin: Long = 0L,
@ProtoNumber(3) @JvmField val msgCompleted: Int = 0,
@ProtoNumber(4) @JvmField val msg: List<Msg>? = null,
@ProtoNumber(5) @JvmField val unreadMsgNum: Int = 0,
@ProtoNumber(8) @JvmField val c2cType: Int = 0,
@ProtoNumber(9) @JvmField val serviceType: Int = 0,
@ProtoNumber(10) @JvmField val pbReserve: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
}

View File

@ -1,30 +1,30 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.proto
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import kotlinx.serialization.protobuf.ProtoNumber
import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf
import kotlin.jvm.JvmField
internal class MsgRevokeUserDef : ProtoBuf {
@Serializable
internal class MsgInfoUserDef(
@ProtoId(1) @JvmField val longMessageFlag: Int = 0,
@ProtoId(2) @JvmField val longMsgInfo: List<MsgInfoDef>? = null,
@ProtoId(3) @JvmField val fileUuid: List<String> = listOf()
@ProtoNumber(1) @JvmField val longMessageFlag: Int = 0,
@ProtoNumber(2) @JvmField val longMsgInfo: List<MsgInfoDef>? = null,
@ProtoNumber(3) @JvmField val fileUuid: List<String> = listOf()
) : ProtoBuf {
@Serializable
internal class MsgInfoDef(
@ProtoId(1) @JvmField val msgSeq: Int = 0,
@ProtoId(2) @JvmField val longMsgId: Int = 0,
@ProtoId(3) @JvmField val longMsgNum: Int = 0,
@ProtoId(4) @JvmField val longMsgIndex: Int = 0
@ProtoNumber(1) @JvmField val msgSeq: Int = 0,
@ProtoNumber(2) @JvmField val longMsgId: Int = 0,
@ProtoNumber(3) @JvmField val longMsgNum: Int = 0,
@ProtoNumber(4) @JvmField val longMsgIndex: Int = 0
) : ProtoBuf
}
@Serializable
internal class UinTypeUserDef(
@ProtoId(1) @JvmField val fromUinType: Int = 0,
@ProtoId(2) @JvmField val fromGroupCode: Long = 0L,
@ProtoId(3) @JvmField val fileUuid: List<String> = listOf()
@ProtoNumber(1) @JvmField val fromUinType: Int = 0,
@ProtoNumber(2) @JvmField val fromGroupCode: Long = 0L,
@ProtoNumber(3) @JvmField val fileUuid: List<String> = listOf()
) : ProtoBuf
}

View File

@ -1,7 +1,7 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.proto
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import kotlinx.serialization.protobuf.ProtoNumber
import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf
import kotlin.jvm.JvmField
@ -9,18 +9,18 @@ import kotlin.jvm.JvmField
internal class MsgTransmit : ProtoBuf {
@Serializable
internal class PbMultiMsgItem(
@ProtoId(1) @JvmField val fileName: String = "",
@ProtoId(2) @JvmField val buffer: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val fileName: String = "",
@ProtoNumber(2) @JvmField val buffer: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class PbMultiMsgNew(
@ProtoId(1) @JvmField val msg: List<MsgComm.Msg>? = null
@ProtoNumber(1) @JvmField val msg: List<MsgComm.Msg>? = null
) : ProtoBuf
@Serializable
internal class PbMultiMsgTransmit(
@ProtoId(1) @JvmField val msg: List<MsgComm.Msg>? = null,
@ProtoId(2) @JvmField val pbItemList: List<MsgTransmit.PbMultiMsgItem>? = null
@ProtoNumber(1) @JvmField val msg: List<MsgComm.Msg>? = null,
@ProtoNumber(2) @JvmField val pbItemList: List<MsgTransmit.PbMultiMsgItem>? = null
) : ProtoBuf
}

View File

@ -1,7 +1,7 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.proto
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import kotlinx.serialization.protobuf.ProtoNumber
import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf
import kotlin.jvm.JvmField
@ -10,72 +10,72 @@ import kotlin.jvm.JvmField
internal class MultiMsg : ProtoBuf {
@Serializable
internal class ExternMsg(
@ProtoId(1) @JvmField val channelType: Int = 0
@ProtoNumber(1) @JvmField val channelType: Int = 0
) : ProtoBuf
@Serializable
internal class MultiMsgApplyDownReq(
@ProtoId(1) @JvmField val msgResid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(2) @JvmField val msgType: Int = 0,
@ProtoId(3) @JvmField val srcUin: Long = 0L
@ProtoNumber(1) @JvmField val msgResid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) @JvmField val msgType: Int = 0,
@ProtoNumber(3) @JvmField val srcUin: Long = 0L
) : ProtoBuf
@Serializable
internal class MultiMsgApplyDownRsp(
@ProtoId(1) @JvmField val result: Int = 0,
@ProtoId(2) @JvmField val thumbDownPara: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val msgKey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(4) @JvmField val uint32DownIp: List<Int>? = null,
@ProtoId(5) @JvmField val uint32DownPort: List<Int>? = null,
@ProtoId(6) @JvmField val msgResid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(7) @JvmField val msgExternInfo: ExternMsg? = null,
@ProtoId(8) @JvmField val bytesDownIpV6: List<ByteArray>? = null,
@ProtoId(9) @JvmField val uint32DownV6Port: List<Int>? = null
@ProtoNumber(1) @JvmField val result: Int = 0,
@ProtoNumber(2) @JvmField val thumbDownPara: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val msgKey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(4) @JvmField val uint32DownIp: List<Int>? = null,
@ProtoNumber(5) @JvmField val uint32DownPort: List<Int>? = null,
@ProtoNumber(6) @JvmField val msgResid: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(7) @JvmField val msgExternInfo: ExternMsg? = null,
@ProtoNumber(8) @JvmField val bytesDownIpV6: List<ByteArray>? = null,
@ProtoNumber(9) @JvmField val uint32DownV6Port: List<Int>? = null
) : ProtoBuf
@Serializable
internal class MultiMsgApplyUpReq(
@ProtoId(1) @JvmField val dstUin: Long = 0L,
@ProtoId(2) @JvmField val msgSize: Long = 0L,
@ProtoId(3) @JvmField val msgMd5: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(4) @JvmField val msgType: Int = 0,
@ProtoId(5) @JvmField val applyId: Int = 0
@ProtoNumber(1) @JvmField val dstUin: Long = 0L,
@ProtoNumber(2) @JvmField val msgSize: Long = 0L,
@ProtoNumber(3) @JvmField val msgMd5: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(4) @JvmField val msgType: Int = 0,
@ProtoNumber(5) @JvmField val applyId: Int = 0
) : ProtoBuf
@Serializable
internal class MultiMsgApplyUpRsp(
@ProtoId(1) @JvmField val result: Int = 0,
@ProtoId(2) @JvmField val msgResid: String = "",
@ProtoId(3) @JvmField val msgUkey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(4) @JvmField val uint32UpIp: List<Int> = listOf(),
@ProtoId(5) @JvmField val uint32UpPort: List<Int> = listOf(),
@ProtoId(6) @JvmField val blockSize: Long = 0L,
@ProtoId(7) @JvmField val upOffset: Long = 0L,
@ProtoId(8) @JvmField val applyId: Int = 0,
@ProtoId(9) @JvmField val msgKey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(10) @JvmField val msgSig: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(11) @JvmField val msgExternInfo: ExternMsg? = null,
@ProtoId(12) @JvmField val bytesUpIpV6: List<ByteArray>? = null,
@ProtoId(13) @JvmField val uint32UpV6Port: List<Int>? = null
@ProtoNumber(1) @JvmField val result: Int = 0,
@ProtoNumber(2) @JvmField val msgResid: String = "",
@ProtoNumber(3) @JvmField val msgUkey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(4) @JvmField val uint32UpIp: List<Int> = listOf(),
@ProtoNumber(5) @JvmField val uint32UpPort: List<Int> = listOf(),
@ProtoNumber(6) @JvmField val blockSize: Long = 0L,
@ProtoNumber(7) @JvmField val upOffset: Long = 0L,
@ProtoNumber(8) @JvmField val applyId: Int = 0,
@ProtoNumber(9) @JvmField val msgKey: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(10) @JvmField val msgSig: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(11) @JvmField val msgExternInfo: ExternMsg? = null,
@ProtoNumber(12) @JvmField val bytesUpIpV6: List<ByteArray>? = null,
@ProtoNumber(13) @JvmField val uint32UpV6Port: List<Int>? = null
) : ProtoBuf
@Serializable
internal class ReqBody(
@ProtoId(1) @JvmField val subcmd: Int = 0,
@ProtoId(2) @JvmField val termType: Int = 0,
@ProtoId(3) @JvmField val platformType: Int = 0,
@ProtoId(4) @JvmField val netType: Int = 0,
@ProtoId(5) @JvmField val buildVer: String = "",
@ProtoId(6) @JvmField val multimsgApplyupReq: List<MultiMsg.MultiMsgApplyUpReq>? = null,
@ProtoId(7) @JvmField val multimsgApplydownReq: List<MultiMsg.MultiMsgApplyDownReq>? = null,
@ProtoId(8) @JvmField val buType: Int = 0,
@ProtoId(9) @JvmField val reqChannelType: Int = 0
@ProtoNumber(1) @JvmField val subcmd: Int = 0,
@ProtoNumber(2) @JvmField val termType: Int = 0,
@ProtoNumber(3) @JvmField val platformType: Int = 0,
@ProtoNumber(4) @JvmField val netType: Int = 0,
@ProtoNumber(5) @JvmField val buildVer: String = "",
@ProtoNumber(6) @JvmField val multimsgApplyupReq: List<MultiMsg.MultiMsgApplyUpReq>? = null,
@ProtoNumber(7) @JvmField val multimsgApplydownReq: List<MultiMsg.MultiMsgApplyDownReq>? = null,
@ProtoNumber(8) @JvmField val buType: Int = 0,
@ProtoNumber(9) @JvmField val reqChannelType: Int = 0
) : ProtoBuf
@Serializable
internal class RspBody(
@ProtoId(1) @JvmField val subcmd: Int = 0,
@ProtoId(2) @JvmField val multimsgApplyupRsp: List<MultiMsg.MultiMsgApplyUpRsp>? = null,
@ProtoId(3) @JvmField val multimsgApplydownRsp: List<MultiMsg.MultiMsgApplyDownRsp>? = null
@ProtoNumber(1) @JvmField val subcmd: Int = 0,
@ProtoNumber(2) @JvmField val multimsgApplyupRsp: List<MultiMsg.MultiMsgApplyUpRsp>? = null,
@ProtoNumber(3) @JvmField val multimsgApplydownRsp: List<MultiMsg.MultiMsgApplyDownRsp>? = null
) : ProtoBuf
}

View File

@ -1,14 +1,14 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.proto
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import kotlinx.serialization.protobuf.ProtoNumber
import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf
import kotlin.jvm.JvmField
internal class Oidb0x769 {
@Serializable
internal class RequestBody(
@ProtoId(1) @JvmField val rpt_config_list: List<ConfigSeq>
@ProtoNumber(1) @JvmField val rpt_config_list: List<ConfigSeq>
// @SerialId(2) @JvmField val msg_device_info: DeviceInfo,
// @SerialId(3) @JvmField val str_info: String = "",
// @SerialId(4) @JvmField val province: String,
@ -19,20 +19,20 @@ internal class Oidb0x769 {
@Serializable
internal class QueryUinPackageUsageReq(
@ProtoId(1) @JvmField val type: Int,
@ProtoId(2) @JvmField val uinFileSize: Long = 0
@ProtoNumber(1) @JvmField val type: Int,
@ProtoNumber(2) @JvmField val uinFileSize: Long = 0
) : ProtoBuf
@Serializable
internal class ConfigSeq(
@ProtoId(1) @JvmField val type: Int, // uint
@ProtoId(2) @JvmField val version: Int // uint
@ProtoNumber(1) @JvmField val type: Int, // uint
@ProtoNumber(2) @JvmField val version: Int // uint
) : ProtoBuf
@Serializable
internal class DeviceInfo(
@ProtoId(1) @JvmField val brand: String,
@ProtoId(2) @JvmField val model: String
@ProtoNumber(1) @JvmField val brand: String,
@ProtoNumber(2) @JvmField val model: String
//@SerialId(3) @JvmField val os: OS,
//@SerialId(4) @JvmField val cpu: CPU,
//@SerialId(5) @JvmField val memory: Memory,
@ -43,45 +43,45 @@ internal class Oidb0x769 {
@Serializable
internal class OS(
@ProtoId(1) @JvmField val type: Int = 1,
@ProtoId(2) @JvmField val version: String,
@ProtoId(3) @JvmField val sdk: String,
@ProtoId(4) @JvmField val kernel: String,
@ProtoId(5) @JvmField val rom: String
@ProtoNumber(1) @JvmField val type: Int = 1,
@ProtoNumber(2) @JvmField val version: String,
@ProtoNumber(3) @JvmField val sdk: String,
@ProtoNumber(4) @JvmField val kernel: String,
@ProtoNumber(5) @JvmField val rom: String
) : ProtoBuf
@Serializable
internal class Camera(
@ProtoId(1) @JvmField val primary: Long,
@ProtoId(2) @JvmField val secondary: Long,
@ProtoId(3) @JvmField val flag: Boolean
@ProtoNumber(1) @JvmField val primary: Long,
@ProtoNumber(2) @JvmField val secondary: Long,
@ProtoNumber(3) @JvmField val flag: Boolean
) : ProtoBuf
@Serializable
internal class CPU(
@ProtoId(1) @JvmField val model: String,
@ProtoId(2) @JvmField val frequency: Int,
@ProtoId(3) @JvmField val cores: Int
@ProtoNumber(1) @JvmField val model: String,
@ProtoNumber(2) @JvmField val frequency: Int,
@ProtoNumber(3) @JvmField val cores: Int
) : ProtoBuf
@Serializable
internal class Memory(
@ProtoId(1) @JvmField val total: Int,
@ProtoId(2) @JvmField val process: Int
@ProtoNumber(1) @JvmField val total: Int,
@ProtoNumber(2) @JvmField val process: Int
) : ProtoBuf
@Serializable
internal class Screen(
@ProtoId(1) @JvmField val model: String,
@ProtoId(2) @JvmField val width: Int,
@ProtoId(3) @JvmField val height: Int,
@ProtoId(4) @JvmField val dpi: Int,
@ProtoId(5) @JvmField val multiTouch: Boolean
@ProtoNumber(1) @JvmField val model: String,
@ProtoNumber(2) @JvmField val width: Int,
@ProtoNumber(3) @JvmField val height: Int,
@ProtoNumber(4) @JvmField val dpi: Int,
@ProtoNumber(5) @JvmField val multiTouch: Boolean
) : ProtoBuf
@Serializable
internal class Storage(
@ProtoId(1) @JvmField val builtin: Int,
@ProtoId(2) @JvmField val external: Int
@ProtoNumber(1) @JvmField val builtin: Int,
@ProtoNumber(2) @JvmField val external: Int
) : ProtoBuf
}

View File

@ -1,7 +1,7 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.proto
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import kotlinx.serialization.protobuf.ProtoNumber
import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf
import kotlin.jvm.JvmField
@ -10,11 +10,11 @@ import kotlin.jvm.JvmField
internal class MsgOnlinePush {
@Serializable
internal class PbPushMsg(
@ProtoId(1) @JvmField val msg: MsgComm.Msg,
@ProtoId(2) @JvmField val svrip: Int = 0,
@ProtoId(3) @JvmField val pushToken: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(4) @JvmField val pingFlag: Int = 0,
@ProtoId(9) @JvmField val generalFlag: Int = 0
@ProtoNumber(1) @JvmField val msg: MsgComm.Msg,
@ProtoNumber(2) @JvmField val svrip: Int = 0,
@ProtoNumber(3) @JvmField val pushToken: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(4) @JvmField val pingFlag: Int = 0,
@ProtoNumber(9) @JvmField val generalFlag: Int = 0
) : ProtoBuf
}
@ -22,24 +22,24 @@ internal class MsgOnlinePush {
internal class OnlinePushTrans : ProtoBuf {
@Serializable
internal class ExtGroupKeyInfo(
@ProtoId(1) @JvmField val curMaxSeq: Int = 0,
@ProtoId(2) @JvmField val curTime: Long = 0L
@ProtoNumber(1) @JvmField val curMaxSeq: Int = 0,
@ProtoNumber(2) @JvmField val curTime: Long = 0L
) : ProtoBuf
@Serializable
internal class PbMsgInfo(
@ProtoId(1) @JvmField val fromUin: Long = 0L,
@ProtoId(2) @JvmField val toUin: Long = 0L,
@ProtoId(3) @JvmField val msgType: Int = 0,
@ProtoId(4) @JvmField val msgSubtype: Int = 0,
@ProtoId(5) @JvmField val msgSeq: Int = 0,
@ProtoId(6) @JvmField val msgUid: Long = 0L,
@ProtoId(7) @JvmField val msgTime: Int = 0,
@ProtoId(8) @JvmField val realMsgTime: Int = 0,
@ProtoId(9) @JvmField val nickName: String = "",
@ProtoId(10) @JvmField val msgData: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(11) @JvmField val svrIp: Int = 0,
@ProtoId(12) @JvmField val extGroupKeyInfo: ExtGroupKeyInfo? = null,
@ProtoId(17) @JvmField val generalFlag: Int = 0
@ProtoNumber(1) @JvmField val fromUin: Long = 0L,
@ProtoNumber(2) @JvmField val toUin: Long = 0L,
@ProtoNumber(3) @JvmField val msgType: Int = 0,
@ProtoNumber(4) @JvmField val msgSubtype: Int = 0,
@ProtoNumber(5) @JvmField val msgSeq: Int = 0,
@ProtoNumber(6) @JvmField val msgUid: Long = 0L,
@ProtoNumber(7) @JvmField val msgTime: Int = 0,
@ProtoNumber(8) @JvmField val realMsgTime: Int = 0,
@ProtoNumber(9) @JvmField val nickName: String = "",
@ProtoNumber(10) @JvmField val msgData: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(11) @JvmField val svrIp: Int = 0,
@ProtoNumber(12) @JvmField val extGroupKeyInfo: ExtGroupKeyInfo? = null,
@ProtoNumber(17) @JvmField val generalFlag: Int = 0
) : ProtoBuf
}

View File

@ -1,7 +1,7 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.proto
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import kotlinx.serialization.protobuf.ProtoNumber
import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf
import kotlin.jvm.JvmField
@ -9,68 +9,68 @@ import kotlin.jvm.JvmField
internal class Generalflags : ProtoBuf {
@Serializable
internal class ResvAttr(
@ProtoId(1) @JvmField val globalGroupLevel: Int = 0,
@ProtoId(2) @JvmField val nearbyCharmLevel: Int = 0,
@ProtoId(3) @JvmField val redbagMsgSenderUin: Long = 0L,
@ProtoId(4) @JvmField val titleId: Int = 0,
@ProtoId(5) @JvmField val robotMsgFlag: Int = 0,
@ProtoId(6) @JvmField val wantGiftSenderUin: Long = 0L,
@ProtoId(7) @JvmField val stickerX: Float = 0.0f,
@ProtoId(8) @JvmField val stickerY: Float = 0.0f,
@ProtoId(9) @JvmField val stickerWidth: Float = 0.0f,
@ProtoId(10) @JvmField val stickerHeight: Float = 0.0f,
@ProtoId(11) @JvmField val stickerRotate: Int = 0,
@ProtoId(12) @JvmField val stickerHostMsgseq: Long = 0L,
@ProtoId(13) @JvmField val stickerHostMsguid: Long = 0L,
@ProtoId(14) @JvmField val stickerHostTime: Long = 0L,
@ProtoId(15) @JvmField val mobileCustomFont: Int = 0,
@ProtoId(16) @JvmField val tailKey: Int = 0,
@ProtoId(17) @JvmField val showTailFlag: Int = 0,
@ProtoId(18) @JvmField val doutuMsgType: Int = 0,
@ProtoId(19) @JvmField val doutuCombo: Int = 0,
@ProtoId(20) @JvmField val customFeatureid: Int = 0,
@ProtoId(21) @JvmField val goldenMsgType: Int = 0,
@ProtoId(22) @JvmField val goldenMsgInfo: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(23) @JvmField val botMessageClassId: Int = 0,
@ProtoId(24) @JvmField val subscriptionUrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(25) @JvmField val pendantDiyId: Int = 0,
@ProtoId(26) @JvmField val timedMessage: Int = 0,
@ProtoId(27) @JvmField val holidayFlag: Int = 0,
@ProtoId(29) @JvmField val kplInfo: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(30) @JvmField val faceId: Int = 0,
@ProtoId(31) @JvmField val diyFontTimestamp: Int = 0,
@ProtoId(32) @JvmField val redEnvelopeType: Int = 0,
@ProtoId(33) @JvmField val shortVideoId: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(34) @JvmField val reqFontEffectId: Int = 0,
@ProtoId(35) @JvmField val loveLanguageFlag: Int = 0,
@ProtoId(36) @JvmField val aioSyncToStoryFlag: Int = 0,
@ProtoId(37) @JvmField val uploadImageToQzoneFlag: Int = 0,
@ProtoId(39) @JvmField val uploadImageToQzoneParam: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(40) @JvmField val groupConfessSig: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(41) @JvmField val subfontId: Long = 0L,
@ProtoId(42) @JvmField val msgFlagType: Int = 0,
@ProtoId(43) @JvmField val uint32CustomFeatureid: List<Int>? = null,
@ProtoId(44) @JvmField val richCardNameVer: Int = 0,
@ProtoId(47) @JvmField val msgInfoFlag: Int = 0,
@ProtoId(48) @JvmField val serviceMsgType: Int = 0,
@ProtoId(49) @JvmField val serviceMsgRemindType: Int = 0,
@ProtoId(50) @JvmField val serviceMsgName: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(51) @JvmField val vipType: Int = 0,
@ProtoId(52) @JvmField val vipLevel: Int = 0,
@ProtoId(53) @JvmField val pbPttWaveform: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(54) @JvmField val userBigclubLevel: Int = 0,
@ProtoId(55) @JvmField val userBigclubFlag: Int = 0,
@ProtoId(56) @JvmField val nameplate: Int = 0,
@ProtoId(57) @JvmField val autoReply: Int = 0,
@ProtoId(58) @JvmField val reqIsBigclubHidden: Int = 0,
@ProtoId(59) @JvmField val showInMsgList: Int = 0,
@ProtoId(60) @JvmField val oacMsgExtend: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(61) @JvmField val groupMemberFlagEx2: Int = 0,
@ProtoId(62) @JvmField val groupRingtoneId: Int = 0,
@ProtoId(63) @JvmField val robotGeneralTrans: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(64) @JvmField val troopPobingTemplate: Int = 0,
@ProtoId(65) @JvmField val hudongMark: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(66) @JvmField val groupInfoFlagEx3: Int = 0
@ProtoNumber(1) @JvmField val globalGroupLevel: Int = 0,
@ProtoNumber(2) @JvmField val nearbyCharmLevel: Int = 0,
@ProtoNumber(3) @JvmField val redbagMsgSenderUin: Long = 0L,
@ProtoNumber(4) @JvmField val titleId: Int = 0,
@ProtoNumber(5) @JvmField val robotMsgFlag: Int = 0,
@ProtoNumber(6) @JvmField val wantGiftSenderUin: Long = 0L,
@ProtoNumber(7) @JvmField val stickerX: Float = 0.0f,
@ProtoNumber(8) @JvmField val stickerY: Float = 0.0f,
@ProtoNumber(9) @JvmField val stickerWidth: Float = 0.0f,
@ProtoNumber(10) @JvmField val stickerHeight: Float = 0.0f,
@ProtoNumber(11) @JvmField val stickerRotate: Int = 0,
@ProtoNumber(12) @JvmField val stickerHostMsgseq: Long = 0L,
@ProtoNumber(13) @JvmField val stickerHostMsguid: Long = 0L,
@ProtoNumber(14) @JvmField val stickerHostTime: Long = 0L,
@ProtoNumber(15) @JvmField val mobileCustomFont: Int = 0,
@ProtoNumber(16) @JvmField val tailKey: Int = 0,
@ProtoNumber(17) @JvmField val showTailFlag: Int = 0,
@ProtoNumber(18) @JvmField val doutuMsgType: Int = 0,
@ProtoNumber(19) @JvmField val doutuCombo: Int = 0,
@ProtoNumber(20) @JvmField val customFeatureid: Int = 0,
@ProtoNumber(21) @JvmField val goldenMsgType: Int = 0,
@ProtoNumber(22) @JvmField val goldenMsgInfo: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(23) @JvmField val botMessageClassId: Int = 0,
@ProtoNumber(24) @JvmField val subscriptionUrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(25) @JvmField val pendantDiyId: Int = 0,
@ProtoNumber(26) @JvmField val timedMessage: Int = 0,
@ProtoNumber(27) @JvmField val holidayFlag: Int = 0,
@ProtoNumber(29) @JvmField val kplInfo: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(30) @JvmField val faceId: Int = 0,
@ProtoNumber(31) @JvmField val diyFontTimestamp: Int = 0,
@ProtoNumber(32) @JvmField val redEnvelopeType: Int = 0,
@ProtoNumber(33) @JvmField val shortVideoId: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(34) @JvmField val reqFontEffectId: Int = 0,
@ProtoNumber(35) @JvmField val loveLanguageFlag: Int = 0,
@ProtoNumber(36) @JvmField val aioSyncToStoryFlag: Int = 0,
@ProtoNumber(37) @JvmField val uploadImageToQzoneFlag: Int = 0,
@ProtoNumber(39) @JvmField val uploadImageToQzoneParam: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(40) @JvmField val groupConfessSig: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(41) @JvmField val subfontId: Long = 0L,
@ProtoNumber(42) @JvmField val msgFlagType: Int = 0,
@ProtoNumber(43) @JvmField val uint32CustomFeatureid: List<Int>? = null,
@ProtoNumber(44) @JvmField val richCardNameVer: Int = 0,
@ProtoNumber(47) @JvmField val msgInfoFlag: Int = 0,
@ProtoNumber(48) @JvmField val serviceMsgType: Int = 0,
@ProtoNumber(49) @JvmField val serviceMsgRemindType: Int = 0,
@ProtoNumber(50) @JvmField val serviceMsgName: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(51) @JvmField val vipType: Int = 0,
@ProtoNumber(52) @JvmField val vipLevel: Int = 0,
@ProtoNumber(53) @JvmField val pbPttWaveform: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(54) @JvmField val userBigclubLevel: Int = 0,
@ProtoNumber(55) @JvmField val userBigclubFlag: Int = 0,
@ProtoNumber(56) @JvmField val nameplate: Int = 0,
@ProtoNumber(57) @JvmField val autoReply: Int = 0,
@ProtoNumber(58) @JvmField val reqIsBigclubHidden: Int = 0,
@ProtoNumber(59) @JvmField val showInMsgList: Int = 0,
@ProtoNumber(60) @JvmField val oacMsgExtend: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(61) @JvmField val groupMemberFlagEx2: Int = 0,
@ProtoNumber(62) @JvmField val groupRingtoneId: Int = 0,
@ProtoNumber(63) @JvmField val robotGeneralTrans: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(64) @JvmField val troopPobingTemplate: Int = 0,
@ProtoNumber(65) @JvmField val hudongMark: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(66) @JvmField val groupInfoFlagEx3: Int = 0
) : ProtoBuf
}
@ -78,27 +78,27 @@ internal class ResvAttr(
internal class ResvAttrForGiftMsg : ProtoBuf {
@Serializable
internal class ActivityGiftInfo(
@ProtoId(1) @JvmField val isActivityGift: Int = 0,
@ProtoId(2) @JvmField val textColor: String = "",
@ProtoId(3) @JvmField val text: String = "",
@ProtoId(4) @JvmField val url: String = ""
@ProtoNumber(1) @JvmField val isActivityGift: Int = 0,
@ProtoNumber(2) @JvmField val textColor: String = "",
@ProtoNumber(3) @JvmField val text: String = "",
@ProtoNumber(4) @JvmField val url: String = ""
) : ProtoBuf
@Serializable
internal class InteractGift(
@ProtoId(1) @JvmField val interactId: ByteArray = EMPTY_BYTE_ARRAY
@ProtoNumber(1) @JvmField val interactId: ByteArray = EMPTY_BYTE_ARRAY
) : ProtoBuf
@Serializable
internal class ResvAttr(
@ProtoId(1) @JvmField val int32SendScore: Int = 0,
@ProtoId(2) @JvmField val int32RecvScore: Int = 0,
@ProtoId(3) @JvmField val charmHeroism: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(4) @JvmField val buttonFlag: Int = 0,
@ProtoId(5) @JvmField val objColor: Int = 0,
@ProtoId(6) @JvmField val animationType: Int = 0,
@ProtoId(7) @JvmField val msgInteractGift: InteractGift? = null,
@ProtoId(8) @JvmField val activityGiftInfo: ActivityGiftInfo? = null
@ProtoNumber(1) @JvmField val int32SendScore: Int = 0,
@ProtoNumber(2) @JvmField val int32RecvScore: Int = 0,
@ProtoNumber(3) @JvmField val charmHeroism: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(4) @JvmField val buttonFlag: Int = 0,
@ProtoNumber(5) @JvmField val objColor: Int = 0,
@ProtoNumber(6) @JvmField val animationType: Int = 0,
@ProtoNumber(7) @JvmField val msgInteractGift: InteractGift? = null,
@ProtoNumber(8) @JvmField val activityGiftInfo: ActivityGiftInfo? = null
) : ProtoBuf
}
@ -106,9 +106,9 @@ internal class ResvAttr(
internal class SourceMsg : ProtoBuf {
@Serializable
internal class ResvAttr(
@ProtoId(1) @JvmField val richMsg2: ByteArray? = null,
@ProtoId(2) @JvmField val oriMsgtype: Int? = null,
@ProtoId(3) @JvmField val origUids: Long? = null // 原来是 list
@ProtoNumber(1) @JvmField val richMsg2: ByteArray? = null,
@ProtoNumber(2) @JvmField val oriMsgtype: Int? = null,
@ProtoNumber(3) @JvmField val origUids: Long? = null // 原来是 list
) : ProtoBuf
}
@ -116,17 +116,17 @@ internal class ResvAttr(
internal class VideoFile : ProtoBuf {
@Serializable
internal class ResvAttr(
@ProtoId(1) @JvmField val hotvideoIcon: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(2) @JvmField val hotvideoTitle: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(3) @JvmField val hotvideoUrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(4) @JvmField val hotvideoIconSub: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(5) @JvmField val specialVideoType: Int = 0,
@ProtoId(6) @JvmField val dynamicText: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(7) @JvmField val msgTailType: Int = 0,
@ProtoId(8) @JvmField val redEnvelopeType: Int = 0,
@ProtoId(9) @JvmField val shortVideoId: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(10) @JvmField val animojiModelId: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(11) @JvmField val longVideoKandianType: Int = 0,
@ProtoId(12) @JvmField val source: Int = 0
@ProtoNumber(1) @JvmField val hotvideoIcon: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(2) @JvmField val hotvideoTitle: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(3) @JvmField val hotvideoUrl: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(4) @JvmField val hotvideoIconSub: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(5) @JvmField val specialVideoType: Int = 0,
@ProtoNumber(6) @JvmField val dynamicText: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(7) @JvmField val msgTailType: Int = 0,
@ProtoNumber(8) @JvmField val redEnvelopeType: Int = 0,
@ProtoNumber(9) @JvmField val shortVideoId: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(10) @JvmField val animojiModelId: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(11) @JvmField val longVideoKandianType: Int = 0,
@ProtoNumber(12) @JvmField val source: Int = 0
) : ProtoBuf
}

View File

@ -1,30 +1,30 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.proto
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import kotlinx.serialization.protobuf.ProtoNumber
import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf
import kotlin.jvm.JvmField
internal class StatSvcGetOnline {
@Serializable
internal class Instance(
@ProtoId(1) @JvmField val instanceId: Int = 0,
@ProtoId(2) @JvmField val clientType: Int = 0
@ProtoNumber(1) @JvmField val instanceId: Int = 0,
@ProtoNumber(2) @JvmField val clientType: Int = 0
) : ProtoBuf
@Serializable
internal class ReqBody(
@ProtoId(1) @JvmField val uin: Long = 0L,
@ProtoId(2) @JvmField val appid: Int = 0
@ProtoNumber(1) @JvmField val uin: Long = 0L,
@ProtoNumber(2) @JvmField val appid: Int = 0
) : ProtoBuf
@Serializable
internal class RspBody(
@ProtoId(1) @JvmField val errorCode: Int = 0,
@ProtoId(2) @JvmField val errorMsg: String = "",
@ProtoId(3) @JvmField val uin: Long = 0L,
@ProtoId(4) @JvmField val appid: Int = 0,
@ProtoId(5) @JvmField val timeInterval: Int = 0,
@ProtoId(6) @JvmField val msgInstances: List<StatSvcGetOnline.Instance>? = null
@ProtoNumber(1) @JvmField val errorCode: Int = 0,
@ProtoNumber(2) @JvmField val errorMsg: String = "",
@ProtoNumber(3) @JvmField val uin: Long = 0L,
@ProtoNumber(4) @JvmField val appid: Int = 0,
@ProtoNumber(5) @JvmField val timeInterval: Int = 0,
@ProtoNumber(6) @JvmField val msgInstances: List<StatSvcGetOnline.Instance>? = null
) : ProtoBuf
}

View File

@ -1,7 +1,7 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.proto
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import kotlinx.serialization.protobuf.ProtoNumber
import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf
import kotlin.jvm.JvmField
@ -9,289 +9,289 @@ import kotlin.jvm.JvmField
internal class QPayReminderMsg : ProtoBuf {
@Serializable
internal class GetInfoReq(
@ProtoId(1) @JvmField val scene: String = "",
@ProtoId(2) @JvmField val subCmd: String = "",
@ProtoId(3) @JvmField val infoDate: String = ""
@ProtoNumber(1) @JvmField val scene: String = "",
@ProtoNumber(2) @JvmField val subCmd: String = "",
@ProtoNumber(3) @JvmField val infoDate: String = ""
) : ProtoBuf
@Serializable
internal class GetInfoRsp(
@ProtoId(1) @JvmField val resultCode: Int = 0,
@ProtoId(2) @JvmField val resultInfo: String = "",
@ProtoId(3) @JvmField val urgency: Int = 0,
@ProtoId(4) @JvmField val templateNo: Int = 0,
@ProtoId(5) @JvmField val content: String = "",
@ProtoId(6) @JvmField val infoDate: String = ""
@ProtoNumber(1) @JvmField val resultCode: Int = 0,
@ProtoNumber(2) @JvmField val resultInfo: String = "",
@ProtoNumber(3) @JvmField val urgency: Int = 0,
@ProtoNumber(4) @JvmField val templateNo: Int = 0,
@ProtoNumber(5) @JvmField val content: String = "",
@ProtoNumber(6) @JvmField val infoDate: String = ""
) : ProtoBuf
}
internal class Structmsg : ProtoBuf {
@Serializable
internal class AddFrdSNInfo(
@ProtoId(1) @JvmField val notSeeDynamic: Int = 0,
@ProtoId(2) @JvmField val setSn: Int = 0
@ProtoNumber(1) @JvmField val notSeeDynamic: Int = 0,
@ProtoNumber(2) @JvmField val setSn: Int = 0
) : ProtoBuf
@Serializable
internal class FlagInfo(
@ProtoId(1) @JvmField val grpMsgKickAdmin: Int = 0,
@ProtoId(2) @JvmField val grpMsgHiddenGrp: Int = 0,
@ProtoId(3) @JvmField val grpMsgWordingDown: Int = 0,
@ProtoId(4) @JvmField val frdMsgGetBusiCard: Int = 0,
@ProtoId(5) @JvmField val grpMsgGetOfficialAccount: Int = 0,
@ProtoId(6) @JvmField val grpMsgGetPayInGroup: Int = 0,
@ProtoId(7) @JvmField val frdMsgDiscuss2ManyChat: Int = 0,
@ProtoId(8) @JvmField val grpMsgNotAllowJoinGrpInviteNotFrd: Int = 0,
@ProtoId(9) @JvmField val frdMsgNeedWaitingMsg: Int = 0,
@ProtoId(10) @JvmField val frdMsgUint32NeedAllUnreadMsg: Int = 0,
@ProtoId(11) @JvmField val grpMsgNeedAutoAdminWording: Int = 0,
@ProtoId(12) @JvmField val grpMsgGetTransferGroupMsgFlag: Int = 0,
@ProtoId(13) @JvmField val grpMsgGetQuitPayGroupMsgFlag: Int = 0,
@ProtoId(14) @JvmField val grpMsgSupportInviteAutoJoin: Int = 0,
@ProtoId(15) @JvmField val grpMsgMaskInviteAutoJoin: Int = 0,
@ProtoId(16) @JvmField val grpMsgGetDisbandedByAdmin: Int = 0,
@ProtoId(17) @JvmField val grpMsgGetC2cInviteJoinGroup: Int = 0
@ProtoNumber(1) @JvmField val grpMsgKickAdmin: Int = 0,
@ProtoNumber(2) @JvmField val grpMsgHiddenGrp: Int = 0,
@ProtoNumber(3) @JvmField val grpMsgWordingDown: Int = 0,
@ProtoNumber(4) @JvmField val frdMsgGetBusiCard: Int = 0,
@ProtoNumber(5) @JvmField val grpMsgGetOfficialAccount: Int = 0,
@ProtoNumber(6) @JvmField val grpMsgGetPayInGroup: Int = 0,
@ProtoNumber(7) @JvmField val frdMsgDiscuss2ManyChat: Int = 0,
@ProtoNumber(8) @JvmField val grpMsgNotAllowJoinGrpInviteNotFrd: Int = 0,
@ProtoNumber(9) @JvmField val frdMsgNeedWaitingMsg: Int = 0,
@ProtoNumber(10) @JvmField val frdMsgUint32NeedAllUnreadMsg: Int = 0,
@ProtoNumber(11) @JvmField val grpMsgNeedAutoAdminWording: Int = 0,
@ProtoNumber(12) @JvmField val grpMsgGetTransferGroupMsgFlag: Int = 0,
@ProtoNumber(13) @JvmField val grpMsgGetQuitPayGroupMsgFlag: Int = 0,
@ProtoNumber(14) @JvmField val grpMsgSupportInviteAutoJoin: Int = 0,
@ProtoNumber(15) @JvmField val grpMsgMaskInviteAutoJoin: Int = 0,
@ProtoNumber(16) @JvmField val grpMsgGetDisbandedByAdmin: Int = 0,
@ProtoNumber(17) @JvmField val grpMsgGetC2cInviteJoinGroup: Int = 0
) : ProtoBuf
@Serializable
internal class FriendInfo(
@ProtoId(1) @JvmField val msgJointFriend: String = "",
@ProtoId(2) @JvmField val msgBlacklist: String = ""
@ProtoNumber(1) @JvmField val msgJointFriend: String = "",
@ProtoNumber(2) @JvmField val msgBlacklist: String = ""
) : ProtoBuf
@Serializable
internal class GroupInfo(
@ProtoId(1) @JvmField val groupAuthType: Int = 0,
@ProtoId(2) @JvmField val displayAction: Int = 0,
@ProtoId(3) @JvmField val msgAlert: String = "",
@ProtoId(4) @JvmField val msgDetailAlert: String = "",
@ProtoId(5) @JvmField val msgOtherAdminDone: String = "",
@ProtoId(6) @JvmField val appPrivilegeFlag: Int = 0
@ProtoNumber(1) @JvmField val groupAuthType: Int = 0,
@ProtoNumber(2) @JvmField val displayAction: Int = 0,
@ProtoNumber(3) @JvmField val msgAlert: String = "",
@ProtoNumber(4) @JvmField val msgDetailAlert: String = "",
@ProtoNumber(5) @JvmField val msgOtherAdminDone: String = "",
@ProtoNumber(6) @JvmField val appPrivilegeFlag: Int = 0
) : ProtoBuf
@Serializable
internal class MsgInviteExt(
@ProtoId(1) @JvmField val srcType: Int = 0,
@ProtoId(2) @JvmField val srcCode: Long = 0L,
@ProtoId(3) @JvmField val waitState: Int = 0
@ProtoNumber(1) @JvmField val srcType: Int = 0,
@ProtoNumber(2) @JvmField val srcCode: Long = 0L,
@ProtoNumber(3) @JvmField val waitState: Int = 0
) : ProtoBuf
@Serializable
internal class MsgPayGroupExt(
@ProtoId(1) @JvmField val joinGrpTime: Long = 0L,
@ProtoId(2) @JvmField val quitGrpTime: Long = 0L
@ProtoNumber(1) @JvmField val joinGrpTime: Long = 0L,
@ProtoNumber(2) @JvmField val quitGrpTime: Long = 0L
) : ProtoBuf
@Serializable
internal class ReqNextSystemMsg(
@ProtoId(1) @JvmField val msgNum: Int = 0,
@ProtoId(2) @JvmField val followingFriendSeq: Long = 0L,
@ProtoId(3) @JvmField val followingGroupSeq: Long = 0L,
@ProtoId(4) @JvmField val checktype: Int /* enum */ = 1,
@ProtoId(5) @JvmField val flag: FlagInfo? = null,
@ProtoId(6) @JvmField val language: Int = 0,
@ProtoId(7) @JvmField val version: Int = 0,
@ProtoId(8) @JvmField val friendMsgTypeFlag: Long = 0L
@ProtoNumber(1) @JvmField val msgNum: Int = 0,
@ProtoNumber(2) @JvmField val followingFriendSeq: Long = 0L,
@ProtoNumber(3) @JvmField val followingGroupSeq: Long = 0L,
@ProtoNumber(4) @JvmField val checktype: Int /* enum */ = 1,
@ProtoNumber(5) @JvmField val flag: FlagInfo? = null,
@ProtoNumber(6) @JvmField val language: Int = 0,
@ProtoNumber(7) @JvmField val version: Int = 0,
@ProtoNumber(8) @JvmField val friendMsgTypeFlag: Long = 0L
) : ProtoBuf
@Serializable
internal class ReqSystemMsg(
@ProtoId(1) @JvmField val msgNum: Int = 0,
@ProtoId(2) @JvmField val latestFriendSeq: Long = 0L,
@ProtoId(3) @JvmField val latestGroupSeq: Long = 0L,
@ProtoId(4) @JvmField val version: Int = 0,
@ProtoId(5) @JvmField val language: Int = 0
@ProtoNumber(1) @JvmField val msgNum: Int = 0,
@ProtoNumber(2) @JvmField val latestFriendSeq: Long = 0L,
@ProtoNumber(3) @JvmField val latestGroupSeq: Long = 0L,
@ProtoNumber(4) @JvmField val version: Int = 0,
@ProtoNumber(5) @JvmField val language: Int = 0
) : ProtoBuf
@Serializable
internal class ReqSystemMsgAction(
@ProtoId(1) @JvmField val msgType: Int /* enum */ = 1,
@ProtoId(2) @JvmField val msgSeq: Long = 0L,
@ProtoId(3) @JvmField val reqUin: Long = 0L,
@ProtoId(4) @JvmField val subType: Int = 0,
@ProtoId(5) @JvmField val srcId: Int = 0,
@ProtoId(6) @JvmField val subSrcId: Int = 0,
@ProtoId(7) @JvmField val groupMsgType: Int = 0,
@ProtoId(8) @JvmField val actionInfo: SystemMsgActionInfo? = null,
@ProtoId(9) @JvmField val language: Int = 0
@ProtoNumber(1) @JvmField val msgType: Int /* enum */ = 1,
@ProtoNumber(2) @JvmField val msgSeq: Long = 0L,
@ProtoNumber(3) @JvmField val reqUin: Long = 0L,
@ProtoNumber(4) @JvmField val subType: Int = 0,
@ProtoNumber(5) @JvmField val srcId: Int = 0,
@ProtoNumber(6) @JvmField val subSrcId: Int = 0,
@ProtoNumber(7) @JvmField val groupMsgType: Int = 0,
@ProtoNumber(8) @JvmField val actionInfo: SystemMsgActionInfo? = null,
@ProtoNumber(9) @JvmField val language: Int = 0
) : ProtoBuf
@Serializable
internal class ReqSystemMsgNew(
@ProtoId(1) @JvmField val msgNum: Int = 0,
@ProtoId(2) @JvmField val latestFriendSeq: Long = 0L,
@ProtoId(3) @JvmField val latestGroupSeq: Long = 0L,
@ProtoId(4) @JvmField val version: Int = 0,
@ProtoId(5) @JvmField val checktype: Int /* enum */ = 1,
@ProtoId(6) @JvmField val flag: FlagInfo? = null,
@ProtoId(7) @JvmField val language: Int = 0,
@ProtoId(8) @JvmField val isGetFrdRibbon: Boolean = true,
@ProtoId(9) @JvmField val isGetGrpRibbon: Boolean = true,
@ProtoId(10) @JvmField val friendMsgTypeFlag: Long = 0L
@ProtoNumber(1) @JvmField val msgNum: Int = 0,
@ProtoNumber(2) @JvmField val latestFriendSeq: Long = 0L,
@ProtoNumber(3) @JvmField val latestGroupSeq: Long = 0L,
@ProtoNumber(4) @JvmField val version: Int = 0,
@ProtoNumber(5) @JvmField val checktype: Int /* enum */ = 1,
@ProtoNumber(6) @JvmField val flag: FlagInfo? = null,
@ProtoNumber(7) @JvmField val language: Int = 0,
@ProtoNumber(8) @JvmField val isGetFrdRibbon: Boolean = true,
@ProtoNumber(9) @JvmField val isGetGrpRibbon: Boolean = true,
@ProtoNumber(10) @JvmField val friendMsgTypeFlag: Long = 0L
) : ProtoBuf
@Serializable
internal class ReqSystemMsgRead(
@ProtoId(1) @JvmField val latestFriendSeq: Long = 0L,
@ProtoId(2) @JvmField val latestGroupSeq: Long = 0L,
@ProtoId(3) @JvmField val type: Int = 0,
@ProtoId(4) @JvmField val checktype: Int /* enum */ = 1
@ProtoNumber(1) @JvmField val latestFriendSeq: Long = 0L,
@ProtoNumber(2) @JvmField val latestGroupSeq: Long = 0L,
@ProtoNumber(3) @JvmField val type: Int = 0,
@ProtoNumber(4) @JvmField val checktype: Int /* enum */ = 1
) : ProtoBuf
@Serializable
internal class RspHead(
@ProtoId(1) @JvmField val result: Int = 0,
@ProtoId(2) @JvmField val msgFail: String = ""
@ProtoNumber(1) @JvmField val result: Int = 0,
@ProtoNumber(2) @JvmField val msgFail: String = ""
) : ProtoBuf
@Serializable
internal class RspNextSystemMsg(
@ProtoId(1) @JvmField val head: RspHead? = null,
@ProtoId(2) @JvmField val msgs: List<StructMsg>? = null,
@ProtoId(3) @JvmField val followingFriendSeq: Long = 0L,
@ProtoId(4) @JvmField val followingGroupSeq: Long = 0L,
@ProtoId(5) @JvmField val checktype: Int /* enum */ = 1,
@ProtoId(100) @JvmField val gameNick: String = "",
@ProtoId(101) @JvmField val undecidForQim: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(102) @JvmField val unReadCount3: Int = 0
@ProtoNumber(1) @JvmField val head: RspHead? = null,
@ProtoNumber(2) @JvmField val msgs: List<StructMsg>? = null,
@ProtoNumber(3) @JvmField val followingFriendSeq: Long = 0L,
@ProtoNumber(4) @JvmField val followingGroupSeq: Long = 0L,
@ProtoNumber(5) @JvmField val checktype: Int /* enum */ = 1,
@ProtoNumber(100) @JvmField val gameNick: String = "",
@ProtoNumber(101) @JvmField val undecidForQim: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(102) @JvmField val unReadCount3: Int = 0
) : ProtoBuf
@Serializable
internal class RspSystemMsg(
@ProtoId(1) @JvmField val head: RspHead? = null,
@ProtoId(2) @JvmField val msgs: List<StructMsg>? = null,
@ProtoId(3) @JvmField val unreadCount: Int = 0,
@ProtoId(4) @JvmField val latestFriendSeq: Long = 0L,
@ProtoId(5) @JvmField val latestGroupSeq: Long = 0L,
@ProtoId(6) @JvmField val followingFriendSeq: Long = 0L,
@ProtoId(7) @JvmField val followingGroupSeq: Long = 0L,
@ProtoId(8) @JvmField val msgDisplay: String = ""
@ProtoNumber(1) @JvmField val head: RspHead? = null,
@ProtoNumber(2) @JvmField val msgs: List<StructMsg>? = null,
@ProtoNumber(3) @JvmField val unreadCount: Int = 0,
@ProtoNumber(4) @JvmField val latestFriendSeq: Long = 0L,
@ProtoNumber(5) @JvmField val latestGroupSeq: Long = 0L,
@ProtoNumber(6) @JvmField val followingFriendSeq: Long = 0L,
@ProtoNumber(7) @JvmField val followingGroupSeq: Long = 0L,
@ProtoNumber(8) @JvmField val msgDisplay: String = ""
) : ProtoBuf
@Serializable
internal class RspSystemMsgAction(
@ProtoId(1) @JvmField val head: RspHead? = null,
@ProtoId(2) @JvmField val msgDetail: String = "",
@ProtoId(3) @JvmField val type: Int = 0,
@ProtoId(5) @JvmField val msgInvalidDecided: String = "",
@ProtoId(6) @JvmField val remarkResult: Int = 0
@ProtoNumber(1) @JvmField val head: RspHead? = null,
@ProtoNumber(2) @JvmField val msgDetail: String = "",
@ProtoNumber(3) @JvmField val type: Int = 0,
@ProtoNumber(5) @JvmField val msgInvalidDecided: String = "",
@ProtoNumber(6) @JvmField val remarkResult: Int = 0
) : ProtoBuf
@Serializable
internal class RspSystemMsgNew(
@ProtoId(1) @JvmField val head: RspHead? = null,
@ProtoId(2) @JvmField val unreadFriendCount: Int = 0,
@ProtoId(3) @JvmField val unreadGroupCount: Int = 0,
@ProtoId(4) @JvmField val latestFriendSeq: Long = 0L,
@ProtoId(5) @JvmField val latestGroupSeq: Long = 0L,
@ProtoId(6) @JvmField val followingFriendSeq: Long = 0L,
@ProtoId(7) @JvmField val followingGroupSeq: Long = 0L,
@ProtoId(9) @JvmField val friendmsgs: List<StructMsg>? = null,
@ProtoId(10) @JvmField val groupmsgs: List<StructMsg>? = null,
@ProtoId(11) @JvmField val msgRibbonFriend: StructMsg? = null,
@ProtoId(12) @JvmField val msgRibbonGroup: StructMsg? = null,
@ProtoId(13) @JvmField val msgDisplay: String = "",
@ProtoId(14) @JvmField val grpMsgDisplay: String = "",
@ProtoId(15) @JvmField val over: Int = 0,
@ProtoId(20) @JvmField val checktype: Int /* enum */ = 1,
@ProtoId(100) @JvmField val gameNick: String = "",
@ProtoId(101) @JvmField val undecidForQim: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(102) @JvmField val unReadCount3: Int = 0
@ProtoNumber(1) @JvmField val head: RspHead? = null,
@ProtoNumber(2) @JvmField val unreadFriendCount: Int = 0,
@ProtoNumber(3) @JvmField val unreadGroupCount: Int = 0,
@ProtoNumber(4) @JvmField val latestFriendSeq: Long = 0L,
@ProtoNumber(5) @JvmField val latestGroupSeq: Long = 0L,
@ProtoNumber(6) @JvmField val followingFriendSeq: Long = 0L,
@ProtoNumber(7) @JvmField val followingGroupSeq: Long = 0L,
@ProtoNumber(9) @JvmField val friendmsgs: List<StructMsg>? = null,
@ProtoNumber(10) @JvmField val groupmsgs: List<StructMsg>? = null,
@ProtoNumber(11) @JvmField val msgRibbonFriend: StructMsg? = null,
@ProtoNumber(12) @JvmField val msgRibbonGroup: StructMsg? = null,
@ProtoNumber(13) @JvmField val msgDisplay: String = "",
@ProtoNumber(14) @JvmField val grpMsgDisplay: String = "",
@ProtoNumber(15) @JvmField val over: Int = 0,
@ProtoNumber(20) @JvmField val checktype: Int /* enum */ = 1,
@ProtoNumber(100) @JvmField val gameNick: String = "",
@ProtoNumber(101) @JvmField val undecidForQim: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(102) @JvmField val unReadCount3: Int = 0
) : ProtoBuf
@Serializable
internal class RspSystemMsgRead(
@ProtoId(1) @JvmField val head: RspHead? = null,
@ProtoId(2) @JvmField val type: Int = 0,
@ProtoId(3) @JvmField val checktype: Int /* enum */ = 1
@ProtoNumber(1) @JvmField val head: RspHead? = null,
@ProtoNumber(2) @JvmField val type: Int = 0,
@ProtoNumber(3) @JvmField val checktype: Int /* enum */ = 1
) : ProtoBuf
@Serializable
internal class StructMsg(
@ProtoId(1) @JvmField val version: Int = 0,
@ProtoId(2) @JvmField val msgType: Int /* enum */ = 1,
@ProtoId(3) @JvmField val msgSeq: Long = 0L,
@ProtoId(4) @JvmField val msgTime: Long = 0L,
@ProtoId(5) @JvmField val reqUin: Long = 0L,
@ProtoId(6) @JvmField val unreadFlag: Int = 0,
@ProtoId(50) @JvmField val msg: SystemMsg? = null
@ProtoNumber(1) @JvmField val version: Int = 0,
@ProtoNumber(2) @JvmField val msgType: Int /* enum */ = 1,
@ProtoNumber(3) @JvmField val msgSeq: Long = 0L,
@ProtoNumber(4) @JvmField val msgTime: Long = 0L,
@ProtoNumber(5) @JvmField val reqUin: Long = 0L,
@ProtoNumber(6) @JvmField val unreadFlag: Int = 0,
@ProtoNumber(50) @JvmField val msg: SystemMsg? = null
) : ProtoBuf
@Serializable
internal class SystemMsg(
@ProtoId(1) @JvmField val subType: Int = 0,
@ProtoId(2) @JvmField val msgTitle: String = "",
@ProtoId(3) @JvmField val msgDescribe: String = "",
@ProtoId(4) @JvmField val msgAdditional: String = "",
@ProtoId(5) @JvmField val msgSource: String = "",
@ProtoId(6) @JvmField val msgDecided: String = "",
@ProtoId(7) @JvmField val srcId: Int = 0,
@ProtoId(8) @JvmField val subSrcId: Int = 0,
@ProtoId(9) @JvmField val actions: List<SystemMsgAction>? = null,
@ProtoId(10) @JvmField val groupCode: Long = 0L,
@ProtoId(11) @JvmField val actionUin: Long = 0L,
@ProtoId(12) @JvmField val groupMsgType: Int = 0,
@ProtoId(13) @JvmField val groupInviterRole: Int = 0,
@ProtoId(14) @JvmField val friendInfo: FriendInfo? = null,
@ProtoId(15) @JvmField val groupInfo: GroupInfo? = null,
@ProtoId(16) @JvmField val actorUin: Long = 0L,
@ProtoId(17) @JvmField val msgActorDescribe: String = "",
@ProtoId(18) @JvmField val msgAdditionalList: String = "",
@ProtoId(19) @JvmField val relation: Int = 0,
@ProtoId(20) @JvmField val reqsubtype: Int = 0,
@ProtoId(21) @JvmField val cloneUin: Long = 0L,
@ProtoId(22) @JvmField val discussUin: Long = 0L,
@ProtoId(23) @JvmField val eimGroupId: Long = 0L,
@ProtoId(24) @JvmField val msgInviteExtinfo: MsgInviteExt? = null,
@ProtoId(25) @JvmField val msgPayGroupExtinfo: MsgPayGroupExt? = null,
@ProtoId(26) @JvmField val sourceFlag: Int = 0,
@ProtoId(27) @JvmField val gameNick: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(28) @JvmField val gameMsg: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(29) @JvmField val groupFlagext3: Int = 0,
@ProtoId(30) @JvmField val groupOwnerUin: Long = 0L,
@ProtoId(31) @JvmField val doubtFlag: Int = 0,
@ProtoId(32) @JvmField val warningTips: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(33) @JvmField val nameMore: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(50) @JvmField val reqUinFaceid: Int = 0,
@ProtoId(51) @JvmField val reqUinNick: String = "",
@ProtoId(52) @JvmField val groupName: String = "",
@ProtoId(53) @JvmField val actionUinNick: String = "",
@ProtoId(54) @JvmField val msgQna: String = "",
@ProtoId(55) @JvmField val msgDetail: String = "",
@ProtoId(57) @JvmField val groupExtFlag: Int = 0,
@ProtoId(58) @JvmField val actorUinNick: String = "",
@ProtoId(59) @JvmField val picUrl: String = "",
@ProtoId(60) @JvmField val cloneUinNick: String = "",
@ProtoId(61) @JvmField val reqUinBusinessCard: String = "",
@ProtoId(63) @JvmField val eimGroupIdName: String = "",
@ProtoId(64) @JvmField val reqUinPreRemark: String = "",
@ProtoId(65) @JvmField val actionUinQqNick: String = "",
@ProtoId(66) @JvmField val actionUinRemark: String = "",
@ProtoId(67) @JvmField val reqUinGender: Int = 0,
@ProtoId(68) @JvmField val reqUinAge: Int = 0,
@ProtoId(69) @JvmField val c2cInviteJoinGroupFlag: Int = 0,
@ProtoId(101) @JvmField val cardSwitch: Int = 0
@ProtoNumber(1) @JvmField val subType: Int = 0,
@ProtoNumber(2) @JvmField val msgTitle: String = "",
@ProtoNumber(3) @JvmField val msgDescribe: String = "",
@ProtoNumber(4) @JvmField val msgAdditional: String = "",
@ProtoNumber(5) @JvmField val msgSource: String = "",
@ProtoNumber(6) @JvmField val msgDecided: String = "",
@ProtoNumber(7) @JvmField val srcId: Int = 0,
@ProtoNumber(8) @JvmField val subSrcId: Int = 0,
@ProtoNumber(9) @JvmField val actions: List<SystemMsgAction>? = null,
@ProtoNumber(10) @JvmField val groupCode: Long = 0L,
@ProtoNumber(11) @JvmField val actionUin: Long = 0L,
@ProtoNumber(12) @JvmField val groupMsgType: Int = 0,
@ProtoNumber(13) @JvmField val groupInviterRole: Int = 0,
@ProtoNumber(14) @JvmField val friendInfo: FriendInfo? = null,
@ProtoNumber(15) @JvmField val groupInfo: GroupInfo? = null,
@ProtoNumber(16) @JvmField val actorUin: Long = 0L,
@ProtoNumber(17) @JvmField val msgActorDescribe: String = "",
@ProtoNumber(18) @JvmField val msgAdditionalList: String = "",
@ProtoNumber(19) @JvmField val relation: Int = 0,
@ProtoNumber(20) @JvmField val reqsubtype: Int = 0,
@ProtoNumber(21) @JvmField val cloneUin: Long = 0L,
@ProtoNumber(22) @JvmField val discussUin: Long = 0L,
@ProtoNumber(23) @JvmField val eimGroupId: Long = 0L,
@ProtoNumber(24) @JvmField val msgInviteExtinfo: MsgInviteExt? = null,
@ProtoNumber(25) @JvmField val msgPayGroupExtinfo: MsgPayGroupExt? = null,
@ProtoNumber(26) @JvmField val sourceFlag: Int = 0,
@ProtoNumber(27) @JvmField val gameNick: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(28) @JvmField val gameMsg: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(29) @JvmField val groupFlagext3: Int = 0,
@ProtoNumber(30) @JvmField val groupOwnerUin: Long = 0L,
@ProtoNumber(31) @JvmField val doubtFlag: Int = 0,
@ProtoNumber(32) @JvmField val warningTips: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(33) @JvmField val nameMore: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(50) @JvmField val reqUinFaceid: Int = 0,
@ProtoNumber(51) @JvmField val reqUinNick: String = "",
@ProtoNumber(52) @JvmField val groupName: String = "",
@ProtoNumber(53) @JvmField val actionUinNick: String = "",
@ProtoNumber(54) @JvmField val msgQna: String = "",
@ProtoNumber(55) @JvmField val msgDetail: String = "",
@ProtoNumber(57) @JvmField val groupExtFlag: Int = 0,
@ProtoNumber(58) @JvmField val actorUinNick: String = "",
@ProtoNumber(59) @JvmField val picUrl: String = "",
@ProtoNumber(60) @JvmField val cloneUinNick: String = "",
@ProtoNumber(61) @JvmField val reqUinBusinessCard: String = "",
@ProtoNumber(63) @JvmField val eimGroupIdName: String = "",
@ProtoNumber(64) @JvmField val reqUinPreRemark: String = "",
@ProtoNumber(65) @JvmField val actionUinQqNick: String = "",
@ProtoNumber(66) @JvmField val actionUinRemark: String = "",
@ProtoNumber(67) @JvmField val reqUinGender: Int = 0,
@ProtoNumber(68) @JvmField val reqUinAge: Int = 0,
@ProtoNumber(69) @JvmField val c2cInviteJoinGroupFlag: Int = 0,
@ProtoNumber(101) @JvmField val cardSwitch: Int = 0
) : ProtoBuf
@Serializable
internal class SystemMsgAction(
@ProtoId(1) @JvmField val name: String = "",
@ProtoId(2) @JvmField val result: String = "",
@ProtoId(3) @JvmField val action: Int = 0,
@ProtoId(4) @JvmField val actionInfo: SystemMsgActionInfo? = null,
@ProtoId(5) @JvmField val detailName: String = ""
@ProtoNumber(1) @JvmField val name: String = "",
@ProtoNumber(2) @JvmField val result: String = "",
@ProtoNumber(3) @JvmField val action: Int = 0,
@ProtoNumber(4) @JvmField val actionInfo: SystemMsgActionInfo? = null,
@ProtoNumber(5) @JvmField val detailName: String = ""
) : ProtoBuf
@Serializable
internal class SystemMsgActionInfo(
@ProtoId(1) @JvmField val type: Int /* enum */ = 1,
@ProtoId(2) @JvmField val groupCode: Long = 0L,
@ProtoId(3) @JvmField val sig: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(50) @JvmField val msg: String = "",
@ProtoId(51) @JvmField val groupId: Int = 0,
@ProtoId(52) @JvmField val remark: String = "",
@ProtoId(53) @JvmField val blacklist: Boolean = false,
@ProtoId(54) @JvmField val addFrdSNInfo: AddFrdSNInfo? = null
@ProtoNumber(1) @JvmField val type: Int /* enum */ = 1,
@ProtoNumber(2) @JvmField val groupCode: Long = 0L,
@ProtoNumber(3) @JvmField val sig: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(50) @JvmField val msg: String = "",
@ProtoNumber(51) @JvmField val groupId: Int = 0,
@ProtoNumber(52) @JvmField val remark: String = "",
@ProtoNumber(53) @JvmField val blacklist: Boolean = false,
@ProtoNumber(54) @JvmField val addFrdSNInfo: AddFrdSNInfo? = null
) : ProtoBuf
}
@ -299,15 +299,15 @@ internal class Structmsg : ProtoBuf {
internal class Youtu : ProtoBuf {
@Serializable
internal class NameCardOcrRsp(
@ProtoId(1) @JvmField val errorcode: Int = 0,
@ProtoId(2) @JvmField val errormsg: String = "",
@ProtoId(3) @JvmField val uin: String = "",
@ProtoId(4) @JvmField val uinConfidence: Float = 0.0F,
@ProtoId(5) @JvmField val phone: String = "",
@ProtoId(6) @JvmField val phoneConfidence: Float = 0.0F,
@ProtoId(7) @JvmField val name: String = "",
@ProtoId(8) @JvmField val nameConfidence: Float = 0.0F,
@ProtoId(9) @JvmField val image: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoId(10) @JvmField val sessionId: String = ""
@ProtoNumber(1) @JvmField val errorcode: Int = 0,
@ProtoNumber(2) @JvmField val errormsg: String = "",
@ProtoNumber(3) @JvmField val uin: String = "",
@ProtoNumber(4) @JvmField val uinConfidence: Float = 0.0F,
@ProtoNumber(5) @JvmField val phone: String = "",
@ProtoNumber(6) @JvmField val phoneConfidence: Float = 0.0F,
@ProtoNumber(7) @JvmField val name: String = "",
@ProtoNumber(8) @JvmField val nameConfidence: Float = 0.0F,
@ProtoNumber(9) @JvmField val image: ByteArray = EMPTY_BYTE_ARRAY,
@ProtoNumber(10) @JvmField val sessionId: String = ""
) : ProtoBuf
}

View File

@ -1,7 +1,7 @@
package net.mamoe.mirai.qqandroid.network.protocol.data.proto
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import kotlinx.serialization.protobuf.ProtoNumber
import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf
import kotlin.jvm.JvmField
import kotlin.math.absoluteValue
@ -12,15 +12,15 @@ import kotlin.random.Random
@Serializable
internal class SyncCookie(
@ProtoId(1) @JvmField val time1: Long? = null, // 1580277992
@ProtoId(2) @JvmField val time: Long, // 1580277992
@ProtoId(3) @JvmField val unknown1: Long = Random.nextLong().absoluteValue,// 678328038
@ProtoId(4) @JvmField val unknown2: Long = Random.nextLong().absoluteValue, // 1687142153
@ProtoId(5) @JvmField val const1: Long = const1_, // 1458467940
@ProtoId(11) @JvmField val const2: Long = const2_, // 2683038258
@ProtoId(12) @JvmField val unknown3: Long = 0x1d,
@ProtoId(13) @JvmField val lastSyncTime: Long? = null,
@ProtoId(14) @JvmField val unknown4: Long = 0
@ProtoNumber(1) @JvmField val time1: Long? = null, // 1580277992
@ProtoNumber(2) @JvmField val time: Long, // 1580277992
@ProtoNumber(3) @JvmField val unknown1: Long = Random.nextLong().absoluteValue,// 678328038
@ProtoNumber(4) @JvmField val unknown2: Long = Random.nextLong().absoluteValue, // 1687142153
@ProtoNumber(5) @JvmField val const1: Long = const1_, // 1458467940
@ProtoNumber(11) @JvmField val const2: Long = const2_, // 2683038258
@ProtoNumber(12) @JvmField val unknown3: Long = 0x1d,
@ProtoNumber(13) @JvmField val lastSyncTime: Long? = null,
@ProtoNumber(14) @JvmField val unknown4: Long = 0
) : ProtoBuf
private val const1_: Long = Random.nextLong().absoluteValue

View File

@ -21,7 +21,7 @@ import kotlinx.io.core.discardExact
import kotlinx.io.core.readBytes
import kotlinx.io.core.readUInt
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import kotlinx.serialization.protobuf.ProtoNumber
import net.mamoe.mirai.JavaFriendlyAPI
import net.mamoe.mirai.data.FriendInfo
import net.mamoe.mirai.event.events.*
@ -357,25 +357,25 @@ internal object Transformers528 : Map<Long, Lambda528> by mapOf(
0x8AL to lambda528 { bot ->
@Serializable
data class Sub8AInner(
@ProtoId(1) val fromUin: Long,
@ProtoId(2) val botUin: Long,
@ProtoId(3) val srcId: Int,
@ProtoId(4) val srcInternalId: Int,
@ProtoId(5) val time: Int,
@ProtoId(6) val random: Int, // 同srcInternalId
@ProtoId(7) val flag1: Boolean, // true
@ProtoId(8) val flag2: Boolean, // false
@ProtoId(9) val flag3: Boolean, // false
@ProtoId(12) val flag4: Boolean // true
@ProtoNumber(1) val fromUin: Long,
@ProtoNumber(2) val botUin: Long,
@ProtoNumber(3) val srcId: Int,
@ProtoNumber(4) val srcInternalId: Int,
@ProtoNumber(5) val time: Int,
@ProtoNumber(6) val random: Int, // 同srcInternalId
@ProtoNumber(7) val flag1: Boolean, // true
@ProtoNumber(8) val flag2: Boolean, // false
@ProtoNumber(9) val flag3: Boolean, // false
@ProtoNumber(12) val flag4: Boolean // true
) : ProtoBuf
@Serializable
data class Sub8A(
@ProtoId(1) val inner: Sub8AInner,
@ProtoId(2) val v2: Boolean, // true
@ProtoId(3) val v3: Boolean, // true
@ProtoId(4) val v4: Boolean, // false
@ProtoId(5) val v5: ByteArray? = null // struct{ boolean(1), boolean(2) }
@ProtoNumber(1) val inner: Sub8AInner,
@ProtoNumber(2) val v2: Boolean, // true
@ProtoNumber(3) val v3: Boolean, // true
@ProtoNumber(4) val v4: Boolean, // false
@ProtoNumber(5) val v5: ByteArray? = null // struct{ boolean(1), boolean(2) }
) : ProtoBuf
val sub8A = vProtobuf.loadAs(Sub8A.serializer()).inner

View File

@ -12,7 +12,7 @@ package net.mamoe.mirai.qqandroid.network.protocol.packet.login
import kotlinx.io.core.ByteReadPacket
import kotlinx.io.core.use
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoId
import kotlinx.serialization.protobuf.ProtoNumber
import net.mamoe.mirai.event.AbstractEvent
import net.mamoe.mirai.event.Event
import net.mamoe.mirai.qqandroid.QQAndroidBot
@ -51,15 +51,15 @@ internal class ConfigPushSvc {
@Serializable
data class ChangeServer(
@ProtoId(1) val unknown: Int, // =08
@ProtoId(2) val serverList: List<ServerInfo>
@ProtoNumber(1) val unknown: Int, // =08
@ProtoNumber(2) val serverList: List<ServerInfo>
) : ProtoBuf, PushReqResponse() {
@Serializable
data class ServerInfo(
@ProtoId(1) val host: String,
@ProtoId(2) val port: Int,
@ProtoId(3) val unknown: Int
@ProtoNumber(1) val host: String,
@ProtoNumber(2) val port: Int,
@ProtoNumber(3) val unknown: Int
) : ProtoBuf {
override fun toString(): String {
return "$host:$port"

View File

@ -22,22 +22,22 @@ import kotlinx.serialization.internal.TaggedEncoder
import kotlinx.serialization.modules.EmptySerializersModule
import kotlinx.serialization.modules.SerializersModule
import kotlinx.serialization.protobuf.ProtoBuf
import kotlinx.serialization.protobuf.ProtoNumberType
import kotlinx.serialization.protobuf.ProtoIntegerType
import kotlinx.serialization.protobuf.ProtoType
import moe.him188.jcekt.JceId
import net.mamoe.mirai.qqandroid.utils.io.serialization.ProtoBufWithNullableSupport.Varint.encodeVarint
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.TarsId
import java.io.ByteArrayOutputStream
import java.nio.ByteBuffer
import java.nio.ByteOrder
internal typealias ProtoDesc = Pair<Int, ProtoNumberType>
internal typealias ProtoDesc = Pair<Int, ProtoIntegerType>
internal fun getSerialId(desc: SerialDescriptor, index: Int): Int? = desc.findAnnotation<JceId>(index)?.id
internal fun getSerialId(desc: SerialDescriptor, index: Int): Int? = desc.findAnnotation<TarsId>(index)?.id
internal fun extractParameters(desc: SerialDescriptor, index: Int, zeroBasedDefault: Boolean = false): ProtoDesc {
val idx = getSerialId(desc, index) ?: (if (zeroBasedDefault) index else index + 1)
val format = desc.findAnnotation<ProtoType>(index)?.type
?: ProtoNumberType.DEFAULT
?: ProtoIntegerType.DEFAULT
return idx to format
}
@ -56,6 +56,7 @@ internal class ProtoBufWithNullableSupport(override val serializersModule: Seria
override val serializersModule
get() = this@ProtoBufWithNullableSupport.serializersModule
@Suppress("OverridingDeprecatedMember")
override fun beginStructure(
descriptor: SerialDescriptor,
vararg typeSerializers: KSerializer<*>
@ -72,17 +73,17 @@ internal class ProtoBufWithNullableSupport(override val serializersModule: Seria
override fun encodeTaggedLong(tag: ProtoDesc, value: Long) = encoder.writeLong(value, tag.first, tag.second)
override fun encodeTaggedFloat(tag: ProtoDesc, value: Float) = encoder.writeFloat(value, tag.first)
override fun encodeTaggedDouble(tag: ProtoDesc, value: Double) = encoder.writeDouble(value, tag.first)
override fun encodeTaggedBoolean(tag: ProtoDesc, value: Boolean) = encoder.writeInt(if (value) 1 else 0, tag.first, ProtoNumberType.DEFAULT)
override fun encodeTaggedBoolean(tag: ProtoDesc, value: Boolean) = encoder.writeInt(if (value) 1 else 0, tag.first, ProtoIntegerType.DEFAULT)
override fun encodeTaggedChar(tag: ProtoDesc, value: Char) = encoder.writeInt(value.toInt(), tag.first, tag.second)
override fun encodeTaggedString(tag: ProtoDesc, value: String) = encoder.writeString(value, tag.first)
override fun encodeTaggedEnum(
tag: ProtoDesc,
enumDescription: SerialDescriptor,
enumDescriptor: SerialDescriptor,
ordinal: Int
) = encoder.writeInt(
extractParameters(enumDescription, ordinal, zeroBasedDefault = true).first,
extractParameters(enumDescriptor, ordinal, zeroBasedDefault = true).first,
tag.first,
ProtoNumberType.DEFAULT
ProtoIntegerType.DEFAULT
)
override fun SerialDescriptor.getTag(index: Int) = this.getProtoDesc(index)
@ -134,8 +135,8 @@ internal class ProtoBufWithNullableSupport(override val serializersModule: Seria
internal inner class MapRepeatedWriter(parentTag: ProtoDesc?, parentEncoder: ProtobufEncoder) : ObjectWriter(parentTag, parentEncoder) {
override fun SerialDescriptor.getTag(index: Int): ProtoDesc =
if (index % 2 == 0) 1 to (parentTag?.second ?: ProtoNumberType.DEFAULT)
else 2 to (parentTag?.second ?: ProtoNumberType.DEFAULT)
if (index % 2 == 0) 1 to (parentTag?.second ?: ProtoIntegerType.DEFAULT)
else 2 to (parentTag?.second ?: ProtoIntegerType.DEFAULT)
}
internal inner class RepeatedWriter(encoder: ProtobufEncoder, private val curTag: ProtoDesc) :
@ -153,16 +154,16 @@ internal class ProtoBufWithNullableSupport(override val serializersModule: Seria
out.write(bytes)
}
fun writeInt(value: Int, tag: Int, format: ProtoNumberType) {
val wireType = if (format == ProtoNumberType.FIXED) i32 else VARINT
fun writeInt(value: Int, tag: Int, format: ProtoIntegerType) {
val wireType = if (format == ProtoIntegerType.FIXED) i32 else VARINT
val header = encode32((tag shl 3) or wireType)
val content = encode32(value, format)
out.write(header)
out.write(content)
}
fun writeLong(value: Long, tag: Int, format: ProtoNumberType) {
val wireType = if (format == ProtoNumberType.FIXED) i64 else VARINT
fun writeLong(value: Long, tag: Int, format: ProtoIntegerType) {
val wireType = if (format == ProtoIntegerType.FIXED) i64 else VARINT
val header = encode32((tag shl 3) or wireType)
val content = encode64(value, format)
out.write(header)
@ -189,19 +190,19 @@ internal class ProtoBufWithNullableSupport(override val serializersModule: Seria
out.write(content)
}
private fun encode32(number: Int, format: ProtoNumberType = ProtoNumberType.DEFAULT): ByteArray =
private fun encode32(number: Int, format: ProtoIntegerType = ProtoIntegerType.DEFAULT): ByteArray =
when (format) {
ProtoNumberType.FIXED -> ByteBuffer.allocate(4).order(ByteOrder.LITTLE_ENDIAN).putInt(number).array()
ProtoNumberType.DEFAULT -> encodeVarint(number.toLong())
ProtoNumberType.SIGNED -> encodeVarint(((number shl 1) xor (number shr 31)))
ProtoIntegerType.FIXED -> ByteBuffer.allocate(4).order(ByteOrder.LITTLE_ENDIAN).putInt(number).array()
ProtoIntegerType.DEFAULT -> encodeVarint(number.toLong())
ProtoIntegerType.SIGNED -> encodeVarint(((number shl 1) xor (number shr 31)))
}
private fun encode64(number: Long, format: ProtoNumberType = ProtoNumberType.DEFAULT): ByteArray =
private fun encode64(number: Long, format: ProtoIntegerType = ProtoIntegerType.DEFAULT): ByteArray =
when (format) {
ProtoNumberType.FIXED -> ByteBuffer.allocate(8).order(ByteOrder.LITTLE_ENDIAN).putLong(number).array()
ProtoNumberType.DEFAULT -> encodeVarint(number)
ProtoNumberType.SIGNED -> encodeVarint((number shl 1) xor (number shr 63))
ProtoIntegerType.FIXED -> ByteBuffer.allocate(8).order(ByteOrder.LITTLE_ENDIAN).putLong(number).array()
ProtoIntegerType.DEFAULT -> encodeVarint(number)
ProtoIntegerType.SIGNED -> encodeVarint((number shl 1) xor (number shr 63))
}
}
@ -209,6 +210,7 @@ internal class ProtoBufWithNullableSupport(override val serializersModule: Seria
* Source for all varint operations:
* https://github.com/addthis/stream-lib/blob/master/src/main/java/com/clearspring/analytics/util/Varint.java
*/
@Suppress("unused")
internal object Varint {
internal fun encodeVarint(inp: Int): ByteArray {
var value = inp

View File

@ -0,0 +1,70 @@
/*
* Copyright 2020 Him188.
*
* Use of this source code is governed by the Apache 2.0 license that can be found through the following link.
*
* https://github.com/him188/Tarskt/blob/master/LICENSE
*/
@file:Suppress("MemberVisibilityCanBePrivate", "unused")
package net.mamoe.mirai.qqandroid.utils.io.serialization.tars
import kotlinx.io.charsets.Charset
import kotlinx.io.charsets.Charsets
import kotlinx.io.core.*
import kotlinx.serialization.*
import kotlinx.serialization.modules.EmptySerializersModule
import kotlinx.serialization.modules.SerializersModule
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.internal.TarsDecoder
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.internal.TarsInput
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.internal.TarsOld
import kotlin.jvm.JvmStatic
/**
* The main entry point to work with Tars serialization.
*/
@OptIn(ExperimentalSerializationApi::class)
internal class Tars(
override val serializersModule: SerializersModule = EmptySerializersModule,
val charset: Charset = Charsets.UTF_8
) : SerialFormat, BinaryFormat {
private val old = TarsOld(charset)
fun <T> dumpTo(serializer: SerializationStrategy<T>, ojb: T, output: Output) {
output.writePacket(old.dumpAsPacket(serializer, ojb))
}
fun <T> load(deserializer: DeserializationStrategy<T>, input: Input): T {
return TarsDecoder(TarsInput(input, charset), serializersModule).decodeSerializableValue(deserializer)
}
override fun <T> encodeToByteArray(serializer: SerializationStrategy<T>, value: T): ByteArray {
return buildPacket { dumpTo(serializer, value, this) }.readBytes()
}
override fun <T> decodeFromByteArray(deserializer: DeserializationStrategy<T>, bytes: ByteArray): T {
return load(deserializer, ByteReadPacket(bytes))
}
companion object {
@JvmStatic
val UTF_8: Tars = Tars()
internal const val BYTE: Byte = 0
internal const val DOUBLE: Byte = 5
internal const val FLOAT: Byte = 4
internal const val INT: Byte = 2
internal const val Tars_MAX_STRING_LENGTH = 104857600
internal const val LIST: Byte = 9
internal const val LONG: Byte = 3
internal const val MAP: Byte = 8
internal const val SHORT: Byte = 1
internal const val SIMPLE_LIST: Byte = 13
internal const val STRING1: Byte = 6
internal const val STRING4: Byte = 7
internal const val STRUCT_BEGIN: Byte = 10
internal const val STRUCT_END: Byte = 11
internal const val ZERO_TYPE: Byte = 12
}
}

View File

@ -0,0 +1,13 @@
package net.mamoe.mirai.qqandroid.utils.io.serialization.tars
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.SerialInfo
/**
* The serial id used in Tars serialization
*/
@OptIn(ExperimentalSerializationApi::class)
@SerialInfo
@Target(AnnotationTarget.PROPERTY)
internal annotation class TarsId(val id: Int)

View File

@ -0,0 +1,333 @@
/*
* Copyright 2020 Mamoe Technologies and contributors.
*
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
*
* https://github.com/mamoe/mirai/blob/master/LICENSE
*/
@file:Suppress("PrivatePropertyName")
package net.mamoe.mirai.qqandroid.utils.io.serialization.tars.internal
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.InternalSerializationApi
import kotlinx.serialization.descriptors.*
import kotlinx.serialization.encoding.AbstractDecoder
import kotlinx.serialization.encoding.CompositeDecoder
import kotlinx.serialization.internal.TaggedDecoder
import kotlinx.serialization.modules.SerializersModule
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.TarsId
@OptIn(InternalSerializationApi::class, ExperimentalSerializationApi::class)
internal class TarsDecoder(
val input: TarsInput, override val serializersModule: SerializersModule
) : TaggedDecoder<TarsTag>() {
override fun SerialDescriptor.getTag(index: Int): TarsTag {
val annotations = this.getElementAnnotations(index)
val id = annotations.filterIsInstance<TarsId>().single().id
// ?: error("cannot find @TarsId or @ProtoNumber for ${this.getElementName(index)} in ${this.serialName}")
//println("getTag: ${this.getElementName(index)}=$id")
return TarsTagCommon(id)
}
private fun SerialDescriptor.getTarsTagId(index: Int): Int {
// higher performance, don't use filterIsInstance
val annotation = getElementAnnotations(index).firstOrNull { it is TarsId }
?: error("missing @TarsId for ${getElementName(index)} in ${this.serialName}")
return (annotation as TarsId).id
}
private val SimpleByteArrayReader: SimpleByteArrayReaderImpl = SimpleByteArrayReaderImpl()
private inner class SimpleByteArrayReaderImpl : AbstractDecoder() {
override fun decodeSequentially(): Boolean = true
override fun endStructure(descriptor: SerialDescriptor) {
this@TarsDecoder.endStructure(descriptor)
}
override fun beginStructure(descriptor: SerialDescriptor): CompositeDecoder {
this@TarsDecoder.pushTag(TarsTagListElement)
return this@TarsDecoder.beginStructure(descriptor)
}
override fun decodeByte(): Byte = input.input.readByte()
override fun decodeShort(): Short = error("illegal access")
override fun decodeInt(): Int = error("illegal access")
override fun decodeLong(): Long = error("illegal access")
override fun decodeFloat(): Float = error("illegal access")
override fun decodeDouble(): Double = error("illegal access")
override fun decodeBoolean(): Boolean = error("illegal access")
override fun decodeChar(): Char = error("illegal access")
override fun decodeEnum(enumDescriptor: SerialDescriptor): Int = error("illegal access")
override fun decodeString(): String = error("illegal access")
override fun decodeElementIndex(descriptor: SerialDescriptor): Int {
error("should not be reached")
}
override fun decodeCollectionSize(descriptor: SerialDescriptor): Int {
// 不要读下一个 head
return input.currentHead.let { input.readTarsIntValue(it) }
}
}
private val ListReader: ListReaderImpl = ListReaderImpl()
private inner class ListReaderImpl : AbstractDecoder() {
override fun decodeSequentially(): Boolean = true
override fun decodeElementIndex(descriptor: SerialDescriptor): Int = error("should not be reached")
override fun endStructure(descriptor: SerialDescriptor) {
this@TarsDecoder.endStructure(descriptor)
}
override fun beginStructure(descriptor: SerialDescriptor): CompositeDecoder {
this@TarsDecoder.pushTag(TarsTagListElement)
return this@TarsDecoder.beginStructure(descriptor)
}
override fun decodeByte(): Byte = input.useHead { input.readTarsByteValue(it) }
override fun decodeShort(): Short = input.useHead { input.readTarsShortValue(it) }
override fun decodeInt(): Int = input.useHead { input.readTarsIntValue(it) }
override fun decodeLong(): Long = input.useHead { input.readTarsLongValue(it) }
override fun decodeFloat(): Float = input.useHead { input.readTarsFloatValue(it) }
override fun decodeDouble(): Double = input.useHead { input.readTarsDoubleValue(it) }
override fun decodeBoolean(): Boolean = input.useHead { input.readTarsBooleanValue(it) }
override fun decodeChar(): Char = decodeByte().toChar()
override fun decodeEnum(enumDescriptor: SerialDescriptor): Int = decodeInt()
override fun decodeString(): String = input.useHead { input.readTarsStringValue(it) }
override fun decodeCollectionSize(descriptor: SerialDescriptor): Int {
//println("decodeCollectionSize: ${descriptor.serialName}")
// 不读下一个 head
return input.useHead { input.readTarsIntValue(it) }
}
}
private val MapReader: MapReaderImpl = MapReaderImpl()
private inner class MapReaderImpl : AbstractDecoder() {
override fun decodeSequentially(): Boolean = true
override fun decodeElementIndex(descriptor: SerialDescriptor): Int = error("stub")
override fun endStructure(descriptor: SerialDescriptor) {
this@TarsDecoder.endStructure(descriptor)
}
override fun beginStructure(descriptor: SerialDescriptor): CompositeDecoder {
println { "MapReader.beginStructure: ${input.currentHead}" }
this@TarsDecoder.pushTag(
when (input.currentHead.tag) {
0 -> TarsTagMapEntryKey
1 -> TarsTagMapEntryValue
else -> error("illegal map entry head: ${input.currentHead.tag}")
}
)
return this@TarsDecoder.beginStructure(descriptor)
}
override fun decodeByte(): Byte = input.useHead { input.readTarsByteValue(it) }
override fun decodeShort(): Short = input.useHead { input.readTarsShortValue(it) }
override fun decodeInt(): Int = input.useHead { input.readTarsIntValue(it) }
override fun decodeLong(): Long = input.useHead { input.readTarsLongValue(it) }
override fun decodeFloat(): Float = input.useHead { input.readTarsFloatValue(it) }
override fun decodeDouble(): Double = input.useHead { input.readTarsDoubleValue(it) }
override fun decodeBoolean(): Boolean = input.useHead { input.readTarsBooleanValue(it) }
override fun decodeChar(): Char = decodeByte().toChar()
override fun decodeEnum(enumDescriptor: SerialDescriptor): Int = decodeInt()
override fun decodeString(): String = input.useHead { input.readTarsStringValue(it) }
override fun decodeCollectionSize(descriptor: SerialDescriptor): Int {
println { "decodeCollectionSize in MapReader: ${descriptor.serialName}" }
// 不读下一个 head
return input.useHead { input.readTarsIntValue(it) }
}
}
override fun endStructure(descriptor: SerialDescriptor) {
structureHierarchy--
println { "endStructure: ${descriptor.serialName}" }
if (currentTagOrNull?.isSimpleByteArray == true) {
input.prepareNextHead() // read to next head
}
if (descriptor.kind == StructureKind.CLASS) {
if (currentTagOrNull == null) {
return
}
while (true) {
val currentHead = input.currentHeadOrNull ?: return
if (currentHead.type == Tars.STRUCT_END) {
input.prepareNextHead()
//println("current end")
break
}
//println("current $currentHead")
input.skipField(currentHead.type)
input.prepareNextHead()
}
// pushTag(TarsTag(0, true))
// skip STRUCT_END
// popTag()
}
}
companion object {
@Suppress("MemberVisibilityCanBePrivate")
var debuggingMode: Boolean = false
var structureHierarchy: Int = 0
inline fun println(value: () -> String) {
if (debuggingMode) {
kotlin.io.println(" ".repeat(structureHierarchy) + value())
}
}
@Suppress("NOTHING_TO_INLINE")
inline fun println(value: Any? = "") {
if (debuggingMode) {
kotlin.io.println(" ".repeat(structureHierarchy) + value)
}
}
}
override fun beginStructure(descriptor: SerialDescriptor): CompositeDecoder {
println()
println { "beginStructure: ${descriptor.serialName}" }
structureHierarchy++
return when (descriptor.kind) {
is PrimitiveKind -> this@TarsDecoder
StructureKind.MAP -> {
//println("!! MAP")
val tag = popTag()
return input.skipToHeadAndUseIfPossibleOrFail(tag.id) {
it.checkType(Tars.MAP, "beginStructure", tag, descriptor)
MapReader
}
}
StructureKind.LIST -> {
//println("!! ByteArray")
//println("decoderTag: $currentTagOrNull")
//println("TarsHead: " + Tars.currentHeadOrNull)
return input.skipToHeadAndUseIfPossibleOrFail(currentTag.id) {
// don't check type. it's polymorphic
//println("listHead: $it")
when (it.type) {
Tars.SIMPLE_LIST -> {
currentTag.isSimpleByteArray = true
input.nextHead() // 无用的元素类型
SimpleByteArrayReader
}
Tars.LIST -> ListReader
else -> error("type mismatch. Expected SIMPLE_LIST or LIST, got $it instead")
}
}
}
StructureKind.CLASS -> {
currentTagOrNull ?: return this@TarsDecoder // outermost
//println("!! CLASS")
//println("decoderTag: $currentTag")
//println("TarsHead: " + Tars.currentHeadOrNull)
val tag = popTag()
return input.skipToHeadAndUseIfPossibleOrFail(tag.id) { TarsHead ->
TarsHead.checkType(Tars.STRUCT_BEGIN, "beginStructure", tag, descriptor)
repeat(descriptor.elementsCount) {
pushTag(descriptor.getTag(descriptor.elementsCount - it - 1)) // better performance
}
this // independent tag stack
}
}
StructureKind.OBJECT -> error("unsupported StructureKind.OBJECT: ${descriptor.serialName}")
is SerialKind.ENUM -> error("unsupported UnionKind: ${descriptor.serialName}")
is PolymorphicKind -> error("unsupported PolymorphicKind: ${descriptor.serialName}")
is SerialKind.CONTEXTUAL -> error("unsupported PolymorphicKind: ${descriptor.serialName}")
}
}
override fun decodeSequentially(): Boolean = false
override fun decodeElementIndex(descriptor: SerialDescriptor): Int {
var tarsHead = input.currentHeadOrNull ?: kotlin.run {
println("decodeElementIndex: currentHead == null")
return CompositeDecoder.DECODE_DONE
}
println { "decodeElementIndex: ${input.currentHead}" }
while (!input.input.endOfInput) {
if (tarsHead.type == Tars.STRUCT_END) {
println { "decodeElementIndex: ${input.currentHead}" }
return CompositeDecoder.DECODE_DONE
}
repeat(descriptor.elementsCount) {
val tag = descriptor.getTarsTagId(it)
if (tag == tarsHead.tag) {
println {
"name=" + descriptor.getElementName(
it
)
}
return it
}
}
input.skipField(tarsHead.type)
if (!input.prepareNextHead()) {
println { "decodeElementIndex EOF" }
break
}
tarsHead = input.currentHead
println { "next! $tarsHead" }
}
return CompositeDecoder.DECODE_DONE // optional support
}
override fun decodeTaggedInt(tag: TarsTag): Int =
kotlin.runCatching { input.skipToHeadAndUseIfPossibleOrFail(tag.id) { input.readTarsIntValue(it) } }.getOrElse {
throw IllegalStateException("$tag", it)
}
override fun decodeTaggedByte(tag: TarsTag): Byte =
kotlin.runCatching { input.skipToHeadAndUseIfPossibleOrFail(tag.id) { input.readTarsByteValue(it) } }.getOrElse {
throw IllegalStateException("$tag", it)
}
override fun decodeTaggedBoolean(tag: TarsTag): Boolean =
input.skipToHeadAndUseIfPossibleOrFail(tag.id) { input.readTarsBooleanValue(it) }
override fun decodeTaggedFloat(tag: TarsTag): Float =
input.skipToHeadAndUseIfPossibleOrFail(tag.id) { input.readTarsFloatValue(it) }
override fun decodeTaggedDouble(tag: TarsTag): Double =
input.skipToHeadAndUseIfPossibleOrFail(tag.id) { input.readTarsDoubleValue(it) }
override fun decodeTaggedShort(tag: TarsTag): Short =
input.skipToHeadAndUseIfPossibleOrFail(tag.id) { input.readTarsShortValue(it) }
override fun decodeTaggedLong(tag: TarsTag): Long =
input.skipToHeadAndUseIfPossibleOrFail(tag.id) { input.readTarsLongValue(it) }
override fun decodeTaggedString(tag: TarsTag): String =
input.skipToHeadAndUseIfPossibleOrFail(tag.id) { input.readTarsStringValue(it) }
override fun decodeTaggedNotNullMark(tag: TarsTag): Boolean {
return input.skipToHeadOrNull(tag.id) != null
}
}

View File

@ -0,0 +1,260 @@
/*
* Copyright 2020 Mamoe Technologies and contributors.
*
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
*
* https://github.com/mamoe/mirai/blob/master/LICENSE
*/
package net.mamoe.mirai.qqandroid.utils.io.serialization.tars.internal
import kotlinx.io.charsets.Charset
import kotlinx.io.core.*
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars
/**
* Tars Input. 需要手动管理 head.
*/
internal class TarsInput(
val input: Input, private val charset: Charset
) {
private var _head: TarsHead? = null
val currentHead: TarsHead get() = _head ?: throw EOFException("No current TarsHead available")
val currentHeadOrNull: TarsHead? get() = _head
init {
prepareNextHead()
}
/**
* 读取下一个 [TarsHead] 并保存. 可通过 [currentHead] 获取这个 [TarsHead].
*
* @return 是否成功读取. 返回 `false` 时代表 [Input.endOfInput]
*/
fun prepareNextHead(): Boolean {
return readNextHeadButDoNotAssignTo_Head().also { _head = it; } != null
}
fun nextHead(): TarsHead {
if (!prepareNextHead()) {
throw EOFException("No more TarsHead available")
}
return currentHead
}
/**
* 直接读取下一个 [TarsHead] 并返回.
* 返回 `null` 则代表 [Input.endOfInput]
*/
@Suppress("FunctionName")
@OptIn(ExperimentalUnsignedTypes::class)
private fun readNextHeadButDoNotAssignTo_Head(): TarsHead? {
if (input.endOfInput) {
return null
}
val var2 = input.readUByte()
val type = var2 and 15u
var tag = var2.toUInt() shr 4
if (tag == 15u) {
tag = input.readUByte().toUInt()
}
return TarsHead(
tag = tag.toInt(),
type = type.toByte()
)
}
/**
* 使用这个 [TarsHead].
* [block] 结束后将会 [准备下一个 [TarsHead]][prepareNextHead]
*/
inline fun <R> useHead(crossinline block: (TarsHead) -> R): R {
return currentHead.let(block).also { prepareNextHead() }
}
/**
* 跳过 [TarsHead] 和对应的数据值, 直到找到 [tag], 否则返回 `null`
*/
inline fun <R> skipToHeadAndUseIfPossibleOrNull(tag: Int, crossinline block: (TarsHead) -> R): R? {
return skipToHeadOrNull(tag)?.let(block).also { prepareNextHead() }
}
/**
* 跳过 [TarsHead] 和对应的数据值, 直到找到 [tag], 否则抛出异常
*/
inline fun <R : Any> skipToHeadAndUseIfPossibleOrFail(
tag: Int,
crossinline message: () -> String = { "tag not found: $tag" },
crossinline block: (TarsHead) -> R
): R {
return checkNotNull<R>(skipToHeadAndUseIfPossibleOrNull(tag, block), message)
}
tailrec fun skipToHeadOrNull(tag: Int): TarsHead? {
val current: TarsHead = currentHeadOrNull ?: return null // no backing field
return when {
current.tag > tag -> null // tag 大了,即找不到
current.tag == tag -> current // 满足需要.
else -> { // tag 小了
skipField(current.type)
check(prepareNextHead()) { "cannot skip to tag $tag, early EOF" }
skipToHeadOrNull(tag)
}
}
}
@OptIn(ExperimentalUnsignedTypes::class)
@PublishedApi
internal fun skipField(type: Byte) {
TarsDecoder.println {
"skipping ${
TarsHead.findTarsTypeName(
type
)
}"
}
when (type) {
Tars.BYTE -> this.input.discardExact(1)
Tars.SHORT -> this.input.discardExact(2)
Tars.INT -> this.input.discardExact(4)
Tars.LONG -> this.input.discardExact(8)
Tars.FLOAT -> this.input.discardExact(4)
Tars.DOUBLE -> this.input.discardExact(8)
Tars.STRING1 -> this.input.discardExact(this.input.readUByte().toInt())
Tars.STRING4 -> this.input.discardExact(this.input.readInt())
Tars.MAP -> { // map
TarsDecoder.structureHierarchy++
var count = 0
nextHead() // avoid shadowing, don't remove
repeat(skipToHeadAndUseIfPossibleOrFail(0, message = { "tag 0 not found when skipping map" }) { head ->
readTarsIntValue(head).also { count = it * 2 }
} * 2) {
skipField(currentHead.type)
if (it != count - 1) { // don't read last head
nextHead()
}
}
TarsDecoder.structureHierarchy--
}
Tars.LIST -> { // list
TarsDecoder.structureHierarchy++
var count = 0
nextHead() // avoid shadowing, don't remove
repeat(skipToHeadAndUseIfPossibleOrFail(0, message = { "tag 0 not found when skipping list" }) { head ->
readTarsIntValue(head).also { count = it }
}) {
skipField(currentHead.type)
if (it != count - 1) { // don't read last head
nextHead()
}
}
if (count == 0) {
}
TarsDecoder.structureHierarchy--
}
Tars.STRUCT_BEGIN -> {
TarsDecoder.structureHierarchy++
var head: TarsHead
do {
head = nextHead()
skipField(head.type)
} while (head.type != Tars.STRUCT_END)
TarsDecoder.structureHierarchy--
}
Tars.STRUCT_END, Tars.ZERO_TYPE -> {
}
Tars.SIMPLE_LIST -> {
TarsDecoder.structureHierarchy++
var head = nextHead()
check(head.type == Tars.BYTE) { "bad simple list element type: " + head.type }
check(head.tag == 0) { "simple list element tag must be 0, but was ${head.tag}" }
head = nextHead()
check(head.tag == 0) { "tag for size for simple list must be 0, but was ${head.tag}" }
this.input.discardExact(readTarsIntValue(head))
TarsDecoder.structureHierarchy--
}
else -> error("invalid type: $type")
}
}
// region readers
fun readTarsIntValue(head: TarsHead): Int {
//println("readTarsIntValue: $head")
return when (head.type) {
Tars.ZERO_TYPE -> 0
Tars.BYTE -> input.readByte().toInt()
Tars.SHORT -> input.readShort().toInt()
Tars.INT -> input.readInt()
else -> error("type mismatch: $head")
}
}
fun readTarsShortValue(head: TarsHead): Short {
return when (head.type) {
Tars.ZERO_TYPE -> 0
Tars.BYTE -> input.readByte().toShort()
Tars.SHORT -> input.readShort()
else -> error("type mismatch: $head")
}
}
fun readTarsLongValue(head: TarsHead): Long {
return when (head.type) {
Tars.ZERO_TYPE -> 0
Tars.BYTE -> input.readByte().toLong()
Tars.SHORT -> input.readShort().toLong()
Tars.INT -> input.readInt().toLong()
Tars.LONG -> input.readLong()
else -> error("type mismatch ${head.type}")
}
}
fun readTarsByteValue(head: TarsHead): Byte {
//println("readTarsByteValue: $head")
return when (head.type) {
Tars.ZERO_TYPE -> 0
Tars.BYTE -> input.readByte()
else -> error("type mismatch: $head")
}
}
fun readTarsFloatValue(head: TarsHead): Float {
return when (head.type) {
Tars.ZERO_TYPE -> 0f
Tars.FLOAT -> input.readFloat()
else -> error("type mismatch: $head")
}
}
@OptIn(ExperimentalUnsignedTypes::class)
fun readTarsStringValue(head: TarsHead): String {
//println("readTarsStringValue: $head")
return when (head.type) {
Tars.STRING1 -> input.readString(input.readUByte().toInt(), charset = charset)
Tars.STRING4 -> input.readString(
input.readUInt().toInt().also { require(it in 1 until 104857600) { "bad string length: $it" } },
charset = charset
)
else -> error("type mismatch: $head, expecting 6 or 7 (for string)")
}
}
fun readTarsDoubleValue(head: TarsHead): Double {
return when (head.type.toInt()) {
12 -> 0.0
4 -> input.readFloat().toDouble()
5 -> input.readDouble()
else -> error("type mismatch: $head")
}
}
fun readTarsBooleanValue(head: TarsHead): Boolean {
return readTarsByteValue(head) == 1.toByte()
}
}

View File

@ -0,0 +1,324 @@
/*
* Copyright 2020 Mamoe Technologies and contributors.
*
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
*
* https://github.com/mamoe/mirai/blob/master/LICENSE
*/
package net.mamoe.mirai.qqandroid.utils.io.serialization.tars.internal
import kotlinx.io.charsets.Charset
import kotlinx.io.charsets.Charsets
import kotlinx.io.core.*
import kotlinx.serialization.*
import kotlinx.serialization.builtins.MapEntrySerializer
import kotlinx.serialization.builtins.SetSerializer
import kotlinx.serialization.descriptors.PolymorphicKind
import kotlinx.serialization.descriptors.PrimitiveKind
import kotlinx.serialization.descriptors.SerialDescriptor
import kotlinx.serialization.descriptors.StructureKind
import kotlinx.serialization.encoding.CompositeEncoder
import kotlinx.serialization.internal.MapLikeSerializer
import kotlinx.serialization.internal.TaggedEncoder
import kotlinx.serialization.modules.EmptySerializersModule
import kotlinx.serialization.modules.SerializersModule
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars.Companion.BYTE
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars.Companion.DOUBLE
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars.Companion.FLOAT
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars.Companion.INT
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars.Companion.LIST
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars.Companion.LONG
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars.Companion.MAP
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars.Companion.SHORT
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars.Companion.SIMPLE_LIST
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars.Companion.STRING1
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars.Companion.STRING4
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars.Companion.STRUCT_BEGIN
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars.Companion.STRUCT_END
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars.Companion.Tars_MAX_STRING_LENGTH
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars.Companion.ZERO_TYPE
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.TarsId
@OptIn(ExperimentalSerializationApi::class)
internal inline fun <reified A : Annotation> SerialDescriptor.findAnnotation(elementIndex: Int): A? {
val candidates = getElementAnnotations(elementIndex).filterIsInstance<A>()
return when (candidates.size) {
0 -> null
1 -> candidates[0]
else -> throw IllegalStateException("There are duplicate annotations of type ${A::class} in the descriptor $this")
}
}
internal fun getSerialId(desc: SerialDescriptor, index: Int): Int? = desc.findAnnotation<TarsId>(index)?.id
//@Suppress("DEPRECATION_ERROR")
@OptIn(InternalSerializationApi::class, ExperimentalSerializationApi::class)
internal class TarsOld internal constructor(private val charset: Charset, override val serializersModule: SerializersModule = EmptySerializersModule) :
SerialFormat, BinaryFormat {
private inner class ListWriter(
private val count: Int,
private val tag: Int,
private val parentEncoder: TarsEncoder
) : TarsEncoder(BytePacketBuilder()) {
override fun SerialDescriptor.getTag(index: Int): Int {
return 0
}
override fun endEncode(descriptor: SerialDescriptor) {
parentEncoder.writeHead(LIST, this.tag)
parentEncoder.encodeTaggedInt(0, count)
parentEncoder.output.writePacket(this.output.build())
}
}
private inner class TarsMapWriter(
output: BytePacketBuilder
) : TarsEncoder(output) {
override fun SerialDescriptor.getTag(index: Int): Int {
return if (index % 2 == 0) 0 else 1
}
/*
override fun endEncode(desc: SerialDescriptor) {
parentEncoder.writeHead(MAP, this.tag)
parentEncoder.encodeTaggedInt(Int.STUB_FOR_PRIMITIVE_NUMBERS_GBK, count)
// println(this.output.toByteArray().toUHexString())
parentEncoder.output.write(this.output.toByteArray())
}*/
}
/**
* From: com.qq.taf.Tars.TarsOutputStream
*/
@Suppress("unused", "MemberVisibilityCanBePrivate")
@OptIn(ExperimentalIoApi::class)
private open inner class TarsEncoder(
val output: BytePacketBuilder
) : TaggedEncoder<Int>() {
override val serializersModule get() = this@TarsOld.serializersModule
override fun SerialDescriptor.getTag(index: Int): Int {
return getSerialId(this, index) ?: error("cannot find @SerialId")
}
/**
* 序列化最开始的时候的
*/
override fun beginStructure(
descriptor: SerialDescriptor
): CompositeEncoder =
when (descriptor.kind) {
StructureKind.LIST -> this
StructureKind.MAP -> this
StructureKind.CLASS, StructureKind.OBJECT -> this
is PolymorphicKind -> this
else -> throw SerializationException("Primitives are not supported at top-level")
}
@Suppress("UNCHECKED_CAST", "NAME_SHADOWING")
override fun <T> encodeSerializableValue(serializer: SerializationStrategy<T>, value: T) = when {
serializer.descriptor.kind == StructureKind.MAP -> {
try {
val entries = (value as Map<*, *>).entries
val serializer = (serializer as MapLikeSerializer<Any?, Any?, T, *>)
val mapEntrySerial = MapEntrySerializer(serializer.keySerializer, serializer.valueSerializer)
this.writeHead(MAP, currentTag)
this.encodeTaggedInt(0, entries.count())
SetSerializer(mapEntrySerial).serialize(TarsMapWriter(this.output), entries)
} catch (e: Exception) {
super.encodeSerializableValue(serializer, value)
}
}
serializer.descriptor.kind == StructureKind.LIST
&& value is ByteArray -> encodeTaggedByteArray(popTag(), value as ByteArray)
serializer.descriptor.kind == StructureKind.LIST
&& serializer.descriptor.getElementDescriptor(0) is PrimitiveKind -> {
serializer.serialize(
ListWriter(
when (value) {
is ShortArray -> value.size
is IntArray -> value.size
is LongArray -> value.size
is FloatArray -> value.size
is DoubleArray -> value.size
is CharArray -> value.size
is ByteArray -> value.size
is BooleanArray -> value.size
else -> error("unknown array type: ${value.getClassName()}")
}, popTag(), this
),
value
)
}
serializer.descriptor.kind == StructureKind.LIST && value is Array<*> -> {
if (serializer.descriptor.getElementDescriptor(0).kind is PrimitiveKind.BYTE) {
encodeTaggedByteArray(popTag(), (value as Array<Byte>).toByteArray())
} else
serializer.serialize(
ListWriter((value as Array<*>).size, popTag(), this),
value
)
}
serializer.descriptor.kind == StructureKind.LIST -> {
serializer.serialize(
ListWriter((value as Collection<*>).size, popTag(), this),
value
)
}
serializer.descriptor.kind == StructureKind.CLASS -> {
if (currentTagOrNull == null) {
serializer.serialize(this, value)
} else {
this.writeHead(STRUCT_BEGIN, popTag())
serializer.serialize(TarsEncoder(this.output), value)
this.writeHead(STRUCT_END, 0)
}
}
else -> {
serializer.serialize(this, value)
}
}
public override fun encodeTaggedByte(tag: Int, value: Byte) {
if (value.toInt() == 0) {
writeHead(ZERO_TYPE, tag)
} else {
writeHead(BYTE, tag)
output.writeByte(value)
}
}
public override fun encodeTaggedShort(tag: Int, value: Short) {
if (value in Byte.MIN_VALUE..Byte.MAX_VALUE) {
encodeTaggedByte(tag, value.toByte())
} else {
writeHead(SHORT, tag)
output.writeShort(value)
}
}
public override fun encodeTaggedInt(tag: Int, value: Int) {
if (value in Short.MIN_VALUE..Short.MAX_VALUE) {
encodeTaggedShort(tag, value.toShort())
} else {
writeHead(INT, tag)
output.writeInt(value)
}
}
public override fun encodeTaggedFloat(tag: Int, value: Float) {
writeHead(FLOAT, tag)
output.writeFloat(value)
}
public override fun encodeTaggedDouble(tag: Int, value: Double) {
writeHead(DOUBLE, tag)
output.writeDouble(value)
}
public override fun encodeTaggedLong(tag: Int, value: Long) {
if (value in Int.MIN_VALUE..Int.MAX_VALUE) {
encodeTaggedInt(tag, value.toInt())
} else {
writeHead(LONG, tag)
output.writeLong(value)
}
}
public override fun encodeTaggedBoolean(tag: Int, value: Boolean) {
encodeTaggedByte(tag, if (value) 1 else 0)
}
public override fun encodeTaggedChar(tag: Int, value: Char) {
encodeTaggedByte(tag, value.toByte())
}
public override fun encodeTaggedEnum(tag: Int, enumDescriptor: SerialDescriptor, ordinal: Int) {
encodeTaggedInt(tag, ordinal)
}
public override fun encodeTaggedNull(tag: Int) {
}
fun encodeTaggedByteArray(tag: Int, bytes: ByteArray) {
writeHead(SIMPLE_LIST, tag)
writeHead(BYTE, 0)
encodeTaggedInt(0, bytes.size)
output.writeFully(bytes)
}
public override fun encodeTaggedString(tag: Int, value: String) {
require(value.length <= Tars_MAX_STRING_LENGTH) { "string is too long for tag $tag" }
val array = value.toByteArray(charset)
if (array.size > 255) {
writeHead(STRING4, tag)
output.writeInt(array.size)
output.writeFully(array)
} else {
writeHead(STRING1, tag)
output.writeByte(array.size.toByte()) // one byte
output.writeFully(array)
}
}
override fun encodeTaggedValue(tag: Int, value: Any) {
when (value) {
is Byte -> encodeTaggedByte(tag, value)
is Short -> encodeTaggedShort(tag, value)
is Int -> encodeTaggedInt(tag, value)
is Long -> encodeTaggedLong(tag, value)
is Float -> encodeTaggedFloat(tag, value)
is Double -> encodeTaggedDouble(tag, value)
is Boolean -> encodeTaggedBoolean(tag, value)
is String -> encodeTaggedString(tag, value)
is Unit -> {
}
else -> error("unsupported type: ${value.getClassName()}")
}
}
fun writeHead(type: Byte, tag: Int) {
if (tag < 15) {
this.output.writeByte(((tag shl 4) or type.toInt()).toByte())
return
}
if (tag < 256) {
this.output.writeByte((type.toInt() or 0xF0).toByte())
this.output.writeByte(tag.toByte())
return
}
error("tag is too large: $tag")
}
}
@Suppress("MemberVisibilityCanBePrivate")
companion object : BinaryFormat by TarsOld(Charsets.UTF_8) {
private fun Any?.getClassName(): String =
(if (this == null) Unit::class else this::class).simpleName?.split(".")?.takeLast(2)?.joinToString(".")
?: "<unnamed class>"
}
fun <T> dumpAsPacket(serializer: SerializationStrategy<T>, obj: T): ByteReadPacket {
val encoder = BytePacketBuilder()
val dumper = TarsEncoder(encoder)
dumper.encodeSerializableValue(serializer, obj)
return encoder.build()
}
override fun <T> encodeToByteArray(serializer: SerializationStrategy<T>, value: T): ByteArray {
return dumpAsPacket(serializer, value).readBytes()
}
override fun <T> decodeFromByteArray(deserializer: DeserializationStrategy<T>, bytes: ByteArray): T {
error("Use TarsNew.")
}
}
internal fun Input.readString(length: Int, charset: Charset = Charsets.UTF_8): String =
String(this.readBytes(length), charset = charset)

View File

@ -0,0 +1,107 @@
/*
* Copyright 2020 Mamoe Technologies and contributors.
*
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
*
* https://github.com/mamoe/mirai/blob/master/LICENSE
*/
package net.mamoe.mirai.qqandroid.utils.io.serialization.tars.internal
import kotlinx.io.core.Output
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.descriptors.SerialDescriptor
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars
internal abstract class TarsTag {
abstract val id: Int
internal var isSimpleByteArray: Boolean = false
}
internal object TarsTagListElement : TarsTag() {
override val id: Int get() = 0
override fun toString(): String {
return "TarsTagListElement"
}
}
internal object TarsTagMapEntryKey : TarsTag() {
override val id: Int get() = 0
override fun toString(): String {
return "TarsTagMapEntryKey"
}
}
internal object TarsTagMapEntryValue : TarsTag() {
override val id: Int get() = 1
override fun toString(): String {
return "TarsTagMapEntryValue"
}
}
internal data class TarsTagCommon(
override val id: Int
) : TarsTag()
@OptIn(ExperimentalSerializationApi::class)
internal fun TarsHead.checkType(type: Byte, message: String, tag: TarsTag, descriptor: SerialDescriptor) {
check(this.type == type) {
"type mismatch. " +
"Expected ${TarsHead.findTarsTypeName(type)}, " +
"actual ${TarsHead.findTarsTypeName(this.type)} for $message. " +
"Tag info: " +
"id=${tag.id}, " +
"name=${descriptor.getElementName(tag.id)} " +
"in ${descriptor.serialName}"
}
}
@PublishedApi
internal fun Output.writeTarsHead(type: Byte, tag: Int) {
if (tag < 15) {
writeByte(((tag shl 4) or type.toInt()).toByte())
return
}
if (tag < 256) {
writeByte((type.toInt() or 0xF0).toByte())
writeByte(tag.toByte())
return
}
error("tag is too large: $tag")
}
@OptIn(ExperimentalUnsignedTypes::class)
internal class TarsHead(private val value: Long) {
constructor(tag: Int, type: Byte) : this(tag.toLong().shl(32) or type.toLong())
val tag: Int get() = (value ushr 32).toInt()
val type: Byte get() = value.toUInt().toByte()
override fun toString(): String {
return "TarsHead(tag=$tag, type=$type(${findTarsTypeName(type)}))"
}
companion object {
fun findTarsTypeName(type: Byte): String {
return when (type) {
Tars.BYTE -> "Byte"
Tars.DOUBLE -> "Double"
Tars.FLOAT -> "Float"
Tars.INT -> "Int"
Tars.LIST -> "List"
Tars.LONG -> "Long"
Tars.MAP -> "Map"
Tars.SHORT -> "Short"
Tars.SIMPLE_LIST -> "SimpleList"
Tars.STRING1 -> "String1"
Tars.STRING4 -> "String4"
Tars.STRUCT_BEGIN -> "StructBegin"
Tars.STRUCT_END -> "StructEnd"
Tars.ZERO_TYPE -> "Zero"
else -> error("illegal Tars type: $type")
}
}
}
}

View File

@ -16,13 +16,13 @@ import kotlinx.io.core.*
import kotlinx.serialization.DeserializationStrategy
import kotlinx.serialization.SerializationStrategy
import kotlinx.serialization.descriptors.SerialDescriptor
import moe.him188.jcekt.Jce
import net.mamoe.mirai.qqandroid.network.protocol.data.jce.RequestDataVersion2
import net.mamoe.mirai.qqandroid.network.protocol.data.jce.RequestDataVersion3
import net.mamoe.mirai.qqandroid.network.protocol.data.jce.RequestPacket
import net.mamoe.mirai.qqandroid.utils.io.JceStruct
import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf
import net.mamoe.mirai.qqandroid.utils.io.readPacketExact
import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars
import net.mamoe.mirai.qqandroid.utils.read
import kotlin.jvm.JvmMultifileClass
import kotlin.jvm.JvmName
@ -34,20 +34,20 @@ internal fun <T : JceStruct> ByteArray.loadWithUniPacket(
internal fun <T : JceStruct> ByteArray.loadAs(
deserializer: DeserializationStrategy<T>
): T = this.read { Jce.UTF_8.load(deserializer, this) }
): T = this.read { Tars.UTF_8.load(deserializer, this) }
internal fun <T : JceStruct> BytePacketBuilder.writeJceStruct(
serializer: SerializationStrategy<T>,
struct: T
) {
Jce.UTF_8.dumpTo(serializer, struct, this)
Tars.UTF_8.dumpTo(serializer, struct, this)
}
internal fun <T : JceStruct> ByteReadPacket.readJceStruct(
serializer: DeserializationStrategy<T>,
length: Int = this.remaining.toInt()
): T {
return Jce.UTF_8.load(serializer, this.readPacketExact(length))
return Tars.UTF_8.load(serializer, this.readPacketExact(length))
}
/**
@ -99,7 +99,7 @@ private fun <R> ByteReadPacket.decodeUniRequestPacketAndDeserialize(name: String
internal fun <T : JceStruct> T.toByteArray(
serializer: SerializationStrategy<T>
): ByteArray = Jce.UTF_8.encodeToByteArray(serializer, this)
): ByteArray = Tars.UTF_8.encodeToByteArray(serializer, this)
internal fun <T : ProtoBuf> BytePacketBuilder.writeProtoBuf(serializer: SerializationStrategy<T>, v: T) {
this.writeFully(v.toByteArray(serializer))

View File

@ -36,7 +36,7 @@ kotlin {
)
}
jvm() {
jvm {
// withJava() // https://youtrack.jetbrains.com/issue/KT-39991
}
@ -51,6 +51,7 @@ kotlin {
languageSettings.useExperimentalAnnotation("kotlin.experimental.ExperimentalTypeInference")
languageSettings.useExperimentalAnnotation("kotlin.time.ExperimentalTime")
languageSettings.useExperimentalAnnotation("kotlin.contracts.ExperimentalContracts")
languageSettings.useExperimentalAnnotation("kotlinx.serialization.ExperimentalSerializationApi")
languageSettings.progressiveMode = true
}
@ -60,7 +61,7 @@ kotlin {
api(kotlin("serialization"))
api(kotlin("reflect"))
api(kotlinx("serialization-runtime", Versions.Kotlin.serialization))
api(kotlinx("serialization-core", Versions.Kotlin.serialization))
implementation(kotlinx("serialization-protobuf", Versions.Kotlin.serialization))
implementation(kotlinx("io", Versions.Kotlin.io))
implementation(kotlinx("coroutines-io", Versions.Kotlin.coroutinesIo))
@ -131,4 +132,19 @@ kotlin {
}
}
apply(from = rootProject.file("gradle/publish.gradle"))
apply(from = rootProject.file("gradle/publish.gradle"))
tasks.withType<com.jfrog.bintray.gradle.tasks.BintrayUploadTask> {
doFirst {
publishing.publications
.filterIsInstance<MavenPublication>()
.forEach { publication ->
val moduleFile = buildDir.resolve("publications/${publication.name}/module.json")
if (moduleFile.exists()) {
publication.artifact(object : org.gradle.api.publish.maven.internal.artifact.FileBasedMavenArtifact(moduleFile) {
override fun getDefaultExtension() = "module"
})
}
}
}
}

View File

@ -175,14 +175,15 @@ public abstract class Group : Contact(), CoroutineScope {
/**
* 上传一个语音消息以备发送.
* 请手动关闭输入流
* 请使用mar格式
* 请使用amr或silk格式
* 请注意这是一个实验性api且随时会被删除
* @throws EventCancelledException 当发送消息事件被取消
* @throws OverFileSizeMaxException 图片文件过大而被服务器拒绝上传时. (最大大小约为 1 MB)
* @throws OverFileSizeMaxException 语音文件过大而被服务器拒绝上传时. (最大大小约为 1 MB)
*/
@JvmSynthetic
@MiraiExperimentalAPI
public abstract suspend fun uploadGroupVoice(input: InputStream): Voice
@SinceMirai("1.2.0")
public abstract suspend fun uploadVoice(input: InputStream): Voice
public companion object {

View File

@ -16,7 +16,7 @@ import kotlinx.serialization.KSerializer
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
import kotlinx.serialization.protobuf.ProtoBuf
import kotlinx.serialization.protobuf.ProtoId
import kotlinx.serialization.protobuf.ProtoNumber
import net.mamoe.mirai.utils.*
import net.mamoe.mirai.utils.internal.checkOffsetAndLength
import kotlin.jvm.JvmOverloads
@ -125,9 +125,9 @@ public sealed class CustomMessage : SingleMessage {
@Serializable
private class CustomMessageFullData(
@ProtoId(1) val miraiVersionFlag: Int,
@ProtoId(2) val typeName: String,
@ProtoId(3) val data: ByteArray
@ProtoNumber(1) val miraiVersionFlag: Int,
@ProtoNumber(2) val typeName: String,
@ProtoNumber(3) val data: ByteArray
)
public class CustomMessageFullDataDeserializeInternalException(cause: Throwable?) : RuntimeException(cause)

View File

@ -12,7 +12,7 @@ package net.mamoe.mirai.utils
import kotlinx.serialization.Serializable
import kotlinx.serialization.Transient
import kotlinx.serialization.protobuf.ProtoBuf
import kotlinx.serialization.protobuf.ProtoId
import kotlinx.serialization.protobuf.ProtoNumber
/**
* 设备信息. 可通过继承 [SystemDeviceInfo] 来在默认的基础上修改
@ -58,15 +58,15 @@ public abstract class DeviceInfo {
public fun generateDeviceInfoData(): ByteArray {
@Serializable
class DevInfo(
@ProtoId(1) val bootloader: ByteArray,
@ProtoId(2) val procVersion: ByteArray,
@ProtoId(3) val codename: ByteArray,
@ProtoId(4) val incremental: ByteArray,
@ProtoId(5) val fingerprint: ByteArray,
@ProtoId(6) val bootId: ByteArray,
@ProtoId(7) val androidId: ByteArray,
@ProtoId(8) val baseBand: ByteArray,
@ProtoId(9) val innerVersion: ByteArray
@ProtoNumber(1) val bootloader: ByteArray,
@ProtoNumber(2) val procVersion: ByteArray,
@ProtoNumber(3) val codename: ByteArray,
@ProtoNumber(4) val incremental: ByteArray,
@ProtoNumber(5) val fingerprint: ByteArray,
@ProtoNumber(6) val bootId: ByteArray,
@ProtoNumber(7) val androidId: ByteArray,
@ProtoNumber(8) val baseBand: ByteArray,
@ProtoNumber(9) val innerVersion: ByteArray
)
return ProtoBuf.encodeToByteArray(

View File

@ -119,14 +119,15 @@ public suspend fun File.uploadAsImage(contact: Contact): Image {
}
/**
* [Dispatchers.IO] 中将文件作为语音上传后构造 [Image]
* [Dispatchers.IO] 中将文件作为语音上传后构造 [Voice]
* 请手动关闭输入流
* 请使用mar格式
* 请使用amr或silk格式
* 注意这只是个实验性功能且随时可能会删除
* @throws OverFileSizeMaxException
*/
@Throws(OverFileSizeMaxException::class)
@MiraiExperimentalAPI
@SinceMirai("1.2.0")
public suspend fun InputStream.uploadAsGroupVoice(group: Group): Voice {
return group.uploadGroupVoice(this)
}