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.*
|
||||||
import kotlinx.serialization.json.Json
|
import kotlinx.serialization.json.Json
|
||||||
import top.r3944realms.ltdmanager.napcat.events.account.AbstractAccountEvent
|
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 {
|
private val eventTypeMap by lazy {
|
||||||
mutableMapOf<String, KSerializer<out NapCatEvent>>().apply {
|
mutableMapOf<String, KSerializer<out NapCatEvent>>().apply {
|
||||||
putAll(AbstractAccountEvent.eventTypeMap)
|
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配置
|
// 如果是Account相关事件,使用AccountEvent的json配置
|
||||||
if (type.startsWith("account/")) {
|
if (type.startsWith("account/")) {
|
||||||
AbstractAccountEvent.json.decodeFromString(serializer, jsonString)
|
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 {
|
} else {
|
||||||
// 其他类型的事件可以使用默认的Json配置
|
// 其他类型的事件可以使用默认的Json配置
|
||||||
val json = 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