39 Commits

Author SHA1 Message Date
fb00e5c1ff Shamrock: support /create_guild_role 2024-02-03 16:31:54 +08:00
7bfb9b7b61 Shamrock: support /set_guild_member_role 2024-02-03 06:21:34 +08:00
c43689822b Shamrock: support /delete_guild_role 2024-02-03 05:59:49 +08:00
7952453137 Shamrock: support /get_guild_roles 2024-02-03 05:45:25 +08:00
2f61f6da00 Shamrock: support /get_guild_feeds 2024-02-03 03:05:38 +08:00
db252b6b6c Shamrock: support /send_guild_channel_msg 2024-02-02 22:47:38 +08:00
137c354acc Shamrock: support receiving all guild msg 2024-02-02 22:07:56 +08:00
1c7f6bd034 Shamrock: support /get_guild_member_profile 2024-02-02 19:11:45 +08:00
649d8771ca Shamrock: fix error as clover.cpp changed 2024-02-02 18:37:47 +08:00
af7b0f732e Merge remote-tracking branch 'origin/master' 2024-02-02 18:36:08 +08:00
12738fd52c Shamrock: fix #219 2024-02-02 18:35:49 +08:00
b165e1c0c2 Merge pull request #221 from PisLuanyao/master
👻
2024-02-02 18:30:03 +08:00
29c1ad8bc9 Clover.cpp
临时解决Nox提示 "QQ 屡次停止运行" ,不清楚副作用
2024-02-02 14:39:41 +08:00
262af4108b Shamrock: Anti Provider Detection 2024-02-02 09:12:36 +08:00
a22dc50f14 Shamrock: support /get_guild_member_list 2024-02-01 15:42:24 +08:00
e629981218 Shamrock: support /get_guild_channel_list 2024-02-01 14:56:30 +08:00
103381c17a Shamrock: support /get_guild_meta_by_guest 2024-02-01 00:43:04 +08:00
7540ef04bb Shamrock: support /get_guild_service_profile 2024-01-31 16:52:28 +08:00
30b48c6677 Shamrock: bypass shamrock detection 2024-01-31 12:30:48 +08:00
48e4648110 Shamrock: fix guild refresh error 2024-01-31 12:22:01 +08:00
b10b10d4a2 Shamrock: add version restrictions for GuildSdk 2024-01-31 12:17:33 +08:00
036f8a49ac Shamrock: support get_guild_list #71 2024-01-31 12:09:24 +08:00
67f52b8df0 Shamrock: fix #216 2024-01-30 22:46:28 +08:00
dd1b909bb0 Shamrock: Rewrite timeout message sending #215 2024-01-30 18:27:47 +08:00
72c3c7bdf7 Shamrock: Rewrite timeout message sending 2024-01-30 18:23:48 +08:00
e0e7a9fc2e Shamrock: 支持新年龙表情,点开提交查看评论获取使用方法 2024-01-30 15:09:11 +08:00
b3d853dec3 Shamrock: support original for Image 2024-01-30 00:49:33 +08:00
e0a4aad3cd Shamrock: fix QuickOperation 2024-01-30 00:38:14 +08:00
328e656859 Shamrock: try fix #214 2024-01-30 00:25:32 +08:00
c97f79335a Shamrock: Support /set_group_comment_face 2024-01-28 23:45:05 +08:00
e07e75747a Shamrock: Support big face and bubble face 2024-01-28 23:22:06 +08:00
9482641c38 Shamrock: fix #213 2024-01-28 22:38:54 +08:00
a485e72ddf Shamrock: Adjusting the xposed API for KSP 2024-01-28 15:38:36 +08:00
c7265ba628 Shamrock: Remove outdated dependencies and add new APIs 2024-01-27 21:06:39 +08:00
c39c2a172f Shamrock: Fix #199 2024-01-25 15:13:27 +08:00
64b7b00253 Shamrock: Failed to modify UID and obtain result 0 2024-01-23 00:49:31 +08:00
ec132d224e Shamrock: 为请求事件增加user_uid #150 2024-01-23 00:36:44 +08:00
9c9fbfa753 Merge remote-tracking branch 'origin/master' 2024-01-23 00:26:29 +08:00
4b5932b319 Shamrock: fix #190 2024-01-23 00:26:11 +08:00
1849 changed files with 33872 additions and 5368 deletions

1
annotations/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/build

View File

@ -0,0 +1,9 @@
plugins {
id("java-library")
id("org.jetbrains.kotlin.jvm")
}
java {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}

View File

@ -0,0 +1,8 @@
package moe.fuqiuluo.symbols
@Retention(AnnotationRetention.SOURCE)
@Target(AnnotationTarget.CLASS)
annotation class OneBotHandler(
val actionName: String,
val alias: Array<String> = []
)

View File

@ -0,0 +1,13 @@
package moe.fuqiuluo.symbols
enum class Process {
ALL,
MAIN,
MSF
}
@Target(AnnotationTarget.CLASS)
annotation class XposedHook(
val process: Process = Process.ALL,
val priority: Int = 10
)

View File

