feat: 完成对各个类型响应Event的抽象定义
This commit is contained in:
parent
39642a2f34
commit
9b1c9b1ace
|
|
@ -3,6 +3,13 @@ package top.r3944realms.ltdmanager.napcat.events
|
|||
import kotlinx.serialization.*
|
||||
import kotlinx.serialization.json.Json
|
||||
import top.r3944realms.ltdmanager.napcat.events.account.AbstractAccountEvent
|
||||
import top.r3944realms.ltdmanager.napcat.events.file.AbstractFileEvent
|
||||
import top.r3944realms.ltdmanager.napcat.events.group.AbstractGroupEvent
|
||||
import top.r3944realms.ltdmanager.napcat.events.message.AbstractMessageEvent
|
||||
import top.r3944realms.ltdmanager.napcat.events.other.AbstractOtherEvent
|
||||
import top.r3944realms.ltdmanager.napcat.events.passkey.AbstractPassKeyEvent
|
||||
import top.r3944realms.ltdmanager.napcat.events.personal.AbstractPersonalEvent
|
||||
import top.r3944realms.ltdmanager.napcat.events.system.AbstractSystemEvent
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -23,6 +30,13 @@ abstract class NapCatEvent(
|
|||
private val eventTypeMap by lazy {
|
||||
mutableMapOf<String, KSerializer<out NapCatEvent>>().apply {
|
||||
putAll(AbstractAccountEvent.eventTypeMap)
|
||||
putAll(AbstractFileEvent.eventTypeMap)
|
||||
putAll(AbstractOtherEvent.eventTypeMap)
|
||||
putAll(AbstractPersonalEvent.eventTypeMap)
|
||||
putAll(AbstractPassKeyEvent.eventTypeMap)
|
||||
putAll(AbstractGroupEvent.eventTypeMap)
|
||||
putAll(AbstractSystemEvent.eventTypeMap)
|
||||
putAll(AbstractMessageEvent.eventTypeMap)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -32,6 +46,20 @@ abstract class NapCatEvent(
|
|||
// 如果是Account相关事件,使用AccountEvent的json配置
|
||||
if (type.startsWith("account/")) {
|
||||
AbstractAccountEvent.json.decodeFromString(serializer, jsonString)
|
||||
} else if (type.startsWith("file/")) {
|
||||
AbstractFileEvent.json.decodeFromString(serializer, jsonString)
|
||||
} else if (type.startsWith("group/")) {
|
||||
AbstractGroupEvent.json.decodeFromString(serializer, jsonString)
|
||||
} else if (type.startsWith("message/")) {
|
||||
AbstractMessageEvent.json.decodeFromString(serializer, jsonString)
|
||||
} else if (type.startsWith("passkey/")) {
|
||||
AbstractPassKeyEvent.json.decodeFromString(serializer, jsonString)
|
||||
} else if (type.startsWith("personal/")) {
|
||||
AbstractPersonalEvent.json.decodeFromString(serializer, jsonString)
|
||||
} else if (type.startsWith("system/")) {
|
||||
AbstractSystemEvent.json.decodeFromString(serializer, jsonString)
|
||||
} else if (type.startsWith("other/")) {
|
||||
AbstractOtherEvent.json.decodeFromString(serializer, jsonString)
|
||||
} else {
|
||||
// 其他类型的事件可以使用默认的Json配置
|
||||
val json = Json {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,59 @@
|
|||
package top.r3944realms.ltdmanager.napcat.events.file
|
||||
|
||||
import kotlinx.serialization.KSerializer
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.json.Json
|
||||
import kotlinx.serialization.modules.SerializersModule
|
||||
import kotlinx.serialization.modules.polymorphic
|
||||
import top.r3944realms.ltdmanager.napcat.events.NapCatEvent
|
||||
|
||||
/**
|
||||
* QQ 文件相关响应抽象
|
||||
* @property status 状态字符串
|
||||
* @property retcode 返回代码
|
||||
* @property message 消息
|
||||
* @property wording 文字描述
|
||||
* @property echo 回显字段 (可空)
|
||||
*/
|
||||
@Serializable
|
||||
abstract class AbstractFileEvent(
|
||||
/**
|
||||
* 状态字符串
|
||||
*/
|
||||
open val status: Status,
|
||||
/**
|
||||
* 返回代码
|
||||
*/
|
||||
open val retcode: Double,
|
||||
/**
|
||||
* 消息
|
||||
*/
|
||||
open val message: String,
|
||||
/**
|
||||
* 文字描述
|
||||
*/
|
||||
open val wording: String,
|
||||
/**
|
||||
* 回显字段
|
||||
*/
|
||||
open val echo: String? = null
|
||||
) : NapCatEvent() {
|
||||
override fun type(): String = "file/" + subtype()
|
||||
companion object {
|
||||
val eventTypeMap by lazy {
|
||||
mutableMapOf<String, KSerializer<out NapCatEvent>>().apply {
|
||||
|
||||
}
|
||||
}
|
||||
internal val json: Json by lazy {
|
||||
Json {
|
||||
ignoreUnknownKeys = true
|
||||
serializersModule = SerializersModule {
|
||||
polymorphic(NapCatEvent::class) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
package top.r3944realms.ltdmanager.napcat.events.group
|
||||
|
||||
import kotlinx.serialization.KSerializer
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.json.Json
|
||||
import kotlinx.serialization.modules.SerializersModule
|
||||
import kotlinx.serialization.modules.polymorphic
|
||||
import top.r3944realms.ltdmanager.napcat.events.NapCatEvent
|
||||
|
||||
/**
|
||||
* QQ 群聊相关响应抽象
|
||||
* @property status 状态字符串
|
||||
* @property retcode 返回代码
|
||||
* @property message 消息
|
||||
* @property wording 文字描述
|
||||
* @property echo 回显字段 (可空)
|
||||
*/
|
||||
@Serializable
|
||||
abstract class AbstractGroupEvent (
|
||||
/**
|
||||
* 状态字符串
|
||||
*/
|
||||
open val status: Status,
|
||||
/**
|
||||
* 返回代码
|
||||
*/
|
||||
open val retcode: Double,
|
||||
/**
|
||||
* 消息
|
||||
*/
|
||||
open val message: String,
|
||||
/**
|
||||
* 文字描述
|
||||
*/
|
||||
open val wording: String,
|
||||
/**
|
||||
* 回显字段
|
||||
*/
|
||||
open val echo: String? = null
|
||||
) : NapCatEvent() {
|
||||
override fun type(): String = "group/" + subtype()
|
||||
|
||||
companion object {
|
||||
val eventTypeMap by lazy {
|
||||
mutableMapOf<String, KSerializer<out NapCatEvent>>().apply {
|
||||
|
||||
}
|
||||
}
|
||||
internal val json: Json by lazy {
|
||||
Json {
|
||||
ignoreUnknownKeys = true
|
||||
serializersModule = SerializersModule {
|
||||
polymorphic(NapCatEvent::class) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
package top.r3944realms.ltdmanager.napcat.events.message
|
||||
|
||||
import kotlinx.serialization.KSerializer
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.json.Json
|
||||
import kotlinx.serialization.modules.SerializersModule
|
||||
import kotlinx.serialization.modules.polymorphic
|
||||
import top.r3944realms.ltdmanager.napcat.events.NapCatEvent
|
||||
|
||||
/**
|
||||
* QQ 消息相关响应抽象
|
||||
* @property status 状态字符串
|
||||
* @property retcode 返回代码
|
||||
* @property message 消息
|
||||
* @property wording 文字描述
|
||||
* @property echo 回显字段 (可空)
|
||||
*/
|
||||
@Serializable
|
||||
abstract class AbstractMessageEvent (
|
||||
/**
|
||||
* 状态字符串
|
||||
*/
|
||||
open val status: Status,
|
||||
/**
|
||||
* 返回代码
|
||||
*/
|
||||
open val retcode: Double,
|
||||
/**
|
||||
* 消息
|
||||
*/
|
||||
open val message: String,
|
||||
/**
|
||||
* 文字描述
|
||||
*/
|
||||
open val wording: String,
|
||||
/**
|
||||
* 回显字段
|
||||
*/
|
||||
open val echo: String? = null
|
||||
) : NapCatEvent() {
|
||||
override fun type(): String = "message/" + subtype()
|
||||
|
||||
companion object {
|
||||
val eventTypeMap by lazy {
|
||||
mutableMapOf<String, KSerializer<out NapCatEvent>>().apply {
|
||||
|
||||
}
|
||||
}
|
||||
internal val json: Json by lazy {
|
||||
Json {
|
||||
ignoreUnknownKeys = true
|
||||
serializersModule = SerializersModule {
|
||||
polymorphic(NapCatEvent::class) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
package top.r3944realms.ltdmanager.napcat.events.other
|
||||
|
||||
import kotlinx.serialization.KSerializer
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.json.Json
|
||||
import kotlinx.serialization.modules.SerializersModule
|
||||
import kotlinx.serialization.modules.polymorphic
|
||||
import top.r3944realms.ltdmanager.napcat.events.NapCatEvent
|
||||
/**
|
||||
* QQ 其它相关响应抽象
|
||||
* @property status 状态字符串
|
||||
* @property retcode 返回代码
|
||||
* @property message 消息
|
||||
* @property wording 文字描述
|
||||
* @property echo 回显字段 (可空)
|
||||
*/
|
||||
@Serializable
|
||||
abstract class AbstractOtherEvent (
|
||||
/**
|
||||
* 状态字符串
|
||||
*/
|
||||
open val status: Status,
|
||||
/**
|
||||
* 返回代码
|
||||
*/
|
||||
open val retcode: Double,
|
||||
/**
|
||||
* 消息
|
||||
*/
|
||||
open val message: String,
|
||||
/**
|
||||
* 文字描述
|
||||
*/
|
||||
open val wording: String,
|
||||
/**
|
||||
* 回显字段
|
||||
*/
|
||||
open val echo: String? = null
|
||||
) : NapCatEvent() {
|
||||
override fun type(): String = "other/" + subtype()
|
||||
|
||||
companion object {
|
||||
val eventTypeMap by lazy {
|
||||
mutableMapOf<String, KSerializer<out NapCatEvent>>().apply {
|
||||
|
||||
}
|
||||
}
|
||||
internal val json: Json by lazy {
|
||||
Json {
|
||||
ignoreUnknownKeys = true
|
||||
serializersModule = SerializersModule {
|
||||
polymorphic(NapCatEvent::class) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
package top.r3944realms.ltdmanager.napcat.events.passkey
|
||||
|
||||
import kotlinx.serialization.KSerializer
|
||||
import kotlinx.serialization.json.Json
|
||||
import kotlinx.serialization.modules.SerializersModule
|
||||
import kotlinx.serialization.modules.polymorphic
|
||||
import top.r3944realms.ltdmanager.napcat.events.NapCatEvent
|
||||
|
||||
/**
|
||||
* QQ 密钥相关响应抽象
|
||||
* @property status 状态字符串
|
||||
* @property retcode 返回代码
|
||||
* @property message 消息
|
||||
* @property wording 文字描述
|
||||
* @property echo 回显字段 (可空)
|
||||
*/
|
||||
abstract class AbstractPassKeyEvent (
|
||||
/**
|
||||
* 状态字符串
|
||||
*/
|
||||
open val status: Status,
|
||||
/**
|
||||
* 返回代码
|
||||
*/
|
||||
open val retcode: Double,
|
||||
/**
|
||||
* 消息
|
||||
*/
|
||||
open val message: String,
|
||||
/**
|
||||
* 文字描述
|
||||
*/
|
||||
open val wording: String,
|
||||
/**
|
||||
* 回显字段
|
||||
*/
|
||||
open val echo: String? = null
|
||||
) : NapCatEvent() {
|
||||
override fun type(): String = "passkey/" + subtype()
|
||||
|
||||
companion object {
|
||||
val eventTypeMap by lazy {
|
||||
mutableMapOf<String, KSerializer<out NapCatEvent>>().apply {
|
||||
|
||||
}
|
||||
}
|
||||
internal val json: Json by lazy {
|
||||
Json {
|
||||
ignoreUnknownKeys = true
|
||||
serializersModule = SerializersModule {
|
||||
polymorphic(NapCatEvent::class) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
package top.r3944realms.ltdmanager.napcat.events.personal
|
||||
|
||||
import kotlinx.serialization.KSerializer
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.json.Json
|
||||
import kotlinx.serialization.modules.SerializersModule
|
||||
import kotlinx.serialization.modules.polymorphic
|
||||
import top.r3944realms.ltdmanager.napcat.events.NapCatEvent
|
||||
|
||||
/**
|
||||
* QQ 个人相关响应抽象
|
||||
* @property status 状态字符串
|
||||
* @property retcode 返回代码
|
||||
* @property message 消息
|
||||
* @property wording 文字描述
|
||||
* @property echo 回显字段 (可空)
|
||||
*/
|
||||
@Serializable
|
||||
abstract class AbstractPersonalEvent (
|
||||
/**
|
||||
* 状态字符串
|
||||
*/
|
||||
open val status: Status,
|
||||
/**
|
||||
* 返回代码
|
||||
*/
|
||||
open val retcode: Double,
|
||||
/**
|
||||
* 消息
|
||||
*/
|
||||
open val message: String,
|
||||
/**
|
||||
* 文字描述
|
||||
*/
|
||||
open val wording: String,
|
||||
/**
|
||||
* 回显字段
|
||||
*/
|
||||
open val echo: String? = null
|
||||
) : NapCatEvent() {
|
||||
override fun type(): String = "personal/" + subtype()
|
||||
|
||||
companion object {
|
||||
val eventTypeMap by lazy {
|
||||
mutableMapOf<String, KSerializer<out NapCatEvent>>().apply {
|
||||
|
||||
}
|
||||
}
|
||||
internal val json: Json by lazy {
|
||||
Json {
|
||||
ignoreUnknownKeys = true
|
||||
serializersModule = SerializersModule {
|
||||
polymorphic(NapCatEvent::class) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
package top.r3944realms.ltdmanager.napcat.events.system
|
||||
|
||||
import kotlinx.serialization.KSerializer
|
||||
import kotlinx.serialization.json.Json
|
||||
import kotlinx.serialization.modules.SerializersModule
|
||||
import kotlinx.serialization.modules.polymorphic
|
||||
import top.r3944realms.ltdmanager.napcat.events.NapCatEvent
|
||||
|
||||
abstract class AbstractSystemEvent
|
||||
: NapCatEvent() {
|
||||
override fun type(): String = "system/" + subtype()
|
||||
companion object {
|
||||
val eventTypeMap by lazy {
|
||||
mutableMapOf<String, KSerializer<out NapCatEvent>>().apply {
|
||||
|
||||
}
|
||||
}
|
||||
internal val json: Json by lazy {
|
||||
Json {
|
||||
ignoreUnknownKeys = true
|
||||
serializersModule = SerializersModule {
|
||||
polymorphic(NapCatEvent::class) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user