feat: 添加部分Request请求抽象类 (第2次)

This commit is contained in:
叁玖领域 2025-08-16 18:50:45 +08:00
parent 19ae21a206
commit f34a4a58e4
30 changed files with 956 additions and 0 deletions

View File

@ -0,0 +1,4 @@
package top.r3944realms.ltdmanager.napcat.data
class MessageElement {
}

View File

@ -0,0 +1,21 @@
package top.r3944realms.ltdmanager.napcat.requests.message
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import org.yaml.snakeyaml.events.Event.ID
/**
* DeleteMsg请求
*/
@Serializable
data class DeleteMsgRequest(
@SerialName("message_id")
val messageId: ID
) : AbstractMessageRequest() {
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/delete_msg"
}

View File

@ -0,0 +1,34 @@
package top.r3944realms.ltdmanager.napcat.requests.message
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import top.r3944realms.ltdmanager.napcat.data.ID
/**
* FetchEmojiLike请求
*/
@Serializable
data class FetchEmojiLikeRequest(
val count: Double? = null,
/**
* 表情ID
*/
@SerialName("emojiId")
val emojiId: String,
/**
* 表情类型
*/
val emojiType: String,
@SerialName("message_id")
val messageId: ID
) : AbstractMessageRequest() {
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/fetch_emoji_like"
}

View File

@ -0,0 +1,37 @@
package top.r3944realms.ltdmanager.napcat.requests.message
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import top.r3944realms.ltdmanager.napcat.data.ID
/**
* GetForwardMsg请求
*/
@Serializable
data class GetForwardMsgRequest(
/**
* 数量
*/
val count: Double? = null,
/**
* 0为最新
*/
@SerialName("message_seq")
val messageSeq: ID? = null,
/**
* 倒序
*/
val reverseOrder: Boolean? = null,
@SerialName("user_id")
val userId: ID
) : AbstractMessageRequest() {
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/get_forward_msg"
}

View File

@ -0,0 +1,37 @@
package top.r3944realms.ltdmanager.napcat.requests.message
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import top.r3944realms.ltdmanager.napcat.data.ID
/**
* GetFriendMsgHistory请求
*/
@Serializable
data class GetFriendMsgHistoryRequest(
/**
* 数量
*/
val count: Double? = null,
/**
* 0为最新
*/
@SerialName("message_seq")
val messageSeq: ID? = null,
/**
* 倒序
*/
val reverseOrder: Boolean? = null,
@SerialName("user_id")
val userId: ID
) : AbstractMessageRequest() {
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/get_friend_msg_history"
}

View File

@ -0,0 +1,37 @@
package top.r3944realms.ltdmanager.napcat.requests.message
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import top.r3944realms.ltdmanager.napcat.data.ID
/**
* GetGroupMsgHistory请求
*/
@Serializable
data class GetGroupMsgHistoryRequest(
/**
* 数量
*/
val count: Double? = null,
@SerialName("group_id")
val groupId: ID,
/**
* 0为最新
*/
@SerialName("message_seq")
val messageSeq: ID? = null,
/**
* 倒序
*/
val reverseOrder: Boolean? = null
) : AbstractMessageRequest() {
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/get_group_msg_history"
}

View File

@ -0,0 +1,28 @@
package top.r3944realms.ltdmanager.napcat.requests.message
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
/**
* GetImage请求
*/
@Serializable
data class GetImageRequest(
/**
* 二选一
*/
val file: String? = null,
/**
* 二选一
*/
@SerialName("file_id")
val fileId: String? = null
) : AbstractMessageRequest() {
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/get_image"
}

View File

@ -0,0 +1,21 @@
package top.r3944realms.ltdmanager.napcat.requests.message
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import top.r3944realms.ltdmanager.napcat.data.ID
/**
* GetMsg请求
*/
@Serializable
data class GetMsgRequest(
@SerialName("message_id")
val messageId: ID
) : AbstractMessageRequest() {
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/get_msg"
}

View File

@ -0,0 +1,42 @@
package top.r3944realms.ltdmanager.napcat.requests.message
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
/**
* GetRecord请求
*/
@Serializable
data class GetRecordRequest(
val file: String? = null,
@SerialName("file_id")
val fileId: String? = null,
/**
* 输出格式
*/
@SerialName("out_format")
val outFormat: OutFormat
) : AbstractMessageRequest() {
/**
* 输出格式
*/
@Serializable
enum class OutFormat(val value: String) {
@SerialName("amr") AMR("amr"),
@SerialName("flac") FLAC("flac"),
@SerialName("m4a") M4A("m4a"),
@SerialName("mp3") Mp3("mp3"),
@SerialName("ogg") Ogg("ogg"),
@SerialName("spx") Spx("spx"),
@SerialName("wma") WMA("wma"),
@SerialName("wav") Wav("wav");
}
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/get_record"
}