@ -4,7 +4,7 @@ import java.io.ByteArrayOutputStream
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
kotlin("plugin.serialization") version "1.8.10"
kotlin("plugin.serialization") version "1.9.21"
}
android {
@ -17,7 +17,7 @@ android {
minSdk = 27
targetSdk = 34
versionCode = getVersionCode()
versionName = "1.0.7" + ".r${getGitCommitCount()}." + getVersionName()
versionName = "1.0.8" + ".r${getGitCommitCount()}." + getVersionName()
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
@ -92,7 +92,7 @@ android {
compose = true
}
composeOptions {
kotlinCompilerExtensionVersion = "1.4.3"
kotlinCompilerExtensionVersion = "1.5.4"
}
packaging {
jniLibs {
@ -187,10 +187,13 @@ fun getVersionName(): String {
}
dependencies {
implementation("androidx.core:core-ktx:1.9.0")
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.1")
implementation("androidx.activity:activity-compose:1.7.2")
implementation(platform("androidx.compose:compose-bom:2023.06.01"))
val composeBom = platform("androidx.compose:compose-bom:2023.10.01")
implementation(composeBom)
DEPENDENCY_ANDROIDX.forEach {
implementation(it)
}
implementation("androidx.compose.ui:ui")
implementation("androidx.compose.ui:ui-graphics")
implementation("androidx.compose.ui:ui-tooling-preview")
@ -199,31 +202,26 @@ dependencies {
implementation("com.google.accompanist:accompanist-pager:0.31.5+")
//noinspection GradleDynamicVersion
implementation("com.google.accompanist:accompanist-systemuicontroller:0.31.5+")
//noinspection GradleDynamicVersion useless
// implementation("androidx.constraintlayout:constraintlayout-compose:1.1.0+")
implementation("io.coil-kt:coil:2.4.0")
implementation("io.coil-kt:coil-compose:2.4.0")
implementation("org.jetbrains.kotlinx:kotlinx-io-jvm:0.1.16")
val ktorVersion = "2.3.3"
implementation("io.ktor:ktor-server-core:$ktorVersion")
implementation("io.ktor:ktor-server-host-common:$ktorVersion")
implementation("io.ktor:ktor-server-status-pages:$ktorVersion")
implementation("io.ktor:ktor-server-netty:$ktorVersion")
implementation("io.ktor:ktor-server-content-negotiation:$ktorVersion")
implementation("io.ktor:ktor-client-core:$ktorVersion")
implementation("io.ktor:ktor-client-cio:$ktorVersion")
implementation("io.ktor:ktor-client-content-negotiation:$ktorVersion")
implementation("io.ktor:ktor-serialization-kotlinx-json:$ktorVersion")
//implementation("io.ktor:ktor-serialization-kotlinx-protobuf:$ktorVersion")
implementation(kotlinx("io-jvm", "0.1.16"))
implementation(ktor("server", "core"))
implementation(ktor("server", "host-common"))
implementation(ktor("server", "status-pages"))
implementation(ktor("server", "netty"))
implementation(ktor("server", "content-negotiation"))
implementation(ktor("client", "core"))
implementation(ktor("client", "content-negotiation"))
implementation(ktor("client", "cio"))
implementation(ktor("serialization", "kotlinx-json"))
implementation(project(":xposed"))
testImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test.ext:junit:1.1.5")
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
androidTestImplementation(platform("androidx.compose:compose-bom:2023.06.01"))
androidTestImplementation(platform("androidx.compose:compose-bom:2023.10.01"))
androidTestImplementation("androidx.compose.ui:ui-test-junit4")
debugImplementation("androidx.compose.ui:ui-tooling")
debugImplementation("androidx.compose.ui:ui-test-manifest")

View File

@ -31,7 +31,7 @@
<provider
android:name=".ui.service.internal.MultifunctionalProvider"
android:authorities="moe.fuqiuluo.xqbot.provider"
android:authorities="moe.fuqiuluo.108.provider"
android:exported="true"
android:grantUriPermissions="true"
tools:ignore="ExportedContentProvider" />

View File

@ -12,7 +12,7 @@
extern "C"
JNIEXPORT jstring JNICALL
Java_moe_fuqiuluo_shamrock_xposed_actions_PullConfig_testNativeLibrary(JNIEnv *env, jobject thiz) {
Java_moe_fuqiuluo_shamrock_xposed_hooks_PullConfig_testNativeLibrary(JNIEnv *env, jobject thiz) {
return env->NewStringUTF("加载Shamrock库成功~");
}

View File

@ -85,6 +85,7 @@ import moe.fuqiuluo.shamrock.ui.tools.getShamrockVersion
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
CompositionLocalProvider(
LocalIndication provides NoIndication

View File

@ -249,6 +249,11 @@ object ShamrockConfig {
return preferences.getBoolean("enable_auto_start", false)
}
fun disableAutoSyncSetting(ctx: Context): Boolean {
val preferences = ctx.getSharedPreferences("config", 0)
return preferences.getBoolean("disable_auto_sync_setting", false)
}
fun enableAliveReply(ctx: Context): Boolean {
val preferences = ctx.getSharedPreferences("config", 0)
return preferences.getBoolean("alive_reply", false)
@ -264,6 +269,11 @@ object ShamrockConfig {
preferences.edit().putBoolean("enable_auto_start", v).apply()
}
fun setDisableAutoSyncSetting(ctx: Context, v: Boolean) {
val preferences = ctx.getSharedPreferences("config", 0)
preferences.edit().putBoolean("disable_auto_sync_setting", v).apply()
}
fun setAliveReply(ctx: Context, v: Boolean) {
val preferences = ctx.getSharedPreferences("config", 0)
preferences.edit().putBoolean("alive_reply", v).apply()
@ -322,6 +332,7 @@ object ShamrockConfig {
"shell" to preferences.getBoolean("shell", false),
"alive_reply" to preferences.getBoolean("alive_reply", false),
"enable_sync_msg_as_sent_msg" to preferences.getBoolean("enable_sync_msg_as_sent_msg", false),
"disable_auto_sync_setting" to preferences.getBoolean("disable_auto_sync_setting", false),
)
}

View File

@ -91,7 +91,7 @@ fun LabFragment() {
ActionBox(
modifier = Modifier.padding(top = 12.dp),
painter = painterResource(id = R.drawable.round_logo_dev_24),
title = "实验功能"
title = "基础设置"
) { color ->
Column {
Divider(
@ -142,6 +142,16 @@ fun LabFragment() {
return@Function true
}
Function(
title = "禁止Shamrock同步设置",
desc = "禁止Shamrock同步设置防止恢复手动修改后的配置文件。",
descColor = color,
isSwitch = ShamrockConfig.disableAutoSyncSetting(ctx)
) {
ShamrockConfig.setDisableAutoSyncSetting(ctx, it)
return@Function true
}
kotlin.runCatching {
ctx.getSharedPreferences("shared_config", Context.MODE_WORLD_READABLE)
}.onSuccess {

View File

@ -7,7 +7,6 @@ import android.content.Intent
import android.os.Bundle
import androidx.core.content.ContextCompat.startActivity
import io.ktor.client.request.get
import io.ktor.client.request.header
import io.ktor.client.request.parameter
import io.ktor.client.request.url
import io.ktor.client.statement.bodyAsText
@ -17,9 +16,9 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import kotlinx.serialization.json.Json
import moe.fuqiuluo.shamrock.remote.entries.CommonResult
import moe.fuqiuluo.shamrock.remote.entries.CurrentAccount
import moe.fuqiuluo.shamrock.remote.entries.Status
import moe.fuqiuluo.shamrock.remote.structures.CommonResult
import moe.fuqiuluo.shamrock.remote.structures.CurrentAccount
import moe.fuqiuluo.shamrock.remote.structures.Status
import moe.fuqiuluo.shamrock.tools.GlobalClient
import moe.fuqiuluo.shamrock.ui.app.AppRuntime.AccountInfo
import moe.fuqiuluo.shamrock.ui.app.AppRuntime.log

View File

@ -1,7 +1,6 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
id("com.android.application") version "8.2.0" apply false
id("org.jetbrains.kotlin.android") version "1.8.10" apply false
id("org.jetbrains.kotlin.android") version "1.9.20" apply false
id("com.android.library") version "8.2.0" apply false
//id("io.realm.kotlin") version "1.11.0" apply false
}
}

10
buildSrc/build.gradle.kts Normal file
View File

@ -0,0 +1,10 @@
plugins {
kotlin("jvm") version "1.9.21"
}
repositories {
mavenCentral()
}
dependencies {
}

View File

@ -0,0 +1,26 @@
val DEPENDENCY_ANDROIDX = arrayOf(
"androidx.core:core-ktx:1.12.0",
"androidx.appcompat:appcompat:1.6.1",
"com.google.android.material:material:1.11.0",
"androidx.exifinterface:exifinterface:1.3.7",
"androidx.lifecycle:lifecycle-runtime-ktx:2.6.1",
"androidx.activity:activity-compose:1.7.2",
)
const val DEPENDENCY_JSON5K = "io.github.xn32:json5k:0.3.0"
const val DEPENDENCY_PROTOBUF = "com.google.protobuf:protobuf-java:3.24.0"
const val DEPENDENCY_JAVA_WEBSOCKET = "org.java-websocket:Java-WebSocket:1.5.4"
fun room(name: String) = "androidx.room:room-$name:${Versions.roomVersion}"
fun kotlinx(name: String, version: String) = "org.jetbrains.kotlinx:kotlinx-$name:$version"
fun ktor(target: String, name: String): String {
return "io.ktor:ktor-$target-$name:${Versions.ktorVersion}"
}
object Versions {
const val roomVersion = "2.5.0"
const val ktorVersion = "2.3.3"
}

View File

@ -21,4 +21,6 @@ kotlin.code.style=official
# resources declared in the library itself and none from the library's dependencies,
# thereby reducing the size of the R class for that library
android.nonTransitiveRClass=true
android.default.buildFeatures.aidl=true
android.default.buildFeatures.aidl=true
kotlin.experimental.tryK2=true
ksp.incremental=false

1
processor/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/build

View File

@ -0,0 +1,18 @@
plugins {
kotlin("jvm")
id("com.google.devtools.ksp") version "1.9.21-1.0.15"
}
ksp {
arg("autoserviceKsp.verify", "true")
arg("autoserviceKsp.verbose", "true")
}
dependencies {
implementation(project(":annotations"))
implementation("com.google.auto.service:auto-service-annotations:1.1.1")
implementation("com.google.devtools.ksp:symbol-processing-api:1.9.21-1.0.15")
implementation("com.squareup:kotlinpoet:1.14.2")
ksp("dev.zacsweers.autoservice:auto-service-ksp:1.1.0")
}

View File

21
processor/proguard-rules.pro vendored Normal file
View File

@ -0,0 +1,21 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
</manifest>

View File

@ -0,0 +1,84 @@
@file:OptIn(KspExperimental::class)
@file:Suppress("LocalVariableName", "UNCHECKED_CAST")
package moe.fuqiuluo.ksp.impl
import com.google.devtools.ksp.KspExperimental
import com.google.devtools.ksp.getAnnotationsByType
import com.google.devtools.ksp.getClassDeclarationByName
import com.google.devtools.ksp.processing.CodeGenerator
import com.google.devtools.ksp.processing.Dependencies
import com.google.devtools.ksp.processing.KSPLogger
import com.google.devtools.ksp.processing.Resolver
import com.google.devtools.ksp.processing.SymbolProcessor
import com.google.devtools.ksp.symbol.ClassKind
import com.google.devtools.ksp.symbol.KSAnnotated
import com.google.devtools.ksp.symbol.KSClassDeclaration
import com.google.devtools.ksp.symbol.KSVisitorVoid
import com.google.devtools.ksp.validate
import com.squareup.kotlinpoet.FileSpec
import com.squareup.kotlinpoet.FunSpec
import moe.fuqiuluo.symbols.OneBotHandler
class OneBotHandlerProcessor(
private val codeGenerator: CodeGenerator,
private val logger: KSPLogger
): SymbolProcessor {
override fun process(resolver: Resolver): List<KSAnnotated> {
val ActionManagerNode = resolver.getClassDeclarationByName("moe.fuqiuluo.shamrock.remote.action.ActionManager")
if (ActionManagerNode == null) {
logger.error("OneBotHandlerProcessor: ActionManager not found")
return emptyList()
}
val symbols = resolver.getSymbolsWithAnnotation(OneBotHandler::class.qualifiedName!!)
val unableToProcess = symbols.filterNot { it.validate() }
val oneBotHandlers = (symbols.filter {
it is KSClassDeclaration && it.validate() && it.classKind == ClassKind.OBJECT
} as Sequence<KSClassDeclaration>).toList()
if (oneBotHandlers.isNotEmpty()) {
ActionManagerNode.accept(ActionManagerVisitor(oneBotHandlers), Unit)
}
return unableToProcess.toList()
}
inner class ActionManagerVisitor(
private val actionHandlers: List<KSClassDeclaration>
): KSVisitorVoid() {
override fun visitClassDeclaration(classDeclaration: KSClassDeclaration, data: Unit) {
val packageName = classDeclaration.packageName.asString()
// generate kotlin `init { }`
val fileSpec = FileSpec.builder(packageName, classDeclaration.qualifiedName?.asString() ?: run {
throw IllegalStateException("ActionManagerVisitor: classDeclaration.qualifiedName is null")
}).addFunction(FunSpec.builder("initManager").apply {
actionHandlers.forEach { handler ->
// fetch the params of the annotation
val annotation = handler.getAnnotationsByType(OneBotHandler::class).first()
val actionName = annotation.actionName
val alias = annotation.alias
alias.forEach { name ->
addStatement("actionMap[\"$name\"] = ${handler.simpleName.asString()}")
}
addStatement("actionMap[\"$actionName\"] = ${handler.simpleName.asString()}")
}
}.build()).apply {
addImport("moe.fuqiuluo.shamrock.remote.action.ActionManager", "actionMap")
actionHandlers.forEach {
addImport(it.packageName.asString(), it.simpleName.asString())
}
}.build()
codeGenerator.createNewFile(
dependencies = Dependencies(aggregating = false),
packageName = packageName,
fileName = "Auto" + classDeclaration.simpleName.asString()
).use { outputStream ->
outputStream.writer().use {
fileSpec.writeTo(it)
}
}
}
}
}

View File

@ -0,0 +1,111 @@
@file:Suppress("UNCHECKED_CAST", "LocalVariableName", "PrivatePropertyName")
@file:OptIn(KspExperimental::class)
package moe.fuqiuluo.ksp.impl
import com.google.devtools.ksp.KspExperimental
import com.google.devtools.ksp.getAnnotationsByType
import com.google.devtools.ksp.getClassDeclarationByName
import com.google.devtools.ksp.processing.CodeGenerator
import com.google.devtools.ksp.processing.Dependencies
import com.google.devtools.ksp.processing.KSPLogger
import com.google.devtools.ksp.processing.Resolver
import com.google.devtools.ksp.processing.SymbolProcessor
import com.google.devtools.ksp.symbol.ClassKind
import com.google.devtools.ksp.symbol.KSAnnotated
import com.google.devtools.ksp.symbol.KSClassDeclaration
import com.google.devtools.ksp.symbol.KSVisitorVoid
import com.google.devtools.ksp.validate
import com.squareup.kotlinpoet.ClassName
import com.squareup.kotlinpoet.FileSpec
import com.squareup.kotlinpoet.FunSpec
import moe.fuqiuluo.symbols.Process
import moe.fuqiuluo.symbols.XposedHook
class XposedHookProcessor(
private val codeGenerator: CodeGenerator,
private val logger: KSPLogger
): SymbolProcessor {
override fun process(resolver: Resolver): List<KSAnnotated> {
val symbols = resolver.getSymbolsWithAnnotation(XposedHook::class.qualifiedName!!)
val unableToProcess = symbols.filterNot { it.validate() }
val actions = (symbols.filter {
it is KSClassDeclaration && it.validate() && it.classKind == ClassKind.CLASS
} as Sequence<KSClassDeclaration>).toList()
if (actions.isNotEmpty()) {
val firstActions = arrayListOf<KSClassDeclaration>()
val serviceActions = arrayListOf<KSClassDeclaration>()
actions.forEach {
val priority = it.getAnnotationsByType(XposedHook::class).first().priority
if (priority >= 10) {
serviceActions.add(it)
} else {
firstActions.add(it)
}
}
val context = ClassName("android.content", "Context")
val packageName = "moe.fuqiuluo.shamrock.xposed.hooks"
val fileSpec = FileSpec.builder(packageName, "AutoActionLoader").addFunction(FunSpec.builder("runFirstActions")
.addParameter("ctx", context)
.apply {
firstActions.forEach { handler ->
val annotation = handler.getAnnotationsByType(XposedHook::class).first()
val process = annotation.process
val className = handler.simpleName.asString()
if (process == Process.MAIN) {
addStatement("if (PlatformUtils.isMainProcess()) ")
} else if (process == Process.MSF) {
addStatement("if (PlatformUtils.isMsfProcess()) ")
}
addStatement("$className().invoke(ctx)")
}
}.build()
).addFunction(FunSpec.builder("runServiceActions")
.addParameter("ctx", context).apply {
serviceActions.forEach { handler ->
val annotation = handler.getAnnotationsByType(XposedHook::class).first()
val process = annotation.process
val className = handler.simpleName.asString()
if (process == Process.MAIN) {
addStatement("if (PlatformUtils.isMainProcess()) ")
} else if (process == Process.MSF) {
addStatement("if (PlatformUtils.isMsfProcess()) ")
}
addStatement("$className().invoke(ctx)")
}
}.build()
).apply {
firstActions.forEach {
addImport(it.packageName.asString(), it.simpleName.asString())
}
serviceActions.forEach {
addImport(it.packageName.asString(), it.simpleName.asString())
}
addImport("moe.fuqiuluo.shamrock.utils", "PlatformUtils")
}.build()
codeGenerator.createNewFile(
dependencies = Dependencies(aggregating = false),
packageName = packageName,
fileName = "AutoActionLoader"
).use { outputStream ->
outputStream.writer().use {
fileSpec.writeTo(it)
}
}
}
return unableToProcess.toList()
}
inner class ActionLoaderVisitor(
private val firstActions: List<KSClassDeclaration>,
private val serviceActions: List<KSClassDeclaration>,
): KSVisitorVoid() {
override fun visitClassDeclaration(classDeclaration: KSClassDeclaration, data: Unit) {
}
}
}

View File

@ -0,0 +1,17 @@
package moe.fuqiuluo.ksp.providers
import com.google.auto.service.AutoService
import com.google.devtools.ksp.processing.SymbolProcessor
import com.google.devtools.ksp.processing.SymbolProcessorEnvironment
import com.google.devtools.ksp.processing.SymbolProcessorProvider
import moe.fuqiuluo.ksp.impl.OneBotHandlerProcessor
@AutoService(SymbolProcessorProvider::class)
class OneBotHandlerProcessorProvider: SymbolProcessorProvider {
override fun create(environment: SymbolProcessorEnvironment): SymbolProcessor {
return OneBotHandlerProcessor(
environment.codeGenerator,
environment.logger
)
}
}

View File

@ -0,0 +1,14 @@
package moe.fuqiuluo.ksp.providers
import com.google.auto.service.AutoService
import com.google.devtools.ksp.processing.SymbolProcessor
import com.google.devtools.ksp.processing.SymbolProcessorEnvironment
import com.google.devtools.ksp.processing.SymbolProcessorProvider
import moe.fuqiuluo.ksp.impl.XposedHookProcessor
@AutoService(SymbolProcessorProvider::class)
class XposedHookProcessorProvider: SymbolProcessorProvider {
override fun create(environment: SymbolProcessorEnvironment): SymbolProcessor {
return XposedHookProcessor(environment.codeGenerator, environment.logger)
}
}

1
protobuf/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/build

41
protobuf/build.gradle.kts Normal file
View File

@ -0,0 +1,41 @@
plugins {
id("com.android.library")
id("org.jetbrains.kotlin.android")
kotlin("plugin.serialization") version "1.9.21"
}
android {
namespace = "moe.whitechi73.protobuf"
compileSdk = 34
defaultConfig {
minSdk = 24
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles("consumer-rules.pro")
}
buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
}
dependencies {
implementation(DEPENDENCY_PROTOBUF)
implementation(kotlinx("serialization-protobuf", "1.6.2"))
implementation(kotlinx("serialization-json", "1.6.2"))
}

View File

21
protobuf/proguard-rules.pro vendored Normal file
View File

@ -0,0 +1,21 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
</manifest>

View File

@ -0,0 +1,128 @@
@file:OptIn(ExperimentalSerializationApi::class)
@file:Suppress("ArrayInDataClass")
package protobuf.fav
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class WeiyunAddRichMediaReq(
@ProtoNumber(1) val commInfo: WeiyunCollectCommInfo? = null,
@ProtoNumber(2) val summary: WeiyunRichMediaSummary? = null,
@ProtoNumber(3) val richMediaContent: List<WeiyunRichMediaContent>? = null,
@ProtoNumber(4) val needShareUrl: Boolean = false,
)
@Serializable
data class WeiyunRichMediaSummary(
@ProtoNumber(1) val title: String? = null,
@ProtoNumber(2) val subTitle: String = "",
@ProtoNumber(3) val brief: String = "",
@ProtoNumber(4) val picList: List<WeiyunPicInfo>? = null,
@ProtoNumber(5) val contentType: UInt = UInt.MIN_VALUE,
@ProtoNumber(6) val originalUri: String = "",
@ProtoNumber(7) val publisher: String = "",
@ProtoNumber(8) val richMediaVersion: UInt = UInt.MIN_VALUE,
)
@Serializable
data class WeiyunRichMediaContent(
@ProtoNumber(1) val richMedia: WeiyunRichMedia? = null,
@ProtoNumber(2) val rawData: ByteArray? = null,
@ProtoNumber(3) val bizDataList: List<ByteArray>? = null,
@ProtoNumber(4) val picList: List<WeiyunPicInfo>? = null,
@ProtoNumber(5) val fileList: List<WeiyunFileInfo>? = null,
)
@Serializable
data class WeiyunFileInfo(
@ProtoNumber(1) val src: UInt = UInt.MIN_VALUE,
@ProtoNumber(2) val uid: ULong = ULong.MIN_VALUE,
@ProtoNumber(3) val bid: UInt = UInt.MIN_VALUE,
@ProtoNumber(4) val fid: String = "",
@ProtoNumber(5) val name: String = "",
@ProtoNumber(6) val size: ULong = ULong.MIN_VALUE,
@ProtoNumber(7) val md5: ByteArray? = null,
@ProtoNumber(8) val sha1: ByteArray? = null,
@ProtoNumber(9) val category: UInt = UInt.MIN_VALUE,
)
@Serializable
data class WeiyunRichMedia(
@ProtoNumber(1) val sections: List<WeiyunSection>? = null
)
@Serializable
data class WeiyunSection(
@ProtoNumber(1) val items: List<WeiyunItem>? = null
)
@Serializable
data class WeiyunItem(
@ProtoNumber(1) val itemType: UInt = UInt.MIN_VALUE,
@ProtoNumber(2) val paragraph: WeiyunParagraph? = null,
@ProtoNumber(3) val anchor: WeiyunAnchor? = null,
@ProtoNumber(4) val picInfo: WeiyunPicInfo? = null,
)
@Serializable
data class WeiyunPicInfo(
@ProtoNumber(1) val uri: String = "",
@ProtoNumber(2) val md5: ByteArray? = null,
@ProtoNumber(3) val sha1: ByteArray? = null,
@ProtoNumber(4) val name: String = "",
@ProtoNumber(5) val note: String = "",
@ProtoNumber(6) val width: UInt = UInt.MIN_VALUE,
@ProtoNumber(7) val height: UInt = UInt.MIN_VALUE,
@ProtoNumber(8) val size: ULong = ULong.MIN_VALUE,
@ProtoNumber(9) val type: UInt = UInt.MIN_VALUE,
@ProtoNumber(10) val owner: WeiyunAuthor? = null,
@ProtoNumber(11) val picId: String = "",
)
@Serializable
data class WeiyunAnchor(
@ProtoNumber(1) val url: String = "",
@ProtoNumber(2) val desc: String = "",
)
@Serializable
data class WeiyunParagraph(
@ProtoNumber(1) val content: String = "",
@ProtoNumber(2) val style: WeiyunStyle? = null,
)
@Serializable
data class WeiyunStyle(
@ProtoNumber(1) val color: String = "#FFFFFF",
@ProtoNumber(2) val fontFamily: String = "",
@ProtoNumber(3) val fontWeight: String = "normal",
@ProtoNumber(4) val fontSize: String = "",
)
@Serializable
data class WeiyunCollectCommInfo(
@ProtoNumber(1) val bid: UInt = UInt.MIN_VALUE,
@ProtoNumber(2) val category: UInt = UInt.MIN_VALUE,
@ProtoNumber(3) val author: WeiyunAuthor? = null,
@ProtoNumber(4) val createTime: ULong = ULong.MIN_VALUE,
@ProtoNumber(5) val seq: ULong = ULong.MIN_VALUE,
@ProtoNumber(6) val bizKey: String = "",
@ProtoNumber(7) val bizDataList: List<ByteArray>? = null,
@ProtoNumber(8) val shareUrl: String = "",
@ProtoNumber(9) val originalAppId: UInt = UInt.MIN_VALUE,
@ProtoNumber(10) val customGroupId: UInt = UInt.MIN_VALUE,
@ProtoNumber(11) val modifyTime: ULong = ULong.MIN_VALUE,
@ProtoNumber(12) val qzoneUgcKey: String = "",
)
@Serializable
data class WeiyunAuthor(
@ProtoNumber(1) val type: UInt = UInt.MIN_VALUE,
@ProtoNumber(2) val numId: ULong = ULong.MIN_VALUE,
@ProtoNumber(3) val strId: String = "",
@ProtoNumber(4) val groupId: ULong = ULong.MIN_VALUE,
@ProtoNumber(5) val groupName: String = "",
)

View File

@ -0,0 +1,13 @@
@file:OptIn(ExperimentalSerializationApi::class)
package protobuf.fav
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class WeiyunAddRichMediaResp(
@ProtoNumber(1) val cid: String = "",
@ProtoNumber(2) val collectTime: ULong = ULong.MIN_VALUE,
@ProtoNumber(3) val shareUrl: String = "",
)

View File

@ -0,0 +1,10 @@
package protobuf.fav
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class WeiyunComm(
@ProtoNumber(1) val req: WeiyunCommonReq? = null,
@ProtoNumber(2) val resp: WeiyunCommonResp? = null
)

View File

@ -0,0 +1,15 @@
@file:OptIn(ExperimentalSerializationApi::class)
package protobuf.fav
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class WeiyunCommonReq (
@ProtoNumber(2000) val getFavListReq: WeiyunGetFavListReq? = null,
@ProtoNumber(2001) val getFavContentReq: WeiyunGetFavContentReq? = null,
@ProtoNumber(2009) val addRichMediaReq: WeiyunAddRichMediaReq? = null,
@ProtoNumber(2010) val fastUploadResourceReq: WeiyunFastUploadResourceReq? = null,
)

View File

@ -0,0 +1,14 @@
@file:OptIn(ExperimentalSerializationApi::class)
package protobuf.fav
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class WeiyunCommonResp(
@ProtoNumber(20000) val getFavListResp: WeiyunGetFavListResp? = null,
@ProtoNumber(20001) val getFavContentResp: WeiyunGetFavContentResp? = null,
@ProtoNumber(20009) val addRichMediaResp: WeiyunAddRichMediaResp? = null,
@ProtoNumber(20010) val fastUploadResourceResp: WeiyunFastUploadResourceResp? = null,
)

View File

@ -0,0 +1,14 @@
@file:OptIn(ExperimentalSerializationApi::class)
package protobuf.fav
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class WeiyunFastUploadResourceReq(
@ProtoNumber(1) val picInfoList: List<WeiyunPicInfo>? = null,
@ProtoNumber(2) val fileInfoList: List<WeiyunFileInfo>? = null,
@ProtoNumber(3) val hostFlag: UInt = UInt.MIN_VALUE,
@ProtoNumber(4) val httpsFlag: UInt = UInt.MIN_VALUE,
)

View File

@ -0,0 +1,39 @@
@file:OptIn(ExperimentalSerializationApi::class)
package protobuf.fav
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class WeiyunFastUploadResourceResp(
@ProtoNumber(1) val picResultList: List<WeiyunFastUploadPicResult>? = null,
@ProtoNumber(2) val fileResultList: List<WeiyunFastUploadFileResult>? = null,
)
@Serializable
data class WeiyunFastUploadPicResult(
@ProtoNumber(1) val result: UInt = UInt.MIN_VALUE,
@ProtoNumber(2) val picInfo: WeiyunPicInfo? = null,
)
@Serializable
data class WeiyunFastUploadFileResult(
@ProtoNumber(1) val result: UInt = UInt.MIN_VALUE,
@ProtoNumber(2) val picInfo: WeiyunPicInfo? = null,
@ProtoNumber(3) val uploadFileInfo: WeiyunUploadFileInfo? = null,
@ProtoNumber(4) val notRetransmission: UInt = UInt.MIN_VALUE,
@ProtoNumber(5) val failedTips: String = "",
)
@Serializable
data class WeiyunUploadFileInfo(
@ProtoNumber(1) val fileId: String = "",
@ProtoNumber(2) val sha1: ByteArray? = null,
@ProtoNumber(3) val checkKey: ByteArray? = null,
@ProtoNumber(4) val host: String = "",
@ProtoNumber(5) val port: UInt = UInt.MIN_VALUE,
@ProtoNumber(6) val httpsHost: String = "",
@ProtoNumber(7) val httpsPort: UInt = UInt.MIN_VALUE,
)

View File

@ -0,0 +1,11 @@
@file:OptIn(ExperimentalSerializationApi::class)
package protobuf.fav
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class WeiyunGetFavContentReq(
@ProtoNumber(1) var cidList: List<String> = emptyList(),
)

View File

@ -0,0 +1,50 @@
@file:OptIn(ExperimentalSerializationApi::class)
package protobuf.fav
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class WeiyunGetFavContentResp(
@ProtoNumber(1) val content: List<WeiyunContent>? = null
)
@Serializable
data class WeiyunContent(
@ProtoNumber(1) val text: WeiyunTextContent? = null,
@ProtoNumber(2) val link: WeiyunLinkContent? = null,
@ProtoNumber(3) val galley: WeiyunGalleyContent? = null,
@ProtoNumber(4) val audio: WeiyunAudioContent? = null,
@ProtoNumber(5) val video: WeiyunVideoContent? = null,
@ProtoNumber(6) val file: WeiyunFileContent? = null,
@ProtoNumber(7) val location: WeiyunLocationContent? = null,
@ProtoNumber(8) val richMedia: WeiyunRichMediaContent? = null,
)
@Serializable
data class WeiyunTextContent(
@ProtoNumber(1) val data: String,
@ProtoNumber(2) val hasEmoji: Boolean = false
)
@Serializable
class WeiyunLinkContent
@Serializable
class WeiyunGalleyContent
@Serializable
data class WeiyunAudioContent(
@ProtoNumber(1) val data: ByteArray,
)
@Serializable
class WeiyunVideoContent
@Serializable
class WeiyunFileContent
@Serializable
class WeiyunLocationContent

View File

@ -0,0 +1,19 @@
@file:OptIn(ExperimentalSerializationApi::class)
package protobuf.fav
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class WeiyunGetFavListReq(
@ProtoNumber(1) val type: UInt = UInt.MIN_VALUE,
@ProtoNumber(2) val bid: UInt = UInt.MIN_VALUE,
@ProtoNumber(3) val category: UInt = UInt.MIN_VALUE,
@ProtoNumber(4) val startTime: ULong = ULong.MIN_VALUE,
@ProtoNumber(5) val orderType: UInt = UInt.MIN_VALUE,
@ProtoNumber(6) val startPos: UInt = UInt.MIN_VALUE,
@ProtoNumber(7) val pageSize: UInt = UInt.MIN_VALUE,
@ProtoNumber(8) val syncPolicy: UInt = UInt.MIN_VALUE,
@ProtoNumber(9) val reqSource: UInt = UInt.MIN_VALUE,
)

View File

@ -0,0 +1,41 @@
@file:OptIn(ExperimentalSerializationApi::class)
package protobuf.fav
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class WeiyunGetFavListResp(
@ProtoNumber(1) val collections: List<WeiyunCollection>? = null,
@ProtoNumber(2) val totalCnt: UInt = UInt.MIN_VALUE,
@ProtoNumber(3) val result: UInt = UInt.MIN_VALUE,
)
@Serializable
data class WeiyunCollection(
@ProtoNumber(1) val cid: String = "",
@ProtoNumber(2) val type: Int = Int.MIN_VALUE,
@ProtoNumber(3) val status: Int = Int.MIN_VALUE,
@ProtoNumber(4) val author: WeiyunAuthor? = null,
@ProtoNumber(5) val bid: UInt = UInt.MIN_VALUE,
@ProtoNumber(6) val srcAppId: UInt = UInt.MIN_VALUE,
@ProtoNumber(7) val srcAppVer: String = "",
@ProtoNumber(8) val category: UInt = UInt.MIN_VALUE,
@ProtoNumber(9) val createTime: ULong = ULong.MIN_VALUE,
@ProtoNumber(10) val collectTime: ULong = ULong.MIN_VALUE,
@ProtoNumber(11) val modifyTime: ULong = ULong.MIN_VALUE,
@ProtoNumber(12) val seq: ULong = ULong.MIN_VALUE,
@ProtoNumber(13) val bizKey: String = "",
@ProtoNumber(14) val bizDataList: List<ByteArray>? = null,
@ProtoNumber(15) val summary: String = "",
@ProtoNumber(16) val starMark: Boolean = false,
@ProtoNumber(17) val starTime: ULong = ULong.MIN_VALUE,
@ProtoNumber(18) val shareUrl: String = "",
@ProtoNumber(19) val originalAppId: UInt = UInt.MIN_VALUE,
@ProtoNumber(20) val customGroupId: UInt = UInt.MIN_VALUE,
@ProtoNumber(21) val securityBeat: UInt = UInt.MIN_VALUE,
@ProtoNumber(22) val qzoneUgcKey: String = "",
)

View File

@ -0,0 +1,30 @@
@file:OptIn(ExperimentalSerializationApi::class)
@file:Suppress("ArrayInDataClass")
package protobuf.fav
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class WeiyunMsgHead(
@ProtoNumber(1) val uin: ULong = ULong.MIN_VALUE,
@ProtoNumber(2) val seq: UInt = UInt.MIN_VALUE,
@ProtoNumber(3) val type: UInt = UInt.MIN_VALUE,
@ProtoNumber(4) val cmd: UInt = UInt.MIN_VALUE,
@ProtoNumber(5) val appId: UInt = UInt.MIN_VALUE,
@ProtoNumber(6) val version: UInt = UInt.MIN_VALUE,
@ProtoNumber(7) val netType: UInt = UInt.MIN_VALUE,
@ProtoNumber(8) val clientIp: String? = null,
@ProtoNumber(9) val encrypt: UInt = UInt.MIN_VALUE,
@ProtoNumber(10) val keyType: UInt = UInt.MIN_VALUE,
@ProtoNumber(11) val key: ByteArray? = null,
@ProtoNumber(14) val majorVersion: UInt = UInt.MIN_VALUE,
@ProtoNumber(15) val minorVersion: UInt = UInt.MIN_VALUE,
@ProtoNumber(101) val retCode: UInt = UInt.MIN_VALUE,
@ProtoNumber(102) val retMsg: String? = null,
@ProtoNumber(103) val promptMsg: String? = null,
@ProtoNumber(111) val totalSpace: ULong = ULong.MIN_VALUE,
@ProtoNumber(112) val usedSpace: ULong = ULong.MIN_VALUE,
)

View File

@ -0,0 +1,20 @@
package protobuf.group_file_common
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class FolderInfo(
@SerialName("folder_id") @ProtoNumber(1) val folderId: String = "",
@SerialName("parent_folder_id") @ProtoNumber(2) val parentFolderId: String = "",
@SerialName("folder_name") @ProtoNumber(3) val folderName: String = "",
@SerialName("create_time") @ProtoNumber(4) val createTime: UInt = UInt.MIN_VALUE,
@SerialName("modify_time") @ProtoNumber(5) val modifyTime: UInt = UInt.MIN_VALUE,
@SerialName("creator_uin") @ProtoNumber(6) val createUin: ULong = ULong.MIN_VALUE,
@SerialName("creator_name") @ProtoNumber(7) val creatorName: String? = null,
@SerialName("total_file_cnt") @ProtoNumber(8) val totalFileCnt: UInt = UInt.MIN_VALUE,
@SerialName("modifier_uin") @ProtoNumber(9) val modifyUin: ULong? = null,
@SerialName("modifier_name") @ProtoNumber(10) val modifierName: String? = null,
@SerialName("used_space") @ProtoNumber(11) val usedSpace: ULong = ULong.MIN_VALUE,
)

View File

@ -0,0 +1,405 @@
@file:OptIn(ExperimentalSerializationApi::class)
package protobuf.guild
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
import protobuf.qweb.QWebExtInfo
@Serializable
data class GetGuildFeedsReq(
@ProtoNumber(1) var count: Int,
@ProtoNumber(2) var from: Int? = null,
@ProtoNumber(3) var feedAttchInfo: ByteArray? = null,
@ProtoNumber(4) var guildId: ULong? = null,
@ProtoNumber(5) var getType: Int? = null,
@ProtoNumber(6) var sortOption: Int? = null,
@ProtoNumber(7) var u7: Int? = null,
@ProtoNumber(8) var u8: Int? = null,
@ProtoNumber(9) var u9: ByteArray? = null,
)
@Serializable
data class GetGuildFeedsRsp(
@ProtoNumber(1) var vecFeed: List<StFeed>? = null,
@ProtoNumber(2) var isFinish: Int = 0,
//@ProtoNumber(3) var feedAttchInfo: ByteArray? = null,
//@ProtoNumber(4) var traceId: String? = null,
)
@Serializable
data class StFeed(
@SerialName("id") @ProtoNumber(1) var id: String,
@SerialName("title") @ProtoNumber(2) var title: StRichText,
@SerialName("poster") @ProtoNumber(4) var poster: StUser? = null,
@SerialName("videos") @ProtoNumber(5) var videos: List<StVideo>? = null,
@SerialName("contents") @ProtoNumber(6) var contents: StRichText? = null,
@SerialName("create_time") @ProtoNumber(7) var createTime: ULong? = null,
@SerialName("comment_count") @ProtoNumber(9) var commentCount: UInt? = null,
@SerialName("comments") @ProtoNumber(10) var vecComment: List<StComment>? = null,
@SerialName("share") @ProtoNumber(11) var share: StShare? = null,
@SerialName("visitor_info") @ProtoNumber(12) var visitorInfo: StVisitor? = null,
@SerialName("images") @ProtoNumber(13) var images: List<StImage>? = null,
@SerialName("poi") @ProtoNumber(14) var poiInfo: StPoiInfoV2? = null,
@SerialName("op_mask") @ProtoNumber(17) var opMask: List<Int>? = null,
@SerialName("channel_info") @ProtoNumber(21) var channelInfo: StChannelInfo? = null,
@SerialName("create_time_ns") @ProtoNumber(22) var createTimeNs: ULong? = null,
@SerialName("update_time") @ProtoNumber(28) var updateTime: ULong? = null,
@SerialName("total_like") @ProtoNumber(29) var totalLike: StTotalLike? = null,
@SerialName("discussion_mum") @ProtoNumber(31) var discussionMum: UInt? = null,
@SerialName("feed_type") @ProtoNumber(32) var feedType: UInt? = null,
@SerialName("default_background_img") @ProtoNumber(34) var defaultBackgroundImg: String? = null,
@SerialName("group_code") @ProtoNumber(35) var groupCode: ULong? = null,
)
@Serializable
data class StTotalLike (
@SerialName("count") @ProtoNumber(1) var likeCount: UInt? = null,
@SerialName("is_clicked") @ProtoNumber(2) var isClicked: UInt? = null,
)
@Serializable
data class StPoiInfoV2(
@SerialName("poi_id") @ProtoNumber(1) var poiId: String? = null,
@SerialName("name") @ProtoNumber(2) var name: String? = null,
@SerialName("poi_type") @ProtoNumber(3) var poiType: Int? = null,
@SerialName("type_name") @ProtoNumber(4) var typeName: String? = null,
@SerialName("address") @ProtoNumber(5) var address: String? = null,
@SerialName("district_code") @ProtoNumber(6) var districtCode: Int? = null,
@SerialName("gps") @ProtoNumber(7) var gps: StGPSV2? = null,
@SerialName("distance") @ProtoNumber(8) var distance: Int? = null,
@SerialName("hot_value") @ProtoNumber(9) var hotValue: Int? = null,
@SerialName("phone") @ProtoNumber(10) var phone: String? = null,
@SerialName("country") @ProtoNumber(11) var country: String? = null,
@SerialName("province") @ProtoNumber(12) var province: String? = null,
@SerialName("city") @ProtoNumber(13) var city: String? = null,
@SerialName("poi_num") @ProtoNumber(14) var poiNum: Int? = null,
@SerialName("poi_order_type") @ProtoNumber(15) var poiOrderType: Int? = null,
@SerialName("default_name") @ProtoNumber(16) var defaultName: String? = null,
@SerialName("district") @ProtoNumber(17) var district: String? = null,
@SerialName("dian_ping_id") @ProtoNumber(18) var dianPingId: String? = null,
@SerialName("distance_text") @ProtoNumber(19) var distanceText: String? = null,
@SerialName("display_name") @ProtoNumber(20) var displayName: String? = null,
)
@Serializable
data class StGPSV2(
@SerialName("lat") @ProtoNumber(1) var latitude: Long? = null,
@SerialName("lon") @ProtoNumber(2) var longitude: Long? = null,
)
@Serializable
data class StShare(
@SerialName("title") @ProtoNumber(1) var title: String? = null,
@SerialName("desc") @ProtoNumber(2) var desc: String? = null,
@SerialName("type") @ProtoNumber(3) var type: UInt? = null,
@SerialName("url") @ProtoNumber(4) var url: String? = null,
@SerialName("author") @ProtoNumber(5) var author: StUser? = null,
@SerialName("poster") @ProtoNumber(6) var poster: StUser? = null,
@SerialName("videos") @ProtoNumber(7) var videos: List<StVideo>? = null,
@SerialName("short_url") @ProtoNumber(8) var shorturl: String? = null,
@SerialName("share_card_info") @ProtoNumber(9) var shareCardInfo: String? = null,
//@ProtoNumber(10) var shareQzoneInfo: Any? = null,
@SerialName("images") @ProtoNumber(11) var images: List<StImage>? = null,
@SerialName("publish_total_user") @ProtoNumber(12) var publishTotalUser: UInt? = null,
@SerialName("shared_count") @ProtoNumber(13) var sharedCount: UInt? = null,
//@ProtoNumber(14) var channelShareInfo: Any? = null,
)
@Serializable
data class StVisitor(
@SerialName("view_count")
@ProtoNumber(1) val viewCount: UInt? = null,
@SerialName("recome_count")
@ProtoNumber(3) val recomeCount: UInt? = null,
@SerialName("view_desc")
@ProtoNumber(4) val viewDesc: String? = null,
)
@Serializable
data class StComment(
@SerialName("id") @ProtoNumber(1) var id: String? = null,
@SerialName("poster") @ProtoNumber(2) var postUser: StUser? = null,
@SerialName("create_time") @ProtoNumber(3) var createTime: ULong? = null,
@SerialName("content") @ProtoNumber(4) var content: String? = null,
@SerialName("reply_count") @ProtoNumber(5) var replyCount: UInt? = null,
@SerialName("replies") @ProtoNumber(6) var vecReply: List<StReply>? = null,
//@ProtoNumber(7) var busiData: Any? = null,
@SerialName("like_info") @ProtoNumber(8) var likeInfo: StLike? = null,
@SerialName("type_flag") @ProtoNumber(9) var typeFlag: UInt? = null,
@SerialName("at_uin_list") @ProtoNumber(10) var atUinList: List<String>? = null,
@SerialName("type_flag2") @ProtoNumber(11) var typeFlag2: UInt? = null,
@SerialName("create_time_ns") @ProtoNumber(12) var createTimeNs: ULong? = null,
@SerialName("store_ext_info") @ProtoNumber(13) var storeExtInfo: List<QWebExtInfo>? = null,
@SerialName("third_id") @ProtoNumber(14) var thirdId: String? = null,
@SerialName("source_type") @ProtoNumber(15) var sourceType: UInt? = null,
@SerialName("rich_contents") @ProtoNumber(16) var richContents: StRichText? = null,
@SerialName("images") @ProtoNumber(17) var images: List<StImage>? = null,
@SerialName("sequence") @ProtoNumber(18) var sequence: ULong? = null,
@SerialName("next_page_reply") @ProtoNumber(19) var nextPageReply: Boolean? = null,
@SerialName("attach_info") @ProtoNumber(20) var attachInfo: String? = null,
)
@Serializable
data class StReply(
@SerialName("id") @ProtoNumber(1) var id: String? = null,
@SerialName("poster") @ProtoNumber(2) var postUser: StUser? = null,
@SerialName("create_time") @ProtoNumber(3) var createTime: ULong? = null,
@SerialName("content") @ProtoNumber(4) var content: String? = null,
@SerialName("target") @ProtoNumber(5) var targetUser: StUser? = null,
//@ProtoNumber(6) var busiData: ByteArray? = null,
@SerialName("like_info") @ProtoNumber(7) var likeInfo: StLike? = null,
@SerialName("type_flag") @ProtoNumber(8) var typeFlag: UInt? = null,
@SerialName("modify_flag") @ProtoNumber(9) var modifyflag: UInt? = null,
@SerialName("at_uin_list") @ProtoNumber(10) var atUinList: List<String>? = null,
@SerialName("type_flag2") @ProtoNumber(11) var typeFlag2: UInt? = null,
@SerialName("create_time_ns") @ProtoNumber(12) var createTimeNs: ULong? = null,
@SerialName("store_ext_info") @ProtoNumber(13) var storeExtInfo: List<QWebExtInfo>? = null,
@SerialName("third_id") @ProtoNumber(14) var thirdId: String? = null,
@SerialName("target_reply_id") @ProtoNumber(15) var targetReplyID: String? = null,
@SerialName("source_type") @ProtoNumber(16) var sourceType: UInt? = null,
@SerialName("rich_contents") @ProtoNumber(17) var richContents: StRichText? = null,
@SerialName("images") @ProtoNumber(18) var images: List<StImage>? = null,
)
@Serializable
data class StLike(
@SerialName("id")
@ProtoNumber(1) var id: String? = null,
@SerialName("count")
@ProtoNumber(2) var count: UInt? = null,
@SerialName("status")
@ProtoNumber(3) var status: UInt? = null,
@SerialName("like_uin_list")
@ProtoNumber(4) var vecUser: List<StUser>? = null,
@SerialName("poster")
@ProtoNumber(6) var postUser: StUser? = null,
@SerialName("has_liked_count")
@ProtoNumber(7) var hasLikedCount: UInt? = null,
@SerialName("owner_status")
@ProtoNumber(8) var ownerStatus: UInt? = null,
@SerialName("jump_url")
@ProtoNumber(9) var jumpUrl: String? = null,
)
@Serializable
data class StVideo(
@SerialName("file_id") @ProtoNumber(1) var fileId: String? = null,
@SerialName("file_size") @ProtoNumber(2) var fileSize: UInt? = null,
@SerialName("duration") @ProtoNumber(3) var duration: UInt? = null,
@SerialName("width") @ProtoNumber(4) var width: UInt? = null,
@SerialName("height") @ProtoNumber(5) var height: UInt? = null,
@SerialName("play_url") @ProtoNumber(6) var playUrl: String? = null,
@SerialName("trans_status") @ProtoNumber(7) var transStatus: UInt? = null,
@SerialName("video_prior") @ProtoNumber(8) var videoPrior: UInt? = null,
@SerialName("video_rate") @ProtoNumber(9) var videoRate: UInt? = null,
//@ProtoNumber(10) var vecVideoUrl: String? = null,
//@ProtoNumber(11) var busiData: Any? = null,
@SerialName("approval_status") @ProtoNumber(12) var approvalStatus: UInt? = null,
@SerialName("video_source") @ProtoNumber(13) var videoSource: UInt? = null,
@SerialName("media_quality_rank") @ProtoNumber(14) var mediaQualityRank: UInt? = null,
@SerialName("media_quality_score") @ProtoNumber(15) var mediaQualityScore: Float? = null,
@SerialName("md5") @ProtoNumber(16) var videoMD5: String? = null,
@SerialName("is_quic") @ProtoNumber(17) var isQuic: UInt? = null,
@SerialName("orientation") @ProtoNumber(18) var orientation: Int? = null,
@SerialName("cover") @ProtoNumber(19) var cover: StImage? = null,
@SerialName("pattern_id") @ProtoNumber(20) var patternId: String? = null,
@SerialName("display_index") @ProtoNumber(21) var displayIndex: UInt? = null,
)
@Serializable
data class StRichText(
@SerialName("contents") @ProtoNumber(1) var contents: List<StRichTextContent>? = null,
@SerialName("images") @ProtoNumber(2) var images: List<StImage>? = null,
)
@Serializable
data class StRichTextContent(
@SerialName("type") @ProtoNumber(1) var type: Int? = null,
@SerialName("pattern_id") @ProtoNumber(2) var patternId: String? = null,
@SerialName("text") @ProtoNumber(3) var textContent: StRichTextTextContent? = null,
@SerialName("at") @ProtoNumber(4) var atContent: StRichTextAtContent? = null,
@SerialName("url") @ProtoNumber(5) var urlContent: StRichTextURLContent? = null,
@SerialName("emoji") @ProtoNumber(6) var emojiContent: StRichTextEmojiContent? = null,
@SerialName("channel") @ProtoNumber(7) var channelContent: StRichTextChannelContent? = null,
@SerialName("guild") @ProtoNumber(8) var guildContent: StRichTextGuildContent? = null,
@SerialName("icon") @ProtoNumber(9) var iconContent: StRichTextIconContent? = null,
)
@Serializable
data class StRichTextIconContent(
@SerialName("url") @ProtoNumber(1) val url: String? = null
)
@Serializable
data class StRichTextGuildContent(
@SerialName("channel_info") @ProtoNumber(1) val channelInfo: StChannelInfo? = null
)
@Serializable
data class StRichTextChannelContent(
@SerialName("channel_info") @ProtoNumber(1) val channelInfo: StChannelInfo? = null
)
@Serializable
data class StChannelInfo(
//@SerialName("sign") @ProtoNumber(1) var sign: String? = null,
@SerialName("name")
@ProtoNumber(2) var name: String? = null,
@SerialName("icon_url")
@ProtoNumber(3) var iconUrl: String? = null,
@SerialName("type")
@ProtoNumber(4) var privateType: Int? = null,
@SerialName("guild_name")
@ProtoNumber(5) var guildName: String? = null,
@SerialName("hot_icon")
@ProtoNumber(6) var hotIcon: String? = null,
@SerialName("hot_index")
@ProtoNumber(7) var hotIndex: UInt? = null,
)
@Serializable
data class StRichTextEmojiContent(
@ProtoNumber(1) var id: String? = null,
@ProtoNumber(2) var type: String? = null,
@ProtoNumber(3) var name: String? = null,
@ProtoNumber(4) var url: String? = null,
)
@Serializable
data class StRichTextURLContent(
@ProtoNumber(1) var url: String? = null,
@SerialName("display") @ProtoNumber(2) var displayText: String? = null,
@ProtoNumber(3) var type: Int? = null,
@SerialName("play_url") @ProtoNumber(4) var playUrl: String? = null,
@SerialName("platform") @ProtoNumber(5) var thirdPlatform: ThirdPlatform? = null,
@SerialName("third_video_info") @ProtoNumber(6) var thirdVideoInfo: CommThirdVideoInfo? = null,
)
@Serializable
data class CommThirdVideoInfo(
@SerialName("cover") @ProtoNumber(1) val cover: String? = null,
@SerialName("duration") @ProtoNumber(2) val duration: ULong? = null,
)
@Serializable
data class ThirdPlatform(
@ProtoNumber(1) var icon: String? = null,
@ProtoNumber(2) var name: String? = null,
)
@Serializable
data class StRichTextTextContent(
@ProtoNumber(1) var text: String? = null
)
@Serializable
data class StRichTextAtContent(
@ProtoNumber(1) var type: Int? = null,
@SerialName("guild_info") @ProtoNumber(2) var guildInfo: GuildInfo? = null,
@SerialName("role_info") @ProtoNumber(3) var roleGroupId: RoleGroupInfo? = null,
@ProtoNumber(4) var user: StUser? = null,
)
@Serializable
data class StUser(
@ProtoNumber(1) var id: String? = null,
@ProtoNumber(2) var nick: String? = null,
@ProtoNumber(3) var icon: StIconInfo? = null,
@ProtoNumber(4) var desc: String? = null,
@SerialName("follow_state") @ProtoNumber(5) var followState: UInt? = null,
@ProtoNumber(6) var type: UInt? = null,
@ProtoNumber(7) var sex: UInt? = null,
@ProtoNumber(8) var birthday: ULong? = null,
@ProtoNumber(9) var school: String? = null,
@ProtoNumber(11) var location: String? = null,
//@ProtoNumber(12) var busiData: ByteArray? = null,
@SerialName("frd") @ProtoNumber(13) var frdState: UInt? = null,
@SerialName("relation_state") @ProtoNumber(14) var relationState: UInt? = null,
@SerialName("black_state") @ProtoNumber(15) var blackState: UInt? = null,
@ProtoNumber(16) var medal: StTagMedalInfo? = null,
@ProtoNumber(17) var constellation: Int? = null,
@SerialName("jump_url") @ProtoNumber(18) var jumpUrl: String? = null,
@SerialName("location_code") @ProtoNumber(19) var locationCode: String? = null,
@SerialName("third_id") @ProtoNumber(20) var thirdId: String? = null,
@ProtoNumber(21) var company: String? = null,
@SerialName("certification_desc") @ProtoNumber(22) var certificationDesc: String? = null,
@SerialName("desc_type") @ProtoNumber(23) var descType: UInt? = null,
//@ProtoNumber(24) var channelUserInfo: Any? = null,
//@SerialName("login_id") @ProtoNumber(25) var loginId: String? = null,
@ProtoNumber(26) var uin: ULong? = null,
@SerialName("nick_flag") @ProtoNumber(27) var nickFlag: UInt? = null,
@SerialName("manage_tag") @ProtoNumber(28) var manageTag: CustomManageTag? = null,
//@SerialName("personal_medal") @ProtoNumber(29) var personalMedal: PersonalMedal? = null,
)
@Serializable
data class PersonalMedal(
@SerialName("start") @ProtoNumber(1) val startTime: ULong? = null,
@SerialName("end") @ProtoNumber(2) val endTime: ULong? = null,
@ProtoNumber(3) var url: String? = null,
)
@Serializable
data class StTagMedalInfo(
@SerialName("id") @ProtoNumber(1) val tagId: ULong? = null,
@SerialName("name") @ProtoNumber(2) val tagName: String? = null,
@ProtoNumber(3) val rank: ULong? = null,
)
@Serializable
data class CustomManageTag(
@ProtoNumber(3) val color: UInt? = null,
@SerialName("name") @ProtoNumber(2) val tagName: String? = null,
)
@Serializable
data class StIconInfo(
//@SerialName("url_40") @ProtoNumber(1) var iconUrl40: String? = null,
//@SerialName("url_100") @ProtoNumber(2) var iconUrl100: String? = null,
//@SerialName("url_140") @ProtoNumber(3) var iconUrl140: String? = null,
//@SerialName("url_640") @ProtoNumber(4) var iconUrl640: String? = null,
@SerialName("url") @ProtoNumber(5) var iconUrl: String? = null,
)
@Serializable
data class RoleGroupInfo(
@SerialName("role") @ProtoNumber(1) var roleId: ULong? = null,
@ProtoNumber(2) var name: String? = null,
@ProtoNumber(3) var color: ULong? = null,
)
@Serializable
data class GuildInfo(
@SerialName("guild_id") @ProtoNumber(1) var guildId: ULong? = null,
@ProtoNumber(2) var name: String? = null,
@SerialName("join_time") @ProtoNumber(3) var joinTime: ULong? = null,
)
@Serializable
data class StImage(
@ProtoNumber(1) var width: UInt? = null,
@ProtoNumber(2) var height: UInt? = null,
@ProtoNumber(3) var picUrl: String? = null,
@SerialName("image_urls") @ProtoNumber(4) var vecImageUrl: List<StImageUrl>? = null,
@SerialName("id") @ProtoNumber(5) var picId: String? = null,
//@ProtoNumber(6) var busiData: Any? = null,
@SerialName("md5") @ProtoNumber(7) var imageMD5: String? = null,
@SerialName("layer_pic_url") @ProtoNumber(8) var layerPicUrl: String? = null,
@SerialName("pattern_id") @ProtoNumber(9) var patternId: String? = null,
@SerialName("display_index") @ProtoNumber(10) var displayIndex: Int? = null,
@SerialName("size") @ProtoNumber(11) var origSize: UInt? = null,
@SerialName("is_original") @ProtoNumber(12) var isOrig: Boolean? = null,
@SerialName("is_gif") @ProtoNumber(13) var isGif: Boolean? = null,
)
@Serializable
data class StImageUrl(
@SerialName("level_type") @ProtoNumber(1) var levelType: UInt? = null,
@ProtoNumber(2) var url: String? = null,
@ProtoNumber(3) var width: UInt? = null,
@ProtoNumber(4) var height: UInt? = null,
//@ProtoNumber(5) var busiData: Any? = null,
)

View File

@ -0,0 +1,57 @@
@file:OptIn(ExperimentalSerializationApi::class)
package protobuf.message
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class MessageBody(
@ProtoNumber(1) val msgHead: MessageHead? = null,
@ProtoNumber(2) val contentHead: MessageContentHead? = null,
@ProtoNumber(3) val richMsg: RichMessage? = null,
)
@Serializable
data class RichMessage(
@ProtoNumber(1) val elements: MessageElementList? = null,
@ProtoNumber(2) val rawBuffer: ByteArray? = null,
)
@Serializable
data class MessageElementList(
@ProtoNumber(2) val elements: List<MessageElement>? = null
)
@Serializable
data class MessageElement(
@ProtoNumber(51) val json: JsonElement? = null,
)
@Serializable
data class JsonElement(
@ProtoNumber(1) val data: ByteArray? = null,
)
@Serializable
data class MessageHead(
@ProtoNumber(1) val peer: Long = Long.MIN_VALUE,
@ProtoNumber(2) val peerUid: String? = null,
@ProtoNumber(3) val flag: Int = Int.MIN_VALUE,
@ProtoNumber(5) val receiver: Long? = null,
@ProtoNumber(6) val receiverUid: String? = null,
)
@Serializable
data class MessageContentHead(
@ProtoNumber(1) val msgType: Int = Int.MIN_VALUE,
@ProtoNumber(2) val msgSubType: Int = Int.MIN_VALUE,
@ProtoNumber(4) val u1: Long = Long.MIN_VALUE,
@ProtoNumber(5) val msgSeq: Long = Long.MIN_VALUE,
@ProtoNumber(6) val msgTime: Long? = null,
@ProtoNumber(7) val u2: Int? = null,
@ProtoNumber(11) val u3: Long? = null,
@ProtoNumber(12) val msgRandom: Long = Long.MIN_VALUE,
@ProtoNumber(14) val u4: Long? = null,
@ProtoNumber(28) val u5: Long? = null,
)

View File

@ -0,0 +1,12 @@
package protobuf.oidb
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class TrpcOidb(
@ProtoNumber(1) val cmd: Int = Int.MIN_VALUE,
@ProtoNumber(2) val service: Int = Int.MIN_VALUE,
@ProtoNumber(4) val buffer: ByteArray,
@ProtoNumber(12) val flag: Int = Int.MIN_VALUE,
)

View File

@ -0,0 +1,87 @@
@file:OptIn(ExperimentalSerializationApi::class)
package protobuf.oidb.cmd0x6d7
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
import protobuf.group_file_common.FolderInfo
@Serializable
data class Oidb0x6d7ReqBody(
@ProtoNumber(1) val createFolder: CreateFolderReq? = null,
@ProtoNumber(2) val deleteFolder: DeleteFolderReq? = null,
@ProtoNumber(3) val moveFolder: MoveFolderReq? = null,
@ProtoNumber(4) val renameFolder: RenameFolderReq? = null,
)
@Serializable
data class CreateFolderReq(
@ProtoNumber(1) val groupCode: ULong = ULong.MIN_VALUE,
@ProtoNumber(2) val appId: UInt = UInt.MIN_VALUE,
@ProtoNumber(3) val parentFolderId: String = "",
@ProtoNumber(4) val folderName: String = "",
)
@Serializable
data class DeleteFolderReq(
@ProtoNumber(1) val groupCode: ULong = ULong.MIN_VALUE,
@ProtoNumber(2) val appId: UInt = UInt.MIN_VALUE,
@ProtoNumber(3) val folderId: String = "",
)
@Serializable
data class MoveFolderReq(
@ProtoNumber(1) val groupCode: ULong = ULong.MIN_VALUE,
@ProtoNumber(2) val appId: UInt = UInt.MIN_VALUE,
@ProtoNumber(3) val folderId: String = "",
@ProtoNumber(4) val parentFolderId: String = "",
@ProtoNumber(5) val destFolderId: String = "",
)
@Serializable
data class RenameFolderReq(
@ProtoNumber(1) val groupCode: ULong = ULong.MIN_VALUE,
@ProtoNumber(2) val appId: UInt = UInt.MIN_VALUE,
@ProtoNumber(3) val folderId: String = "",
@ProtoNumber(4) val folderName: String = "",
)
@Serializable
data class Oidb0x6d7RespBody(
@ProtoNumber(1) val createFolder: CreateFolderResp? = null,
@ProtoNumber(2) val deleteFolder: DeleteFolderResp? = null,
@ProtoNumber(3) val moveFolder: MoveFolderResp? = null,
@ProtoNumber(4) val renameFolder: RenameFolderResp? = null,
)
@Serializable
data class CreateFolderResp(
@ProtoNumber(1) val retCode: Int = Int.MIN_VALUE,
@ProtoNumber(2) val retMsg: String = "",
@ProtoNumber(3) val clientWording: String = "",
@ProtoNumber(4) val folderInfo: FolderInfo? = null,
)
@Serializable
data class DeleteFolderResp(
@ProtoNumber(1) val retCode: Int = Int.MIN_VALUE,
@ProtoNumber(2) val retMsg: String = "",
@ProtoNumber(3) val clientWording: String = "",
)
@Serializable
data class MoveFolderResp(
@ProtoNumber(1) val retCode: Int = Int.MIN_VALUE,
@ProtoNumber(2) val retMsg: String = "",
@ProtoNumber(3) val clientWording: String = "",
@ProtoNumber(4) val folderInfo: FolderInfo? = null,
)
@Serializable
data class RenameFolderResp(
@ProtoNumber(1) val retCode: Int = Int.MIN_VALUE,
@ProtoNumber(2) val retMsg: String = "",
@ProtoNumber(3) val clientWording: String = "",
@ProtoNumber(4) val folderInfo: FolderInfo? = null,
)

View File

@ -0,0 +1,14 @@
package protobuf.oidb.cmd0x9082
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class Oidb0x9082(
@ProtoNumber(2) val peer: ULong = ULong.MIN_VALUE,
@ProtoNumber(3) val msgSeq: ULong = ULong.MIN_VALUE,
@ProtoNumber(4) val faceIndex: String = "",
@ProtoNumber(5) val flag: UInt = UInt.MIN_VALUE,
@ProtoNumber(6) val u1: UInt = UInt.MIN_VALUE,
@ProtoNumber(7) val u2: UInt = UInt.MIN_VALUE,
)

View File

@ -0,0 +1,16 @@
package protobuf.oidb.cmd0xf16
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class Oidb0xf16(
@ProtoNumber(1) var setGroupRemarkReq: SetGroupRemarkReq? = null,
)
@Serializable
data class SetGroupRemarkReq(
@ProtoNumber(1) var groupCode: ULong,
@ProtoNumber(2) var groupUin: ULong,
@ProtoNumber(3) var groupRemark: String
)

View File

@ -0,0 +1,117 @@
@file:OptIn(ExperimentalSerializationApi::class)
package protobuf.oidb.cmd0xf88
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class Oidb0xf88Req(
@ProtoNumber(1) val filter: GProFilter,
@ProtoNumber(2) val memberId: ULong,
@ProtoNumber(3) val tinyId: ULong,
@ProtoNumber(4) val guildId: ULong,
)
@Serializable
data class Oidb0xf88Rsp(
@ProtoNumber(1) val userInfo: GProUserInfo?
)
@Serializable
data class GProUserInfo(
@ProtoNumber(1) var memberId: ULong = ULong.MIN_VALUE,
@ProtoNumber(2) var memberTinyid: ULong = ULong.MIN_VALUE,
@ProtoNumber(3) var nickName: String? = null,
@ProtoNumber(4) var gender: UInt = UInt.MIN_VALUE,
@ProtoNumber(5) var allow: UInt = UInt.MIN_VALUE,
@ProtoNumber(6) var url: String? = null,
@ProtoNumber(7) var birthday: String? = null,
@ProtoNumber(8) var fullBirthday: String? = null,
@ProtoNumber(9) var fullAge: String? = null,
@ProtoNumber(10) var country: String? = null,
@ProtoNumber(11) var province: String? = null,
@ProtoNumber(12) var city: String? = null,
@ProtoNumber(13) var cityId: String? = null,
@ProtoNumber(14) var cityZoneId: UInt = UInt.MIN_VALUE,
@ProtoNumber(15) var msgHeadInfo: GProHeadInfo? = null,
@ProtoNumber(16) var joinTime: ULong = ULong.MIN_VALUE,
@ProtoNumber(17) var memberRole: UInt = UInt.MIN_VALUE,
@ProtoNumber(18) var memberType: UInt = UInt.MIN_VALUE,
@ProtoNumber(19) var beAdminTime: ULong = ULong.MIN_VALUE,
@ProtoNumber(20) var memberName: String? = null,
//@ProtoNumber(21) var clientPresence: Any? = null,
//@ProtoNumber(22) var client_archive: ArrayList<>? = null,
//@ProtoNumber(23) var bind_client_account: ArrayList<>? = null,
@ProtoNumber(24) var hasMoreArchive: Boolean = false,
//@ProtoNumber(25) var firstArchiveArkData: Any? = null,
@ProtoNumber(26) var directMsgBlackFlag: UInt = UInt.MIN_VALUE,
@ProtoNumber(27) var setGroupProProfile: Boolean = false,
@ProtoNumber(28) var joinGroupProTimestamp: ULong = ULong.MIN_VALUE,
@ProtoNumber(29) var shutUpExpireTime: ULong = ULong.MIN_VALUE,
@ProtoNumber(30) var avatarMeta: ByteArray? = null,
@ProtoNumber(31) var memberNameFlag: UInt = UInt.MIN_VALUE,
@ProtoNumber(32) var faceAuthStatus: UInt = UInt.MIN_VALUE,
@ProtoNumber(33) var verifyUrl: String? = null,
@ProtoNumber(34) var constellation: UInt = UInt.MIN_VALUE,
@ProtoNumber(35) var personalSign: ByteArray? = null,
//@ProtoNumber(36) var voice_live_info: Any? = null,
@ProtoNumber(37) var avatarFlag: UInt = UInt.MIN_VALUE,
//@ProtoNumber(38) var isQQFriend: Any? = null,
//@ProtoNumber(39) var openid: Any? = null,
//@ProtoNumber(40) var personalSignTemplate: Any? = null,
//@ProtoNumber(41) var showVoiceLiveStatusSwitch: Any? = null,
@ProtoNumber(99) var isMember: UInt = UInt.MIN_VALUE,
)
@Serializable
data class GProHeadInfo(
@ProtoNumber(1) var timestamp: UInt = UInt.MIN_VALUE,
@ProtoNumber(2) var faceFlag: UInt = UInt.MIN_VALUE,
@ProtoNumber(3) var baseUrl: String? = null,
@ProtoNumber(4) var type: UInt = UInt.MIN_VALUE
)
@Serializable
data class GProFilter(
@ProtoNumber(3) val nickName: UInt = UInt.MIN_VALUE,
@ProtoNumber(4) val gender: UInt = UInt.MIN_VALUE,
@ProtoNumber(5) val allow: UInt = UInt.MIN_VALUE,
@ProtoNumber(6) val url: UInt = UInt.MIN_VALUE,
@ProtoNumber(7) val birthday: UInt = UInt.MIN_VALUE,
@ProtoNumber(8) val fullBirthday: UInt = UInt.MIN_VALUE,
@ProtoNumber(9) val fullAge: UInt = UInt.MIN_VALUE,
@ProtoNumber(10) val country: UInt = UInt.MIN_VALUE,
@ProtoNumber(11) val province: UInt = UInt.MIN_VALUE,
@ProtoNumber(12) val city: UInt = UInt.MIN_VALUE,
@ProtoNumber(13) val cityId: UInt = UInt.MIN_VALUE,
@ProtoNumber(14) val cityZoneId: UInt = UInt.MIN_VALUE,
@ProtoNumber(15) val headInfo: UInt = UInt.MIN_VALUE,
@ProtoNumber(16) val joinTime: UInt = UInt.MIN_VALUE,
@ProtoNumber(17) val memberRole: UInt = UInt.MIN_VALUE,
@ProtoNumber(18) val memberType: UInt = UInt.MIN_VALUE,
@ProtoNumber(19) val beAdminTime: UInt = UInt.MIN_VALUE,
@ProtoNumber(20) val memberName: UInt = UInt.MIN_VALUE,
@ProtoNumber(21) val clientPresence: UInt = UInt.MIN_VALUE,
@ProtoNumber(22) val clientArchive: UInt = UInt.MIN_VALUE,
@ProtoNumber(23) val bindClientAccount: UInt = UInt.MIN_VALUE,
@ProtoNumber(24) val hasMoreArchive: UInt = UInt.MIN_VALUE,
@ProtoNumber(25) val firstArchiveBaseInfo: UInt = UInt.MIN_VALUE,
@ProtoNumber(26) val directMsgBlackFlag: UInt = UInt.MIN_VALUE,
@ProtoNumber(27) val joinGroupProTimestamp: UInt = UInt.MIN_VALUE,
@ProtoNumber(28) val shutupExpireTime: UInt = UInt.MIN_VALUE,
@ProtoNumber(29) val faceAuthStatus: UInt = UInt.MIN_VALUE,
@ProtoNumber(30) val constellation: UInt = UInt.MIN_VALUE,
@ProtoNumber(31) val personalSign: UInt = UInt.MIN_VALUE,
@ProtoNumber(32) val voiceLiveInfo: UInt = UInt.MIN_VALUE,
@ProtoNumber(33) val isQQFriend: UInt = UInt.MIN_VALUE,
@ProtoNumber(34) val personalSignTemplate: UInt = UInt.MIN_VALUE,
@ProtoNumber(35) val showVoiceLiveStatusSwitch: UInt = UInt.MIN_VALUE,
@ProtoNumber(36) val openid: UInt = UInt.MIN_VALUE,
@ProtoNumber(37) val isMember: UInt = UInt.MIN_VALUE,
@ProtoNumber(99) val needGroupProProfile: UInt = UInt.MIN_VALUE,
@ProtoNumber(100) val avatarMeta: UInt = UInt.MIN_VALUE,
) {
}

View File

@ -0,0 +1,61 @@
@file:OptIn(ExperimentalSerializationApi::class)
package protobuf.oidb.cmd0xfc2
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class Oidb0xfc2ReqBody(
@ProtoNumber(1) var msgCmd: Int? = null,
@ProtoNumber(3) var msgBusType: Int? = null,
@ProtoNumber(4) var msgChannelInfo: Oidb0xfc2ChannelInfo? = null,
@ProtoNumber(5) var msgTerminalType: Int? = null,
//@ProtoNumber(100) var msg_apply_upload_req: Any? = null,
//@ProtoNumber(200) var msg_upload_completed_req: Any? = null,
@ProtoNumber(300) var msgApplyDownloadReq: Oidb0xfc2MsgApplyDownloadReq? = null,
//@ProtoNumber(400) var msg_apply_preview_req: Any? = null,
//@ProtoNumber(500) var msg_apply_security_strike_req: Any? = null,
)
@Serializable
data class Oidb0xfc2RspBody(
@ProtoNumber(1) var msgCmd: Int? = null,
@ProtoNumber(5) var msgBusType: Int? = null,
//@ProtoNumber(110) var msg_apply_upload_rsp: Any? = null,
//@ProtoNumber(210) var msg_upload_completed_rsp: Any? = null,
@ProtoNumber(310) var msgApplyDownloadRsp: Oidb0xfc2MsgApplyDownloadRsp? = null,
//@ProtoNumber(410) var msg_apply_preview_rsp: Any? = null,
//@ProtoNumber(510) var msg_apply_security_strike_rsp: Any? = null,
)
@Serializable
data class Oidb0xfc2MsgApplyDownloadRsp(
@ProtoNumber(1) var msgDownloadInfo: Oidb0xfc2MsgDownloadInfo? = null,
//@ProtoNumber(2) var msgFileInfo: Any? = null,
//@ProtoNumber(3) var msgChacha20Param: Any? = null,
//@ProtoNumber(4) var useEncrypt: UInt = UInt.MIN_VALUE,
)
@Serializable
data class Oidb0xfc2MsgDownloadInfo(
@ProtoNumber(1) var downloadKey: ByteArray? = null,
//@ProtoNumber(2) var msg_out_addr: Any? = null,
//@ProtoNumber(3) var msg_inner_addr: Any? = null,
//@ProtoNumber(4) var msg_out_addr_ipv6: Any? = null,
@ProtoNumber(5) var downloadDomain: String? = null,
@ProtoNumber(6) var downloadUrl: String? = null,
//@ProtoNumber(7) var str_cookie: Any? = null,
)
@Serializable
data class Oidb0xfc2MsgApplyDownloadReq(
@ProtoNumber(1) val fieldId: String,
@ProtoNumber(2) val supportEncrypt: Int,
)
@Serializable
data class Oidb0xfc2ChannelInfo(
@ProtoNumber(3) val guildId: ULong,
@ProtoNumber(4) val channelId: ULong,
)

View File

@ -0,0 +1,99 @@
@file:OptIn(ExperimentalSerializationApi::class)
package protobuf.oidb.cmx0xf57
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class Oidb0xf57Req(
@ProtoNumber(1) val filter: Oidb0xf57Filter,
@ProtoNumber(2) val guildInfo: Oidb0xf57GuildInfo,
)
@Serializable
data class Oidb0xf57Rsp(
@ProtoNumber(1) val metaInfo: Oidb0xf57MetaInfo,
)
@Serializable
data class Oidb0xf57MetaInfo(
@ProtoNumber(3) val guildId: ULong = ULong.MIN_VALUE,
@ProtoNumber(4) val meta: Oidb0xf57Meta? = null,
)
@Serializable
data class Oidb0xf57Meta(
@ProtoNumber(2) val guildCode: ULong = ULong.MIN_VALUE,
@ProtoNumber(4) val createTime: Long = Long.MIN_VALUE,
@ProtoNumber(5) val maxMemberCount: Long = Long.MIN_VALUE,
@ProtoNumber(6) val memberCount: Long = Long.MIN_VALUE,
@ProtoNumber(8) val name: String? = null,
@ProtoNumber(11) val robotMaxNum: Int = Int.MIN_VALUE,
@ProtoNumber(12) val adminMaxNum: Int = Int.MIN_VALUE,
@ProtoNumber(13) val profile: String? = null,
@ProtoNumber(14) val avatarSeq: Long = Long.MIN_VALUE,
@ProtoNumber(18) val ownerId: ULong = ULong.MIN_VALUE,
@ProtoNumber(19) val coverSeq: Long = Long.MIN_VALUE,
@ProtoNumber(20) val clientId: Int = Int.MIN_VALUE,
@ProtoNumber(27) val displayId: String? = null,
)
@Serializable
data class Oidb0xf57GuildInfo(
@ProtoNumber(1) val guildId: ULong = ULong.MIN_VALUE
)
@Serializable
data class Oidb0xf57Filter(
@ProtoNumber(1) val u1: Oidb0xf57U1,
@ProtoNumber(2) val u2: Oidb0xf57U2,
)
@Serializable
data class Oidb0xf57U1(
@ProtoNumber(2) val u1: UInt = UInt.MIN_VALUE,
@ProtoNumber(4) val u2: UInt = UInt.MIN_VALUE,
@ProtoNumber(5) val u3: UInt = UInt.MIN_VALUE,
@ProtoNumber(6) val u4: UInt = UInt.MIN_VALUE,
@ProtoNumber(7) val u5: UInt = UInt.MIN_VALUE,
@ProtoNumber(8) val u6: UInt = UInt.MIN_VALUE,
@ProtoNumber(11) val u7: UInt = UInt.MIN_VALUE,
@ProtoNumber(12) val u8: UInt = UInt.MIN_VALUE,
@ProtoNumber(13) val u9: UInt = UInt.MIN_VALUE,
@ProtoNumber(14) val u10: UInt = UInt.MIN_VALUE,
@ProtoNumber(45) val u11: UInt = UInt.MIN_VALUE,
@ProtoNumber(18) val u12: UInt = UInt.MIN_VALUE,
@ProtoNumber(19) val u13: UInt = UInt.MIN_VALUE,
@ProtoNumber(20) val u14: UInt = UInt.MIN_VALUE,
@ProtoNumber(22) val u15: UInt = UInt.MIN_VALUE,
@ProtoNumber(23) val u16: UInt = UInt.MIN_VALUE,
@ProtoNumber(5002) val u17: UInt = UInt.MIN_VALUE,
@ProtoNumber(5003) val u18: UInt = UInt.MIN_VALUE,
@ProtoNumber(5004) val u19: UInt = UInt.MIN_VALUE,
@ProtoNumber(5005) val u20: UInt = UInt.MIN_VALUE,
@ProtoNumber(5006) val u23: UInt = UInt.MIN_VALUE,
@ProtoNumber(10007) val u21: UInt = UInt.MIN_VALUE,
@ProtoNumber(15) val u22: UInt = UInt.MIN_VALUE,
@ProtoNumber(30001) val u24: UInt = UInt.MIN_VALUE,
)
@Serializable
data class Oidb0xf57U2(
@ProtoNumber(3) val u1: UInt = UInt.MIN_VALUE,
@ProtoNumber(4) val u2: UInt = UInt.MIN_VALUE,
@ProtoNumber(6) val u3: UInt = UInt.MIN_VALUE,
@ProtoNumber(11) val u4: UInt = UInt.MIN_VALUE,
@ProtoNumber(14) val u5: UInt = UInt.MIN_VALUE,
@ProtoNumber(15) val u6: UInt = UInt.MIN_VALUE,
@ProtoNumber(16) val u7: UInt = UInt.MIN_VALUE,
@ProtoNumber(17) val u8: UInt = UInt.MIN_VALUE,
@ProtoNumber(32) val u9: UInt = UInt.MIN_VALUE,
@ProtoNumber(31) val u10: UInt = UInt.MIN_VALUE,
@ProtoNumber(29) val u11: UInt = UInt.MIN_VALUE,
@ProtoNumber(26) val u12: UInt = UInt.MIN_VALUE,
@ProtoNumber(23) val u13: UInt = UInt.MIN_VALUE,
@ProtoNumber(22) val u14: UInt = UInt.MIN_VALUE,
@ProtoNumber(18) val u15: UInt = UInt.MIN_VALUE,
)

View File

@ -0,0 +1,16 @@
package protobuf.push
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class C2CCommonTipsEvent(
@ProtoNumber(7) val params: List<PokeParam>? = null,
@ProtoNumber(8) val xmlTips: String? = null,
)
@Serializable
data class PokeParam(
@ProtoNumber(1) val key: String = "",
@ProtoNumber(2) val value: String = "",
)

View File

@ -0,0 +1,21 @@
package protobuf.push
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class C2CRecallEvent(
@ProtoNumber(1) val head: C2CRecallHead? = null,
)
@Serializable
data class C2CRecallHead(
@ProtoNumber(1) val operator: String? = null,
@ProtoNumber(13) val wording: RecallWording? = null,
@ProtoNumber(20) val msgSeq: Long = Long.MIN_VALUE,
)
@Serializable
data class RecallWording(
@ProtoNumber(2) val wording: String? = null
)

View File

@ -0,0 +1,6 @@
package protobuf.push
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
// by GroupCommonTipsEvent

View File

@ -0,0 +1,19 @@
package protobuf.push
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class FriendApplyEvent(
@ProtoNumber(1) val head: FriendApplyHead? = null,
)
@Serializable
data class FriendApplyHead(
@ProtoNumber(2) val applierUid: String = "",
@ProtoNumber(7) val srcId: Int = Int.MIN_VALUE,
@ProtoNumber(8) val subSrc: Int = Int.MIN_VALUE,
@ProtoNumber(10) val applyMsg: String? = null,
@ProtoNumber(11) val source: String? = null,
)

View File

@ -0,0 +1,11 @@
package protobuf.push
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class GroupAdminChangeEvent(
@ProtoNumber(1) val groupCode: Long,
@ProtoNumber(4) val operation: GroupAdminChangedOperation? = null
)

View File

@ -0,0 +1,16 @@
package protobuf.push
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class GroupAdminChangedOperation(
@ProtoNumber(1) val unsetInfo: GroupAdminSetInfo? = null,
@ProtoNumber(2) val setInfo: GroupAdminSetInfo? = null,
)
@Serializable
data class GroupAdminSetInfo(
@ProtoNumber(1) val targetUid: String? = null,
@ProtoNumber(2) val operation: Int? = null,
)

View File

@ -0,0 +1,11 @@
package protobuf.push
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class GroupApplyEvent(
@ProtoNumber(1) val groupCode: Long = Long.MIN_VALUE,
@ProtoNumber(3) val applierUid: String = "",
@ProtoNumber(5) val applyMsg: String? = null,
)

View File

@ -0,0 +1,22 @@
package protobuf.push
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class GroupBanEvent(
@ProtoNumber(1) val groupCode: ULong = ULong.MIN_VALUE,
@ProtoNumber(4) val operatorUid: String = "",
@ProtoNumber(5) val target: GroupBanTarget? = null,
)
@Serializable
data class GroupBanTarget(
@ProtoNumber(3) val target: GroupBanInfo? = null,
)
@Serializable
data class GroupBanInfo(
@ProtoNumber(1) val targetUid: String? = null,
@ProtoNumber(2) val rawDuration: UInt = UInt.MIN_VALUE,
)

View File

@ -0,0 +1,27 @@
package protobuf.push
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class GroupCommonTipsEvent(
@ProtoNumber(4) val groupCode: ULong = ULong.MIN_VALUE,
@ProtoNumber(5) val uniqueTitleChangeDetail: List<GroupUniqueTitleChangeDetail>? = null,
@ProtoNumber(11) val recallDetails: GroupRecallDetails? = null,
@ProtoNumber(26) val baseTips: List<GroupBaseTips>? = null,
@ProtoNumber(33) val essenceMsgInfo: List<EssenceMsgInfo>? = null,
@ProtoNumber(37) val msgSeq: ULong = ULong.MIN_VALUE,
)
@Serializable
data class EssenceMsgInfo(
@ProtoNumber(4) val type: UInt = UInt.MIN_VALUE,
@ProtoNumber(5) val sender: ULong = ULong.MIN_VALUE,
@ProtoNumber(6) val operator: ULong = ULong.MIN_VALUE,
)
@Serializable
data class GroupBaseTips(
@ProtoNumber(2) val type: UInt = UInt.MIN_VALUE,
@ProtoNumber(7) val params: List<PokeParam>? = null
)

View File

@ -0,0 +1,10 @@
package protobuf.push
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class GroupInviteEvent(
@ProtoNumber(1) val groupCode: Long,
@ProtoNumber(5) val inviterUid: String,
)

View File

@ -0,0 +1,16 @@
package protobuf.push
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class GroupInvitedApplyEvent(
@ProtoNumber(2) val applyInfo: GroupInvitedApplyInfo? = null,
)
@Serializable
data class GroupInvitedApplyInfo(
@ProtoNumber(1) val type: Int = Int.MIN_VALUE,
@ProtoNumber(3) val groupCode: Long = Long.MIN_VALUE,
@ProtoNumber(5) val applierUid: String = "",
)

View File

@ -0,0 +1,12 @@
package protobuf.push
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class GroupListChangeEvent(
@ProtoNumber(1) val groupCode: Long = Long.MIN_VALUE,
@ProtoNumber(3) val memberUid: String = "",
@ProtoNumber(4) val type: Int = Int.MIN_VALUE,
@ProtoNumber(5) val operatorUid: String = "",
)

View File

@ -0,0 +1,18 @@
package protobuf.push
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class GroupRecallDetails(
@ProtoNumber(1) val operatorUid: String = "",
@ProtoNumber(3) val msgInfo: RecalledMessageInfo? = null,
@ProtoNumber(9) val wording: RecallWording? = null
)
@Serializable
data class RecalledMessageInfo(
@ProtoNumber(1) val msgSeq: ULong,
@ProtoNumber(2) val msgTime: ULong,
@ProtoNumber(6) val senderUid: String,
)

View File

@ -0,0 +1,10 @@
package protobuf.push
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class GroupUniqueTitleChangeDetail(
@ProtoNumber(2) val wording: String = "",
@ProtoNumber(5) val targetUin: ULong = ULong.MIN_VALUE,
)

View File

@ -0,0 +1,26 @@
package protobuf.push
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
import protobuf.message.MessageBody
@Serializable
data class MessagePush(
@ProtoNumber(1) val msgBody: MessageBody? = null,
@ProtoNumber(4) val clientInfo: MessagePushClientInfo? = null,
)
@Serializable
data class MessagePushClientInfo(
@ProtoNumber(1) val clientIp: String? = null,
@ProtoNumber(3) val liteHead: MessagePushLiteHead? = null
)
@Serializable
data class MessagePushLiteHead(
@ProtoNumber(2) val msgType: Int = Int.MIN_VALUE,
@ProtoNumber(3) val msgSeq: ULong = ULong.MIN_VALUE,
@ProtoNumber(4) val msgRandom: ULong = ULong.MIN_VALUE,
@ProtoNumber(6) val msgSubType: Int = Int.MIN_VALUE,
@ProtoNumber(8) val sender: ULong = ULong.MIN_VALUE,
)

View File

@ -0,0 +1,37 @@
@file:OptIn(ExperimentalSerializationApi::class)
package protobuf.qweb
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.Serializable
import kotlinx.serialization.protobuf.ProtoNumber
@Serializable
data class QWebReq(
@ProtoNumber(1) val seq: Int = 0,
@ProtoNumber(2) val qua: String = "",
@ProtoNumber(3) val deviceInfo: String = "",
@ProtoNumber(4) val buffer: ByteArray? = null,
@ProtoNumber(5) val traceId: String = "",
@ProtoNumber(6) val module: String = "",
@ProtoNumber(7) var cmdname: String? = null,
//@ProtoNumber(8) var loginSig: Any? = null,
//@ProtoNumber(9) var Crypto: Any? = null,
@ProtoNumber(10) var extinfo: List<QWebExtInfo>? = null,
//@ProtoNumber(11) var contentType: Any? = null,
)
@Serializable
data class QWebExtInfo(
@ProtoNumber(1) val key: String,
@ProtoNumber(2) val value: String,
)
@Serializable
data class QWebRsp(
@ProtoNumber(1) var seq: Int? = null,
//@ProtoNumber(2) var retCode: Int? = null,
//@ProtoNumber(3) var errMsg: String? = null,
@ProtoNumber(4) var buffer: ByteArray? = null,
//@ProtoNumber(5) var Extinfo: List<QWebExtInfo>? = null,
)

View File

@ -32,7 +32,7 @@ android {
}
dependencies {
implementation("androidx.core:core-ktx:1.9.0")
implementation("androidx.appcompat:appcompat:1.6.1")
implementation("com.google.android.material:material:1.9.0")
DEPENDENCY_ANDROIDX.forEach {
implementation(it)
}
}

View File

@ -0,0 +1,10 @@
package KQQ;
import com.qq.jce.JceStruct;
public final class BatchResponse extends JceStruct {
public byte[] buffer;
public int result;
public int seq;
public int type;
}

View File

@ -0,0 +1,9 @@
package KQQ;
import com.qq.jce.JceStruct;
import java.util.ArrayList;
public final class RespBatchProcess extends JceStruct {
public ArrayList<BatchResponse> batch_response_list;
}

View File

@ -19,4 +19,11 @@ public class QQSysFaceUtil {
public static String getFaceDescription(int localId) {
return "";
}
public static String getPrueFaceDescription(String str) {
if (str == null) {
return null;
}
return str.startsWith("/") ? str.substring(1) : str;
}
}

View File

@ -1,6 +1,8 @@
package com.tencent.mobileqq.pb;
public class PBStringField extends PBPrimitiveField<String>{
public static PBStringField __repeatHelper__;
public PBStringField(String str, boolean z) {
}

View File

@ -0,0 +1,32 @@
package com.tencent.mobileqq.pskey.oidb.cmd0x102a;
import com.tencent.mobileqq.pb.MessageMicro;
import com.tencent.mobileqq.pb.PBField;
import com.tencent.mobileqq.pb.PBInt64Field;
import com.tencent.mobileqq.pb.PBRepeatField;
import com.tencent.mobileqq.pb.PBRepeatMessageField;
import com.tencent.mobileqq.pb.PBStringField;
import com.tencent.mobileqq.pb.PBUInt32Field;
public class oidb_cmd0x102a {
public static class GetPSkeyRequest extends MessageMicro<GetPSkeyRequest> {
static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[]{10, 16}, new String[]{"domains", "flag"}, new Object[]{"", 0}, GetPSkeyRequest.class);
public final PBRepeatField<String> domains = PBField.initRepeat(PBStringField.__repeatHelper__);
public final PBUInt32Field flag = PBField.initUInt32(0);
}
public static class GetPSkeyResponse extends MessageMicro<GetPSkeyResponse> {
static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[]{10}, new String[]{"private_keys"}, new Object[]{null}, GetPSkeyResponse.class);
public final PBRepeatMessageField<PSKey> private_keys = PBField.initRepeatMessage(PSKey.class);
}
public static class PSKey extends MessageMicro<PSKey> {
static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[]{10, 18, 24, 34, 40}, new String[]{"domain", "key", "key_expire", "uskey", "uskey_expire"}, new Object[]{"", "", 0L, "", 0L}, PSKey.class);
public final PBStringField domain = PBField.initString("");
public final PBStringField key = PBField.initString("");
public final PBInt64Field key_expire = PBField.initInt64(0);
public final PBStringField uskey = PBField.initString("");
public final PBInt64Field uskey_expire = PBField.initInt64(0);
}
}

View File

@ -0,0 +1,15 @@
package com.tencent.mobileqq.qqguildsdk.api;
import com.tencent.mobileqq.qroute.QRouteApi;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import kotlin.Metadata;
public interface IQQGuildUtilApi extends QRouteApi {
@NotNull
String getAvatarUrl(@Nullable String str, long j2, int i2);
boolean isUserOnLine();
}

View File

@ -0,0 +1,4 @@
package com.tencent.mobileqq.qqguildsdk.data;
public class AddGuildOption {
}

View File

@ -0,0 +1,28 @@
package com.tencent.mobileqq.qqguildsdk.data;
import com.tencent.mobileqq.qqguildsdk.data.genc.GGProAVDevOptInfo;
import com.tencent.mobileqq.qqguildsdk.data.genc.IGProAVDevOptInfo;
import com.tencent.qqnt.kernel.nativeinterface.GProAVRoomAddUpInfo;
public class GGProAVRoomAddUpInfo implements IGProAVRoomAddUpInfo {
public final GProAVRoomAddUpInfo mInfo;
public GGProAVRoomAddUpInfo(GProAVRoomAddUpInfo gProAVRoomAddUpInfo) {
this.mInfo = gProAVRoomAddUpInfo;
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProAVRoomAddUpInfo
public IGProAVDevOptInfo getAVDevOpt() {
return new GGProAVDevOptInfo(this.mInfo.getAvDevOpt());
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProAVRoomAddUpInfo
public int getMicVolume() {
return this.mInfo.getMicVolume();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProAVRoomAddUpInfo
public String getRoomId() {
return this.mInfo.getRoomId();
}
}

View File

@ -0,0 +1,47 @@
package com.tencent.mobileqq.qqguildsdk.data;
import com.tencent.qqnt.kernel.nativeinterface.GProAVRoomOptPushInfo;
public class GGProAVRoomOptPushInfo implements IGProAVRoomOptPushInfo {
public final GProAVRoomOptPushInfo mInfo;
public GGProAVRoomOptPushInfo(GProAVRoomOptPushInfo gProAVRoomOptPushInfo) {
this.mInfo = gProAVRoomOptPushInfo;
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProAVRoomOptPushInfo
public String getChannelId() {
return String.valueOf(this.mInfo.getChannelId());
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProAVRoomOptPushInfo
public String getDelRoomId() {
return this.mInfo.getDelRoomId();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProAVRoomOptPushInfo
public String getGuildId() {
return String.valueOf(this.mInfo.getGuildId());
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProAVRoomOptPushInfo
public int getOptType() {
return this.mInfo.getOptType();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProAVRoomOptPushInfo
public IGProAVRoomAddUpInfo getRoomAddUpInfo() {
return new GGProAVRoomAddUpInfo(this.mInfo.getRoomAddUpInfo());
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProAVRoomOptPushInfo
public IGProAVShowMsgInfo getShowInfo() {
return new GGProAVShowMsgInfo(this.mInfo.getShowInfo());
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProAVRoomOptPushInfo
public String getSwitchRoomId() {
return this.mInfo.getSwitchRoomId();
}
}

View File

@ -0,0 +1,33 @@
package com.tencent.mobileqq.qqguildsdk.data;
import com.tencent.qqnt.kernel.nativeinterface.GProAVShowMsgInfo;
import java.util.ArrayList;
public class GGProAVShowMsgInfo implements IGProAVShowMsgInfo {
public final GProAVShowMsgInfo mInfo;
public GGProAVShowMsgInfo(GProAVShowMsgInfo gProAVShowMsgInfo) {
this.mInfo = gProAVShowMsgInfo;
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProAVShowMsgInfo
public ArrayList<String> getButtonMsgs() {
return this.mInfo.getButtonMsgs();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProAVShowMsgInfo
public String getShowMsg() {
return this.mInfo.getShowMsg();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProAVShowMsgInfo
public int getShowSeconds() {
return this.mInfo.getShowSeconds();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProAVShowMsgInfo
public int getShowType() {
return this.mInfo.getShowType();
}
}

View File

@ -0,0 +1,42 @@
package com.tencent.mobileqq.qqguildsdk.data;
import com.tencent.qqnt.kernel.nativeinterface.GProAVUserStateChangeInfo;
public class GGProAVUserStateChangeInfo implements IGProAVUserStateChangeInfo {
public final GProAVUserStateChangeInfo mInfo;
public GGProAVUserStateChangeInfo(GProAVUserStateChangeInfo gProAVUserStateChangeInfo) {
this.mInfo = gProAVUserStateChangeInfo;
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProAVUserStateChangeInfo
public String getChannelId() {
return String.valueOf(this.mInfo.getChannelId());
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProAVUserStateChangeInfo
public String getGuildId() {
return String.valueOf(this.mInfo.getGuildId());
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProAVUserStateChangeInfo
public IGProAVShowMsgInfo getIGProAVShowMsgInfo() {
return new GGProAVShowMsgInfo(this.mInfo.getShowInfo());
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProAVUserStateChangeInfo
public String getMsg() {
return this.mInfo.getMsg();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProAVUserStateChangeInfo
public long getTinyId() {
return this.mInfo.getTinyId();
}
//@Override // com.tencent.mobileqq.qqguildsdk.data.IGProAVUserStateChangeInfo
//public ej getUserCtlInfo() {
// return new q(this.mInfo.getUserCtlInfo());
//}
}

View File

@ -0,0 +1,32 @@
package com.tencent.mobileqq.qqguildsdk.data;
import com.tencent.qqnt.kernel.nativeinterface.GProDailyRecommendPush;
public class GGProDailyRecommendPush implements IGProDailyRecommendPush {
public final GProDailyRecommendPush mInfo;
public GGProDailyRecommendPush(GProDailyRecommendPush gProDailyRecommendPush) {
this.mInfo = gProDailyRecommendPush;
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProDailyRecommendPush
public String getAvatar() {
return this.mInfo.getAvatar();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProDailyRecommendPush
public String getJumpLink() {
return this.mInfo.getJumpLink();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProDailyRecommendPush
public String getSubTitle() {
return this.mInfo.getSubTitle();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProDailyRecommendPush
public String getTitle() {
return this.mInfo.getTitle();
}
}

View File

@ -0,0 +1,34 @@
package com.tencent.mobileqq.qqguildsdk.data;
import com.tencent.mobileqq.qqguildsdk.data.genc.GGProGetPrefetchRecommendGuildsRsp;
import com.tencent.mobileqq.qqguildsdk.data.genc.IGProGetPrefetchRecommendGuildsRsp;
import com.tencent.qqnt.kernel.nativeinterface.GProDiscoveryStateChangedMsg;
public class GGProDiscoveryStateChangedMsg implements IGProDiscoveryStateChangedMsg {
public final GProDiscoveryStateChangedMsg mInfo;
public GGProDiscoveryStateChangedMsg(GProDiscoveryStateChangedMsg gProDiscoveryStateChangedMsg) {
this.mInfo = gProDiscoveryStateChangedMsg;
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProDiscoveryStateChangedMsg
public IGProMyRecommendMsg getMyRecommendMsg() {
return new GGProMyRecommendMsg(this.mInfo.getMyRecommendMsg());
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProDiscoveryStateChangedMsg
public IGProGetPrefetchRecommendGuildsRsp getPrefetchRecommendMsg() {
return new GGProGetPrefetchRecommendGuildsRsp(this.mInfo.getPrefetchRecommendMsg());
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProDiscoveryStateChangedMsg
public int getSceneType() {
return this.mInfo.getSceneType();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProDiscoveryStateChangedMsg
public IGProTopGuildRecommendMsg getTopGuildRecommendMsg() {
return new GGProTopGuildRecommendMsg(this.mInfo.getTopGuildRecommendMsg());
}
}

View File

@ -0,0 +1,36 @@
package com.tencent.mobileqq.qqguildsdk.data;
import com.tencent.qqnt.kernel.nativeinterface.GProFeedSummary;
import com.tencent.qqnt.kernel.nativeinterface.GProFeedThumbnail;
import java.util.ArrayList;
import java.util.Iterator;
public class GGProFeedSummary implements IGProFeedSummary {
public final GProFeedSummary mInfo;
public GGProFeedSummary(GProFeedSummary gProFeedSummary) {
this.mInfo = gProFeedSummary;
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProFeedSummary
public String getFeedId() {
return this.mInfo.getFeedId();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProFeedSummary
public ArrayList<IGProFeedThumbnail> getFeedThumbnails() {
ArrayList<GProFeedThumbnail> feedThumbnails = this.mInfo.getFeedThumbnails();
ArrayList<IGProFeedThumbnail> arrayList = new ArrayList<>();
Iterator<GProFeedThumbnail> it = feedThumbnails.iterator();
while (it.hasNext()) {
arrayList.add(new GGProFeedThumbnail(it.next()));
}
return arrayList;
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProFeedSummary
public String getTitle() {
return this.mInfo.getTitle();
}
}

View File

@ -0,0 +1,21 @@
package com.tencent.mobileqq.qqguildsdk.data;
import com.tencent.qqnt.kernel.nativeinterface.GProFeedThumbnail;
public class GGProFeedThumbnail implements IGProFeedThumbnail {
public final GProFeedThumbnail mInfo;
public GGProFeedThumbnail(GProFeedThumbnail gProFeedThumbnail) {
this.mInfo = gProFeedThumbnail;
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProFeedThumbnail
public boolean getIsVideoCover() {
return this.mInfo.getIsVideoCover();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProFeedThumbnail
public String getUrl() {
return this.mInfo.getUrl();
}
}

View File

@ -0,0 +1,66 @@
package com.tencent.mobileqq.qqguildsdk.data;
import com.tencent.qqnt.kernel.nativeinterface.GProGiftInfo;
public class GGProGiftInfo implements IGProGiftInfo {
public final GProGiftInfo mInfo;
public GGProGiftInfo(GProGiftInfo gProGiftInfo) {
this.mInfo = gProGiftInfo;
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProGiftInfo
public int getAllComboCnt() {
return this.mInfo.getAllComboCnt();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProGiftInfo
public boolean getComboOver() {
return this.mInfo.getComboOver();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProGiftInfo
public long getComboSeq() {
return this.mInfo.getComboSeq();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProGiftInfo
public int getEffectLevel() {
return this.mInfo.getEffectLevel();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProGiftInfo
public int getGiftId() {
return this.mInfo.getGiftId();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProGiftInfo
public String getGiftName() {
return this.mInfo.getGiftName();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProGiftInfo
public int getGiftNum() {
return this.mInfo.getGiftNum();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProGiftInfo
public long getGiftPrice() {
return this.mInfo.getGiftPrice();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProGiftInfo
public int getGiftType() {
return this.mInfo.getGiftType();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProGiftInfo
public int getMaterialId() {
return this.mInfo.getMaterialId();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProGiftInfo
public int getSendType() {
return this.mInfo.getSendType();
}
}

View File

@ -0,0 +1,58 @@
package com.tencent.mobileqq.qqguildsdk.data;
import com.tencent.mobileqq.qqguildsdk.data.genc.GGProRecommendGuildInfo;
import com.tencent.mobileqq.qqguildsdk.data.genc.IGProRecommendGuildInfo;
import com.tencent.qqnt.kernel.nativeinterface.GProGuildData;
import com.tencent.qqnt.kernel.nativeinterface.GProPollingData;
import com.tencent.qqnt.kernel.nativeinterface.GProRecommendCategoryInfo;
import com.tencent.qqnt.kernel.nativeinterface.GProRecommendChannelExtendInfo;
import java.util.ArrayList;
import java.util.Iterator;
public class GGProGuildData implements IGProGuildData {
public final GProGuildData mInfo;
public GGProGuildData(GProGuildData gProGuildData) {
this.mInfo = gProGuildData;
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProGuildData
public ArrayList<IGProRecommendCategoryInfo> getCategoryList() {
ArrayList<GProRecommendCategoryInfo> categoryList = this.mInfo.getCategoryList();
ArrayList<IGProRecommendCategoryInfo> arrayList = new ArrayList<>();
Iterator<GProRecommendCategoryInfo> it = categoryList.iterator();
while (it.hasNext()) {
arrayList.add(new GGProRecommendCategoryInfo(it.next()));
}
return arrayList;
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProGuildData
public ArrayList<IGProRecommendChannelExtendInfo> getChannelExtendInfo() {
ArrayList<GProRecommendChannelExtendInfo> channelExtendInfo = this.mInfo.getChannelExtendInfo();
ArrayList<IGProRecommendChannelExtendInfo> arrayList = new ArrayList<>();
Iterator<GProRecommendChannelExtendInfo> it = channelExtendInfo.iterator();
while (it.hasNext()) {
arrayList.add(new GGProRecommendChannelExtendInfo(it.next()));
}
return arrayList;
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProGuildData
public ArrayList<IGProPollingData> getDatas() {
ArrayList<GProPollingData> dataList = this.mInfo.getDataList();
ArrayList<IGProPollingData> arrayList = new ArrayList<>();
Iterator<GProPollingData> it = dataList.iterator();
while (it.hasNext()) {
arrayList.add(new GGProPollingData(it.next()));
}
return arrayList;
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProGuildData
public IGProRecommendGuildInfo getGuildInfo() {
return new GGProRecommendGuildInfo(this.mInfo.getGuildInfo());
}
}

View File

@ -0,0 +1,49 @@
package com.tencent.mobileqq.qqguildsdk.data;
import com.tencent.mobileqq.qqguildsdk.data.genc.GGProAVChannelConfig;
import com.tencent.mobileqq.qqguildsdk.data.genc.IGProAVChannelConfig;
import com.tencent.qqnt.kernel.nativeinterface.GProHeartbeatRsq;
public class GGProHeartbeatRsq implements IGProHeartbeatRsq {
public final GProHeartbeatRsq mInfo;
public GGProHeartbeatRsq(GProHeartbeatRsq gProHeartbeatRsq) {
this.mInfo = gProHeartbeatRsq;
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProHeartbeatRsq
public IGProAVChannelConfig getAVChannelConfig() {
return new GGProAVChannelConfig(this.mInfo.getAvChannelConfig());
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProHeartbeatRsq
public long getChannelId() {
return this.mInfo.getChannelId();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProHeartbeatRsq
public int getForceExit() {
return this.mInfo.getForceExit();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProHeartbeatRsq
public long getGuildId() {
return this.mInfo.getGuildId();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProHeartbeatRsq
public long getNextHeartBeatInterval() {
return this.mInfo.getNextHeartBeatInterval();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProHeartbeatRsq
public long getNoStreamDisconnectTrtcSecond() {
return this.mInfo.getNoStreamDisconnectTrtcSecond();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProHeartbeatRsq
public String getShowTips() {
return this.mInfo.getShowTips();
}
}

View File

@ -0,0 +1,33 @@
package com.tencent.mobileqq.qqguildsdk.data;
import com.tencent.mobileqq.qqguildsdk.data.genc.GGProLiveRoomInfo;
import com.tencent.mobileqq.qqguildsdk.data.genc.IGProLiveRoomInfo;
import com.tencent.qqnt.kernel.nativeinterface.GProLiveResultItem;
import com.tencent.qqnt.kernel.nativeinterface.MsgAbstract;
import java.util.ArrayList;
import java.util.Iterator;
public class GGProLiveResultItem implements IGProLiveResultItem {
public final GProLiveResultItem mInfo;
public GGProLiveResultItem(GProLiveResultItem gProLiveResultItem) {
this.mInfo = gProLiveResultItem;
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProLiveResultItem
public IGProLiveRoomInfo getLiveChannel() {
return new GGProLiveRoomInfo(this.mInfo.getLiveChannel());
}
//@Override // com.tencent.mobileqq.qqguildsdk.data.IGProLiveResultItem
//public ArrayList<ew> getMsgAbstracts() {
// ArrayList<MsgAbstract> msgAbstracts = this.mInfo.getMsgAbstracts();
// ArrayList<ew> arrayList = new ArrayList<>();
// Iterator<MsgAbstract> it = msgAbstracts.iterator();
// while (it.hasNext()) {
// arrayList.add(new t(it.next()));
// }
// return arrayList;
//}
}

View File

@ -0,0 +1,31 @@
package com.tencent.mobileqq.qqguildsdk.data;
import com.tencent.qqnt.kernel.nativeinterface.GProMsgSummary;
public class GGProMsgSummary implements IGProMsgSummary {
public final GProMsgSummary mInfo;
public GGProMsgSummary(GProMsgSummary gProMsgSummary) {
this.mInfo = gProMsgSummary;
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProMsgSummary
public String getAvatar() {
return this.mInfo.getAvatar();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProMsgSummary
public long getMsgSeq() {
return this.mInfo.getMsgSeq();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProMsgSummary
public byte[] getRichText() {
return this.mInfo.getRichText();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProMsgSummary
public long getTinyId() {
return this.mInfo.getTinyId();
}
}

View File

@ -0,0 +1,33 @@
package com.tencent.mobileqq.qqguildsdk.data;
import com.tencent.mobileqq.qqguildsdk.data.genc.GGProDiscoverStatus;
import com.tencent.mobileqq.qqguildsdk.data.genc.IGProDiscoverStatus;
import com.tencent.qqnt.kernel.nativeinterface.GProMyRecommendMsg;
public class GGProMyRecommendMsg implements IGProMyRecommendMsg {
public final GProMyRecommendMsg mInfo;
public GGProMyRecommendMsg(GProMyRecommendMsg gProMyRecommendMsg) {
this.mInfo = gProMyRecommendMsg;
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProMyRecommendMsg
public int getBusinessType() {
return this.mInfo.getBusinessType();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProMyRecommendMsg
public IGProDiscoverStatus getDiscoverStatus() {
return new GGProDiscoverStatus(this.mInfo.getDiscoverStatus());
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProMyRecommendMsg
public int getFlag() {
return this.mInfo.getFlag();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProMyRecommendMsg
public int getPointType() {
return this.mInfo.getPointType();
}
}

View File

@ -0,0 +1,74 @@
package com.tencent.mobileqq.qqguildsdk.data;
import com.tencent.qqnt.kernel.nativeinterface.GProPollingData;
import com.tencent.qqnt.kernel.nativeinterface.GProStickyChannel;
import com.tencent.qqnt.kernel.nativeinterface.MsgAbstract;
import java.util.ArrayList;
import java.util.Iterator;
public class GGProPollingData implements IGProPollingData {
public final GProPollingData mInfo;
public GGProPollingData(GProPollingData gProPollingData) {
this.mInfo = gProPollingData;
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProPollingData
public long getChannelId() {
return this.mInfo.getChannelId();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProPollingData
public byte[] getCookie() {
return this.mInfo.getCookie();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProPollingData
public boolean getForcePolling() {
return this.mInfo.getForcePolling();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProPollingData
public long getGuildId() {
return this.mInfo.getGuildId();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProPollingData
public ArrayList<IGProStickyChannel> getGuildStickyChannelList() {
ArrayList<GProStickyChannel> guildStickyChannelList = this.mInfo.getGuildStickyChannelList();
ArrayList<IGProStickyChannel> arrayList = new ArrayList<>();
Iterator<GProStickyChannel> it = guildStickyChannelList.iterator();
while (it.hasNext()) {
arrayList.add(new GGProStickyChannel(it.next()));
}
return arrayList;
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProPollingData
public IGProLiveResultItem getLiveResultItem() {
return new GGProLiveResultItem(this.mInfo.getLiveResultItem());
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProPollingData
public int getType() {
return this.mInfo.getType();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProPollingData
public long getUpdateTime() {
return this.mInfo.getUpdateTime();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProPollingData
public long getVersion() {
return this.mInfo.getVersion();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProPollingData
public IAudioChannelMemberInfos getVoiceChannel() {
//return new ChannelMemberInfos(this.mInfo.getVoiceChannel());
return null;
}
}

View File

@ -0,0 +1,36 @@
package com.tencent.mobileqq.qqguildsdk.data;
import com.tencent.qqnt.kernel.nativeinterface.GProQueryRecommendGuildInfoRsp;
public class GGProQueryRecommendGuildInfoRsp implements IGProQueryRecommendGuildInfoRsp {
public final GProQueryRecommendGuildInfoRsp mInfo;
public GGProQueryRecommendGuildInfoRsp(GProQueryRecommendGuildInfoRsp gProQueryRecommendGuildInfoRsp) {
this.mInfo = gProQueryRecommendGuildInfoRsp;
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProQueryRecommendGuildInfoRsp
public byte[] getCookie() {
return this.mInfo.getCookie();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProQueryRecommendGuildInfoRsp
public IGProGuildData getGuildData() {
return new GGProGuildData(this.mInfo.getGuildData());
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProQueryRecommendGuildInfoRsp
public long getNewDefaultChannelId() {
return this.mInfo.getNewDefaultChannelId();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProQueryRecommendGuildInfoRsp
public long getReqInterval() {
return this.mInfo.getReqInterval();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProQueryRecommendGuildInfoRsp
public IGProRecommendGuildPersonalSetting getSetting() {
return new GGProRecommendGuildPersonalSetting(this.mInfo.getSetting());
}
}

View File

@ -0,0 +1,43 @@
package com.tencent.mobileqq.qqguildsdk.data;
import com.tencent.mobileqq.qqguildsdk.data.genc.GGProChannel;
import com.tencent.mobileqq.qqguildsdk.data.genc.IGProChannel;
import com.tencent.qqnt.kernel.nativeinterface.GProChannel;
import com.tencent.qqnt.kernel.nativeinterface.GProRecommendCategoryInfo;
import java.util.ArrayList;
import java.util.Iterator;
public class GGProRecommendCategoryInfo implements IGProRecommendCategoryInfo {
public final GProRecommendCategoryInfo mInfo;
public GGProRecommendCategoryInfo(GProRecommendCategoryInfo gProRecommendCategoryInfo) {
this.mInfo = gProRecommendCategoryInfo;
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProRecommendCategoryInfo
public long getCategoryId() {
return this.mInfo.getCategoryId();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProRecommendCategoryInfo
public int getCategoryIndex() {
return this.mInfo.getCategoryIndex();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProRecommendCategoryInfo
public String getCategoryName() {
return this.mInfo.getCategoryName();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProRecommendCategoryInfo
public ArrayList<IGProChannel> getChannelInfoList() {
ArrayList<GProChannel> channelInfoList = this.mInfo.getChannelInfoList();
ArrayList<IGProChannel> arrayList = new ArrayList<>();
Iterator<GProChannel> it = channelInfoList.iterator();
while (it.hasNext()) {
arrayList.add(new GGProChannel(it.next()));
}
return arrayList;
}
}

View File

@ -0,0 +1,41 @@
package com.tencent.mobileqq.qqguildsdk.data;
import com.tencent.qqnt.kernel.nativeinterface.GProRecommendChannelExtendInfo;
public class GGProRecommendChannelExtendInfo implements IGProRecommendChannelExtendInfo {
public final GProRecommendChannelExtendInfo mInfo;
public GGProRecommendChannelExtendInfo(GProRecommendChannelExtendInfo gProRecommendChannelExtendInfo) {
this.mInfo = gProRecommendChannelExtendInfo;
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProRecommendChannelExtendInfo
public int getAreaType() {
return this.mInfo.getAreaType();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProRecommendChannelExtendInfo
public long getChannelId() {
return this.mInfo.getChannelId();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProRecommendChannelExtendInfo
public String getChannelLink() {
return this.mInfo.getChannelLink();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProRecommendChannelExtendInfo
public int getChannelLinkType() {
return this.mInfo.getChannelLinkType();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProRecommendChannelExtendInfo
public String getGuildFace() {
return this.mInfo.getGuildFace();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProRecommendChannelExtendInfo
public int getHideVisitorStyle() {
return this.mInfo.getHideVisitorStyle();
}
}

View File

@ -0,0 +1,17 @@
package com.tencent.mobileqq.qqguildsdk.data;
import com.tencent.qqnt.kernel.nativeinterface.GProRecommendGuildPersonalSetting;
public class GGProRecommendGuildPersonalSetting implements IGProRecommendGuildPersonalSetting {
public final GProRecommendGuildPersonalSetting mInfo;
public GGProRecommendGuildPersonalSetting(GProRecommendGuildPersonalSetting gProRecommendGuildPersonalSetting) {
this.mInfo = gProRecommendGuildPersonalSetting;
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProRecommendGuildPersonalSetting
public int getExitOption() {
return this.mInfo.getExitOption();
}
}

View File

@ -0,0 +1,44 @@
package com.tencent.mobileqq.qqguildsdk.data;
import com.tencent.mobileqq.qqguildsdk.data.genc.GGProUser;
import com.tencent.mobileqq.qqguildsdk.data.genc.IGProUser;
import com.tencent.qqnt.kernel.nativeinterface.GProSendGiftEventData;
public class GGProSendGiftEventData implements IGProSendGiftEventData {
public final GProSendGiftEventData mInfo;
public GGProSendGiftEventData(GProSendGiftEventData gProSendGiftEventData) {
this.mInfo = gProSendGiftEventData;
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProSendGiftEventData
public long getChannelId() {
return this.mInfo.getChannelId();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProSendGiftEventData
public String getEventId() {
return this.mInfo.getEventId();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProSendGiftEventData
public IGProGiftInfo getGiftInfo() {
return new GGProGiftInfo(this.mInfo.getGiftInfo());
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProSendGiftEventData
public long getGuildId() {
return this.mInfo.getGuildId();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProSendGiftEventData
public IGProUser getReceiverMember() {
return new GGProUser(this.mInfo.getReceiverMember());
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProSendGiftEventData
public IGProUser getSenderMember() {
return new GGProUser(this.mInfo.getSenderMember());
}
}

View File

@ -0,0 +1,60 @@
package com.tencent.mobileqq.qqguildsdk.data;
import com.tencent.mobileqq.qqguildsdk.data.genc.GGProLiveRoomInfo;
import com.tencent.mobileqq.qqguildsdk.data.genc.IGProLiveRoomInfo;
import com.tencent.qqnt.kernel.nativeinterface.GProStickyChannel;
public class GGProStickyChannel implements IGProStickyChannel {
public final GProStickyChannel mInfo;
public GGProStickyChannel(GProStickyChannel gProStickyChannel) {
this.mInfo = gProStickyChannel;
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProStickyChannel
public String getChannelId() {
return this.mInfo.getChannelId();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProStickyChannel
public int getChannelType() {
return this.mInfo.getChannelType();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProStickyChannel
public long getCreateTime() {
return this.mInfo.getCreateTime();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProStickyChannel
public IGProStickyFeedChannel getFeedChannel() {
return new GGProStickyFeedChannel(this.mInfo.getFeedChannel());
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProStickyChannel
public String getGuildId() {
return this.mInfo.getGuildId();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProStickyChannel
public IGProLiveRoomInfo getLiveChannel() {
return new GGProLiveRoomInfo(this.mInfo.getLiveChannel());
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProStickyChannel
public IGProStickyTextChannel getTextChannel() {
return new GGProStickyTextChannel(this.mInfo.getTextChannel());
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProStickyChannel
public long getUpdateTime() {
return this.mInfo.getUpdateTime();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProStickyChannel
public IAudioChannelMemberInfos getVoiceChannel() {
return null;
//return new ChannelMemberInfos(this.mInfo.getVoiceChannel());
}
}

View File

@ -0,0 +1,48 @@
package com.tencent.mobileqq.qqguildsdk.data;
import com.tencent.qqnt.kernel.nativeinterface.GProFeedSummary;
import com.tencent.qqnt.kernel.nativeinterface.GProStickyFeedChannel;
import com.tencent.qqnt.kernel.nativeinterface.GProUser;
import java.util.ArrayList;
import java.util.Iterator;
public class GGProStickyFeedChannel implements IGProStickyFeedChannel {
public final GProStickyFeedChannel mInfo;
public GGProStickyFeedChannel(GProStickyFeedChannel gProStickyFeedChannel) {
this.mInfo = gProStickyFeedChannel;
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProStickyFeedChannel
public String getActiveMemberCount() {
return this.mInfo.getActiveMemberCount();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProStickyFeedChannel
public ArrayList<IGProUserInfo> getActiveMemberList() {
ArrayList<GProUser> activeMemberList = this.mInfo.getActiveMemberList();
ArrayList<IGProUserInfo> arrayList = new ArrayList<>();
Iterator<GProUser> it = activeMemberList.iterator();
while (it.hasNext()) {
arrayList.add(new GProUserInfo(it.next()));
}
return arrayList;
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProStickyFeedChannel
public String getFeedCount() {
return this.mInfo.getFeedCount();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProStickyFeedChannel
public ArrayList<IGProFeedSummary> getFeedSummaryList() {
ArrayList<GProFeedSummary> feedSummaryList = this.mInfo.getFeedSummaryList();
ArrayList<IGProFeedSummary> arrayList = new ArrayList<>();
Iterator<GProFeedSummary> it = feedSummaryList.iterator();
while (it.hasNext()) {
arrayList.add(new GGProFeedSummary(it.next()));
}
return arrayList;
}
}

View File

@ -0,0 +1,44 @@
package com.tencent.mobileqq.qqguildsdk.data;
import com.tencent.qqnt.kernel.nativeinterface.GProMsgSummary;
import com.tencent.qqnt.kernel.nativeinterface.GProStickyTextChannel;
import com.tencent.qqnt.kernel.nativeinterface.GProUser;
import com.tencent.qqnt.kernel.nativeinterface.MsgAbstract;
import java.util.ArrayList;
import java.util.Iterator;
public class GGProStickyTextChannel implements IGProStickyTextChannel {
public final GProStickyTextChannel mInfo;
public GGProStickyTextChannel(GProStickyTextChannel gProStickyTextChannel) {
this.mInfo = gProStickyTextChannel;
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProStickyTextChannel
public String getActiveMemberCount() {
return this.mInfo.getActiveMemberCount();
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProStickyTextChannel
public ArrayList<IGProUserInfo> getActiveMemberList() {
ArrayList<GProUser> activeMemberList = this.mInfo.getActiveMemberList();
ArrayList<IGProUserInfo> arrayList = new ArrayList<>();
Iterator<GProUser> it = activeMemberList.iterator();
while (it.hasNext()) {
arrayList.add(new GProUserInfo(it.next()));
}
return arrayList;
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProStickyTextChannel
public ArrayList<IGProMsgSummary> getMsgList() {
ArrayList<GProMsgSummary> msgList = this.mInfo.getMsgList();
ArrayList<IGProMsgSummary> arrayList = new ArrayList<>();
Iterator<GProMsgSummary> it = msgList.iterator();
while (it.hasNext()) {
arrayList.add(new GGProMsgSummary(it.next()));
}
return arrayList;
}
}

View File

@ -0,0 +1,18 @@
package com.tencent.mobileqq.qqguildsdk.data;
import com.tencent.mobileqq.qqguildsdk.data.genc.GGProRecommendItem;
import com.tencent.mobileqq.qqguildsdk.data.genc.IGProRecommendItem;
import com.tencent.qqnt.kernel.nativeinterface.GProTopGuildRecommendMsg;
public class GGProTopGuildRecommendMsg implements IGProTopGuildRecommendMsg {
public final GProTopGuildRecommendMsg mInfo;
public GGProTopGuildRecommendMsg(GProTopGuildRecommendMsg gProTopGuildRecommendMsg) {
this.mInfo = gProTopGuildRecommendMsg;
}
@Override // com.tencent.mobileqq.qqguildsdk.data.IGProTopGuildRecommendMsg
public IGProRecommendItem getRecommendItem() {
return new GGProRecommendItem(this.mInfo.getRecommendItem());
}
}

Some files were not shown because too many files have changed in this diff Show More