View File

@ -0,0 +1,170 @@
package top.r3944realms.ltdmanager.napcat.requests.message
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import top.r3944realms.ltdmanager.napcat.data.ID
import top.r3944realms.ltdmanager.napcat.data.MessageType
/**
* SendForwardMsg请求
*/
@Serializable
data class SendForwardMsgRequest(
@SerialName("group_id")
val groupId: ID? = null,
val messages: List<TopForwardMsg>,
val news: List<ForwardModelNews>,
/**
* 外显
*/
val prompt: String,
/**
* 内容
*/
val source: String,
/**
* 底下文本
*/
val summary: String,
@SerialName("user_id")
val userId: ID? = null
) : AbstractMessageRequest() {
/**
* 一级合并转发消息
*/
@Serializable
data class TopForwardMsg (
val data: MessageData,
val type: MessageType
)
@Serializable
data class MessageData (
/**
* 构建
*/
val content: List<Message>,
val nickname: String,
@SerialName("user_id")
val userId: ID
)
@Serializable
sealed class ContentUnion {
class ContentClassValue(val value: ContentClass) : ContentUnion()
class StringValue(val value: String) : ContentUnion()
class MessageListValue(val value: List<Message>) : ContentUnion()
}
@Serializable
data class PurpleData (
val text: String? = null,
val id: ID? = null,
val file: String? = null,
/**
* 外显
*
* 底下文本
*/
val summary: String? = null,
val data: String? = null,
val name: String? = null,
/**
* 构建
*/
val content: ContentUnion? = null,
val nickname: String? = null,
@SerialName("user_id")
val userId: ID? = null,
/**
* 外显
*/
val news: List<DataNews>? = null,
/**
* 外显
*/
val prompt: String? = null,
/**
* 标题
*/
val source: String? = null
)
/**
* 文本消息
*
* 表情消息
*
* 图片消息
*
* 回复消息
*
* JSON消息
*
* 视频消息
*
* 文件消息
*
* markdown消息
*
* 发送forward
*
* 二级合并转发消息
*/
@Serializable
data class Message (
val data: PurpleData,
val type: MessageType,
)
@Serializable
data class ContentClass (
val data: FluffyData,
val type: PurpleType
)
@Serializable
data class FluffyData (
/**
* res_id
*/
val id: String
)
@Serializable
enum class PurpleType(val value: String) {
@SerialName("forward") Forward("forward");
}
@Serializable
data class DataNews (
/**
* 内容
*/
val text: String
)
@Serializable
data class ForwardModelNews (
val text: String
)
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/send_forward_msg"
}

View File

@ -0,0 +1,31 @@
package top.r3944realms.ltdmanager.napcat.requests.message
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import top.r3944realms.ltdmanager.napcat.data.ID
/**
* SendGroupAiRecord请求
*/
@Serializable
data class SendGroupAiRecordRequest(
/**
* character_id
*/
val character: String,
@SerialName("group_id")
val groupId: ID,
/**
* 文本
*/
val text: String
) : AbstractMessageRequest() {
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/send_group_ai_record"
}

View File

@ -0,0 +1,36 @@
package top.r3944realms.ltdmanager.napcat.requests.message
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import top.r3944realms.ltdmanager.napcat.data.ID
/**
* SendPoke请求
*/
@Serializable
data class SendPokeRequest(
/**
* 不填则为私聊戳
*/
@SerialName("group_id")
val groupId: ID? = null,
/**
* 戳一戳对象
*/
@SerialName("target_id")
val targetId: String? = null,
/**
* 必填
*/
@SerialName("user_id")
val userId: ID
) : AbstractMessageRequest() {
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/send_poke"
}

View File

@ -0,0 +1,32 @@
package top.r3944realms.ltdmanager.napcat.requests.message
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import top.r3944realms.ltdmanager.napcat.data.ID
/**
* SetMsgEmojiLike请求
*/
@Serializable
data class SetMsgEmojiLikeRequest(
/**
* 表情ID
*/
@SerialName("emoji_id")
val emojiId: Double,
@SerialName("message_id")
val messageId: ID,
/**
* 是否贴
*/
val set: Boolean
) : AbstractMessageRequest() {
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/set_msg_emoji_like"
}

View File

@ -0,0 +1,25 @@
package top.r3944realms.ltdmanager.napcat.requests.message.group
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import top.r3944realms.ltdmanager.napcat.data.ID
import top.r3944realms.ltdmanager.napcat.requests.message.AbstractMessageRequest
/**
* ForwardGroupSingleMsg请求
*/
@Serializable
data class ForwardGroupSingleMsgRequest(
@SerialName("group_id")
val groupId: ID,
@SerialName("message_id")
val messageId: ID
) : AbstractMessageRequest() {
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/forward_group_single_msg"
}

View File

@ -0,0 +1,25 @@
package top.r3944realms.ltdmanager.napcat.requests.message.group
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import top.r3944realms.ltdmanager.napcat.data.ID
import top.r3944realms.ltdmanager.napcat.requests.message.AbstractMessageRequest
/**
* GroupPoke请求
*/
@Serializable
data class GroupPokeRequest(
@SerialName("group_id")
val groupId: ID,
@SerialName("user_id")
val userId: ID
) : AbstractMessageRequest() {
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/group_poke"
}

View File

@ -0,0 +1,41 @@
package top.r3944realms.ltdmanager.napcat.requests.message.group
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import top.r3944realms.ltdmanager.napcat.data.ID
import top.r3944realms.ltdmanager.napcat.requests.message.AbstractMessageRequest
import top.r3944realms.ltdmanager.napcat.requests.message.SendForwardMsgRequest.ForwardModelNews
import top.r3944realms.ltdmanager.napcat.requests.message.SendForwardMsgRequest.TopForwardMsg
/**
* SendGroupForwardMsg请求
*/
@Serializable
data class SendGroupForwardMsgRequest(
@SerialName("group_id")
val groupId: ID,
val messages: List<TopForwardMsg>,
val news: List<ForwardModelNews>,
/**
* 外显
*/
val prompt: String,
/**
* 内容
*/
val source: String,
/**
* 底下文本
*/
val summary: String
) : AbstractMessageRequest() {
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/send_group_forward_msg"
}

View File

@ -0,0 +1,24 @@
package top.r3944realms.ltdmanager.napcat.requests.message.group
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import top.r3944realms.ltdmanager.napcat.data.ID
import top.r3944realms.ltdmanager.napcat.data.MessageElement
import top.r3944realms.ltdmanager.napcat.requests.message.AbstractMessageRequest
/**
* SendGroupMsg请求
*/
@Serializable
data class SendGroupMsgRequest(
@SerialName("group_id")
val groupId: ID,
val message: List<MessageElement>
) : AbstractMessageRequest() {
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/send_group_msg"
}

View File

@ -0,0 +1,25 @@
package top.r3944realms.ltdmanager.napcat.requests.message.personal
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import top.r3944realms.ltdmanager.napcat.data.ID
import top.r3944realms.ltdmanager.napcat.requests.message.AbstractMessageRequest
/**
* ForwardFriendSingleMsg请求
*/
@Serializable
data class ForwardFriendSingleMsgRequest(
@SerialName("message_id")
val messageId: ID,
@SerialName("user_id")
val userId: ID
) : AbstractMessageRequest() {
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/forward_friend_single_msg"
}

View File

@ -0,0 +1,31 @@
package top.r3944realms.ltdmanager.napcat.requests.message.personal
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import top.r3944realms.ltdmanager.napcat.data.ID
import top.r3944realms.ltdmanager.napcat.requests.message.AbstractMessageRequest
/**
* FriendPoke请求
*/
@Serializable
data class FriendPokeRequest(
/**
* 戳一戳对象可不填
*/
@SerialName("target_id")
val targetID: ID? = null,
/**
* 私聊对象
*/
@SerialName("user_id")
val userID: ID
) : AbstractMessageRequest() {
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/friend_poke"
}

View File

@ -0,0 +1,42 @@
package top.r3944realms.ltdmanager.napcat.requests.message.personal
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import top.r3944realms.ltdmanager.napcat.data.ID
import top.r3944realms.ltdmanager.napcat.requests.message.AbstractMessageRequest
import top.r3944realms.ltdmanager.napcat.requests.message.SendForwardMsgRequest.ForwardModelNews
import top.r3944realms.ltdmanager.napcat.requests.message.SendForwardMsgRequest.TopForwardMsg
/**
* SendPrivateForwardMsg请求
*/
@Serializable
data class SendPrivateForwardMsgRequest(
val messages: List<TopForwardMsg>,
val news: List<ForwardModelNews>,
/**
* 外显
*/
val prompt: String,
/**
* 内容
*/
val source: String,
/**
* 底下文本
*/
val summary: String,
@SerialName("user_id")
val userId: ID? = null
) : AbstractMessageRequest() {
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/send_private_forward_msg"
}

View File

@ -0,0 +1,24 @@
package top.r3944realms.ltdmanager.napcat.requests.message.personal
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import top.r3944realms.ltdmanager.napcat.data.ID
import top.r3944realms.ltdmanager.napcat.data.MessageElement
import top.r3944realms.ltdmanager.napcat.requests.message.AbstractMessageRequest
/**
* SendPrivateMsg请求
*/
@Serializable
data class SendPrivateMsgRequest(
@SerialName("user_id")
val userId: ID,
val message: List<MessageElement>
) : AbstractMessageRequest() {
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/send_private_msg"
}

View File

@ -0,0 +1,18 @@
package top.r3944realms.ltdmanager.napcat.requests.other
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import top.r3944realms.ltdmanager.napcat.Developing
/**
* CheckUrlSafely请求
*/
@Developing
@Serializable
class CheckUrlSafelyRequest : AbstractOtherRequest() {
override fun toJSON(): String = "{}"
override fun path(): String = "/check_url_safely"
}

View File

@ -0,0 +1,21 @@
package top.r3944realms.ltdmanager.napcat.requests.other
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import top.r3944realms.ltdmanager.napcat.Developing
/**
* GetCollectionList请求
*/
@Developing
@Serializable
data class GetCollectionListRequest(
val category: Int,
val count: Int
) : AbstractOtherRequest() {
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/get_collection_list"
}

View File

@ -0,0 +1,16 @@
package top.r3944realms.ltdmanager.napcat.requests.other
import kotlinx.serialization.Serializable
import top.r3944realms.ltdmanager.napcat.Developing
/**
* GetGroupIgnoreAdd请求
*/
@Developing
@Serializable
class GetGroupIgnoreAddRequestRequest : AbstractOtherRequest() {
override fun toJSON(): String = "{}"
override fun path(): String = "/get_group_ignore_add_request"
}

View File

@ -0,0 +1,18 @@
package top.r3944realms.ltdmanager.napcat.requests.other
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import top.r3944realms.ltdmanager.napcat.Developing
/**
* GetGuildList请求
*/
@Developing
@Serializable
class GetGuildListRequest : AbstractOtherRequest() {
override fun toJSON(): String = "{}"
override fun path(): String = "/get_guild_list"
}

View File

@ -0,0 +1,18 @@
package top.r3944realms.ltdmanager.napcat.requests.other
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import top.r3944realms.ltdmanager.napcat.Developing
/**
* GetGuildServiceProfile请求
*/
@Developing
@Serializable
class GetGuildServiceProfileRequest: AbstractOtherRequest() {
override fun toJSON(): String = "{}"
override fun path(): String = "/get_guild_service_profile"
}

View File

@ -0,0 +1,24 @@
package top.r3944realms.ltdmanager.napcat.requests.other
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import top.r3944realms.ltdmanager.napcat.data.ID
import top.r3944realms.ltdmanager.napcat.data.MessageElement
/**
* SendGroupMsg请求
*/
@Serializable
data class SendGroupMsgRequest(
val message: List<MessageElement>,
@SerialName("group_id")
val groupId: ID
) : AbstractOtherRequest() {
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/send_group_msg"
}

View File

@ -0,0 +1,32 @@
package top.r3944realms.ltdmanager.napcat.requests.other
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import top.r3944realms.ltdmanager.napcat.data.ID
import top.r3944realms.ltdmanager.napcat.data.MessageElement
/**
* SendMsg请求
*/
@Serializable
data class SendMsgRequest(
val message: List<MessageElement>,
@SerialName("message_type")
val messageType: MessageType,
@SerialName("group_id")
val groupId: ID,
@SerialName("user_id")
val userId: ID
) : AbstractOtherRequest() {
@Serializable
enum class MessageType(val value: String) {
@SerialName("private")PRIVATE("private"),
@SerialName("group")GROUP("group"),
}
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/send_msg"
}

View File

@ -0,0 +1,24 @@
package top.r3944realms.ltdmanager.napcat.requests.other
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import top.r3944realms.ltdmanager.napcat.data.ID
import top.r3944realms.ltdmanager.napcat.data.MessageElement
/**
* SendPrivateMsg请求
*/
@Serializable
data class SendPrivateMsgRequest(
val message: List<MessageElement>,
@SerialName("user_id")
val userId: ID
) : AbstractOtherRequest() {
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/send_private_msg"
}

View File

@ -0,0 +1,18 @@
package top.r3944realms.ltdmanager.napcat.requests.other
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import top.r3944realms.ltdmanager.napcat.Developing
/**
* Unknown请求
*/
@Developing
@Serializable
class UnknownRequest: AbstractOtherRequest() {
override fun toJSON(): String = "{}"
override fun path(): String = "/unknown"
}