feat: 完成请求的类抽象化

This commit is contained in:
叁玖领域 2025-08-16 20:53:31 +08:00
parent f34a4a58e4
commit bf6c5b9a46
56 changed files with 634 additions and 77 deletions

View File

@ -9,6 +9,6 @@ def main():
"/forward_group_single_msg", # 转发单条消息到群 "/forward_group_single_msg", # 转发单条消息到群
"/group_poke" # 发送群聊戳一戳 "/group_poke" # 发送群聊戳一戳
] ]
kg.generateEventKt("message.group", "AbstractGroup", api_paths) kg.generateEventKt("message.group", "AbstractMessage", api_paths)
if __name__ == "__main__": if __name__ == "__main__":
main() main()

View File

@ -17,6 +17,6 @@ def main():
"/get_image", # 获取图片消息详情 "/get_image", # 获取图片消息详情
"/send_group_ai_record" # 发送群AI语音 "/send_group_ai_record" # 发送群AI语音
] ]
kg.generateEventKt("message", "AbstractGroup", api_paths) kg.generateEventKt("message", "AbstractMessage", api_paths)
if __name__ == "__main__": if __name__ == "__main__":
main() main()

View File

@ -4,11 +4,11 @@ sys.path.append("../..") # 添加父目录到模块搜索路径
import KtEventGenerator as kg import KtEventGenerator as kg
def main(): def main():
api_paths = [ api_paths = [
"/send_private_msg", # 发送私聊消息文本、图片、表情、JSON、语音、视频、回复、音乐卡片等 "/send_private_msg", # 发送私聊消息文本、图片、表情、JSON、语音、视频、回复、音乐卡片等
"/send_private_forward_msg", # 发送私聊合并转发消息 "/send_private_forward_msg", # 发送私聊合并转发消息
"/forward_friend_single_msg", # 转发单条消息到私聊 "/forward_friend_single_msg", # 转发单条消息到私聊
"/friend_poke" # 发送私聊戳一戳 "/friend_poke" # 发送私聊戳一戳
] ]
kg.generateEventKt("message.personal", "AbstractGroup", api_paths) kg.generateEventKt("message.personal", "AbstractMessage", api_paths)
if __name__ == "__main__": if __name__ == "__main__":
main() main()

View File

@ -12,7 +12,7 @@ def main():
"/can_send_record", # 检查是否可以发送语音 "/can_send_record", # 检查是否可以发送语音
"/get_ai_characters", # 获取AI语音人物 "/get_ai_characters", # 获取AI语音人物
"/click_inline_keyboard_button", # 点击按钮 "/click_inline_keyboard_button", # 点击按钮
"/get_ai_record" # 获取AI语音 "/get_ai_record", # 获取AI语音
"/set_input_status" # 设置输入状态 "/set_input_status" # 设置输入状态
] ]
kg.generateEventKt("personal", "AbstractPersonal", api_paths) kg.generateEventKt("personal", "AbstractPersonal", api_paths)

View File

@ -8,7 +8,9 @@ cd ../message/personal
python ktg.py python ktg.py
cd ../group cd ../group
python ktg.py python ktg.py
cd ../../personal cd ..
python ktg.py
cd ../personal
python ktg.py python ktg.py
cd ../passkey cd ../passkey
python ktg.py python ktg.py

View File

@ -1,7 +1,7 @@
# ktg.py # ktg.py
import sys import sys
sys.path.append("..") # 添加父目录到模块搜索路径 sys.path.append("..") # 添加父目录到模块搜索路径
import KtEventGenerator as kg import KtRequestGenerator as kg
def main(): def main():
api_paths = [ api_paths = [
# 账号信息管理 # 账号信息管理
@ -48,6 +48,6 @@ def main():
"/ArkShareGroup", # 获取推荐群聊卡片 "/ArkShareGroup", # 获取推荐群聊卡片
"/get_mini_app_ark", # 获取小程序卡片 "/get_mini_app_ark", # 获取小程序卡片
] ]
kg.generateEventKt("account", "AbstractAccount", api_paths) kg.generateRequestKt("account", "AbstractAccount", api_paths)
if __name__ == "__main__": if __name__ == "__main__":
main() main()

View File

@ -1,7 +1,7 @@
# ktg.py # ktg.py
import sys import sys
sys.path.append("..") # 添加父目录到模块搜索路径 sys.path.append("..") # 添加父目录到模块搜索路径
import requests.KtRequestGenerator as kg import KtRequestGenerator as kg
def main(): def main():
api_paths = [ api_paths = [
"/move_group_file", # 移动群文件 "/move_group_file", # 移动群文件

View File

@ -1,7 +1,7 @@
# ktg.py # ktg.py
import sys import sys
sys.path.append("..") # 添加父目录到模块搜索路径 sys.path.append("..") # 添加父目录到模块搜索路径
import requests.KtRequestGenerator as kg import KtRequestGenerator as kg
def main(): def main():
api_paths = [ api_paths = [
# 群信息获取 # 群信息获取

View File

@ -1,7 +1,7 @@
# ktg.py # ktg.py
import sys import sys
sys.path.append("../..") # 添加父目录到模块搜索路径 sys.path.append("../..") # 添加父目录到模块搜索路径
import requests.KtRequestGenerator as kg import KtRequestGenerator as kg
def main(): def main():
api_paths = [ api_paths = [
"/send_group_msg", # 发送群消息文本、图片、表情、JSON、语音、视频、回复、音乐卡片等 "/send_group_msg", # 发送群消息文本、图片、表情、JSON、语音、视频、回复、音乐卡片等
@ -9,6 +9,6 @@ def main():
"/forward_group_single_msg", # 转发单条消息到群 "/forward_group_single_msg", # 转发单条消息到群
"/group_poke" # 发送群聊戳一戳 "/group_poke" # 发送群聊戳一戳
] ]
kg.generateRequestKt("message.group", "AbstractGroup", api_paths) kg.generateRequestKt("message.group", "AbstractMessage", api_paths)
if __name__ == "__main__": if __name__ == "__main__":
main() main()

View File

@ -1,7 +1,7 @@
# ktg.py # ktg.py
import sys import sys
sys.path.append("..") # 添加父目录到模块搜索路径 sys.path.append("..") # 添加父目录到模块搜索路径
import requests.KtRequestGenerator as kg import KtRequestGenerator as kg
def main(): def main():
api_paths = [ api_paths = [
"/send_poke", # 发送戳一戳(通用版,可能同时适用于群和私聊) "/send_poke", # 发送戳一戳(通用版,可能同时适用于群和私聊)
@ -17,6 +17,6 @@ def main():
"/get_image", # 获取图片消息详情 "/get_image", # 获取图片消息详情
"/send_group_ai_record" # 发送群AI语音 "/send_group_ai_record" # 发送群AI语音
] ]
kg.generateRequestKt("message", "AbstractGroup", api_paths) kg.generateRequestKt("message", "AbstractMessage", api_paths)
if __name__ == "__main__": if __name__ == "__main__":
main() main()

View File

@ -1,7 +1,7 @@
# ktg.py # ktg.py
import sys import sys
sys.path.append("../..") # 添加父目录到模块搜索路径 sys.path.append("../..") # 添加父目录到模块搜索路径
import requests.KtRequestGenerator as kg import KtRequestGenerator as kg
def main(): def main():
api_paths = [ api_paths = [
"/send_private_msg", # 发送私聊消息文本、图片、表情、JSON、语音、视频、回复、音乐卡片等 "/send_private_msg", # 发送私聊消息文本、图片、表情、JSON、语音、视频、回复、音乐卡片等
@ -9,6 +9,6 @@ def main():
"/forward_friend_single_msg", # 转发单条消息到私聊 "/forward_friend_single_msg", # 转发单条消息到私聊
"/friend_poke" # 发送私聊戳一戳 "/friend_poke" # 发送私聊戳一戳
] ]
kg.generateRequestKt("message.personal", "AbstractGroup", api_paths) kg.generateRequestKt("message.personal", "AbstractMessage", api_paths)
if __name__ == "__main__": if __name__ == "__main__":
main() main()

View File

@ -1,7 +1,7 @@
# ktg.py # ktg.py
import sys import sys
sys.path.append("..") # 添加父目录到模块搜索路径 sys.path.append("..") # 添加父目录到模块搜索路径
import requests.KtRequestGenerator as kg import KtRequestGenerator as kg
def main(): def main():
api_paths = [ api_paths = [
# 保留 # 保留

View File

@ -1,7 +1,7 @@
# ktg.py # ktg.py
import sys import sys
sys.path.append("..") # 添加父目录到模块搜索路径 sys.path.append("..") # 添加父目录到模块搜索路径
import requests.KtRequestGenerator as kg import KtRequestGenerator as kg
def main(): def main():
api_paths = [ api_paths = [
"/get_clientkey", # 获取 clientkey "/get_clientkey", # 获取 clientkey

View File

@ -1,7 +1,7 @@
# ktg.py # ktg.py
import sys import sys
sys.path.append("..") # 添加父目录到模块搜索路径 sys.path.append("..") # 添加父目录到模块搜索路径
import requests.KtRequestGenerator as kg import KtRequestGenerator as kg
def main(): def main():
api_paths = [ api_paths = [
"/ocr_image", # OCR 图片识别 "/ocr_image", # OCR 图片识别
@ -12,7 +12,7 @@ def main():
"/can_send_record", # 检查是否可以发送语音 "/can_send_record", # 检查是否可以发送语音
"/get_ai_characters", # 获取AI语音人物 "/get_ai_characters", # 获取AI语音人物
"/click_inline_keyboard_button", # 点击按钮 "/click_inline_keyboard_button", # 点击按钮
"/get_ai_record" # 获取AI语音 "/get_ai_record", # 获取AI语音
"/set_input_status" # 设置输入状态 "/set_input_status" # 设置输入状态
] ]
kg.generateRequestKt("personal", "AbstractPersonal", api_paths) kg.generateRequestKt("personal", "AbstractPersonal", api_paths)

View File

@ -8,7 +8,9 @@ cd ../message/personal
python ktg.py python ktg.py
cd ../group cd ../group
python ktg.py python ktg.py
cd ../../personal cd ..
python ktg.py
cd ../personal
python ktg.py python ktg.py
cd ../passkey cd ../passkey
python ktg.py python ktg.py

View File

@ -8,6 +8,8 @@ cd ../message/personal
python ktg.py python ktg.py
cd ../group cd ../group
python ktg.py python ktg.py
cd ..
python ktg.py
cd ../../personal cd ../../personal
python ktg.py python ktg.py
cd ../passkey cd ../passkey

View File

@ -1,30 +1,8 @@
# ktg.py # ktg.py
import sys import sys
sys.path.append("..") # 添加父目录到模块搜索路径 sys.path.append("..") # 添加父目录到模块搜索路径
import KtEventGenerator as kg import KtRequestGenerator as kg
def main(): def main():
# Kotlin事件类模板
kotlin_template_system = """
package top.r3944realms.ltdmanager.napcat.events.{path}
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.Transient
/**
* {event_description}事件
* @property data 响应数据
*/
@Serializable
data class {class_name}(
) : {super_class}Event() {{
override fun subtype(): String {{
return "{original_name}"
}}
}}
"""
api_paths = [ api_paths = [
# 账号控制 # 账号控制
"/get_robot_uin_range", # 获取机器人可操作的账号范围(多账号托管时使用) "/get_robot_uin_range", # 获取机器人可操作的账号范围(多账号托管时使用)
@ -37,6 +15,6 @@ data class {class_name}(
# 系统信息 # 系统信息
"/get_version_info" # 获取机器人框架/客户端的版本信息 "/get_version_info" # 获取机器人框架/客户端的版本信息
] ]
kg.generateEventKt("system", "AbstractSystem", api_paths, kotlin_template_system) kg.generateRequestKt("system", "AbstractSystem", api_paths)
if __name__ == "__main__": if __name__ == "__main__":
main() main()

View File

@ -5,7 +5,6 @@ import top.r3944realms.ltdmanager.napcat.events.NapCatEvent
import top.r3944realms.ltdmanager.napcat.events.group.SetGroupPortraitEvent import top.r3944realms.ltdmanager.napcat.events.group.SetGroupPortraitEvent
import top.r3944realms.ltdmanager.napcat.events.group.SetGroupSearchEvent import top.r3944realms.ltdmanager.napcat.events.group.SetGroupSearchEvent
import top.r3944realms.ltdmanager.napcat.events.personal.CanSendImageEvent import top.r3944realms.ltdmanager.napcat.events.personal.CanSendImageEvent
import top.r3944realms.ltdmanager.napcat.requests.account.SetOnlineStatusRequest
fun main() { fun main() {
val logger = LoggerFactory.getLogger("log") val logger = LoggerFactory.getLogger("log")

View File

@ -1,4 +1,165 @@
package top.r3944realms.ltdmanager.napcat.data package top.r3944realms.ltdmanager.napcat.data
class MessageElement { import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Serializable
class MessageElement(
val type: MessageType,
val data: Message? = null
) {
companion object {
fun text(text: String): MessageElement = MessageElement(MessageType.Text, TextMessage(text))
fun at(qq: ID, name: String?): MessageElement = MessageElement(MessageType.At, AtMessage(qq, name))
fun image(file: String, summary: String?): MessageElement = MessageElement(MessageType.Image, ImageMessage(file, summary))
fun json(json: String): MessageElement = MessageElement(MessageType.JSON, JSONMessage(json))
fun face(id: Int): MessageElement = MessageElement(MessageType.Face, FaceMessage(id))
fun record(file: String): MessageElement = MessageElement(MessageType.Record, RecordMessage(file))
fun markdown(text: String): MessageElement = MessageElement(MessageType.Record, RecordMessage(text))
fun video(video: String): MessageElement = MessageElement(MessageType.Video, VideoMessage(video))
fun reply(id: ID, text: String):List<MessageElement> = ArrayList<MessageElement>(2).apply{
add(MessageElement(MessageType.Reply, ReplyMessage(id)))
add(text(text))
}
fun qqMusic(id: String): MessageElement = MessageElement(MessageType.Music, MusicMessage(MusicMessage.Type.QQ, id))
fun neteaseMusic(id: String): MessageElement = MessageElement(MessageType.Music, MusicMessage(MusicMessage.Type.NETEASE, id))
fun customMusic(url: String, audio: String, title: String, image: String): MessageElement = MessageElement(MessageType.Music, CustomMusicMessage(CustomMusicMessage.Type.Custom, url, audio, title, image))
fun dice(): MessageElement = MessageElement(MessageType.Dice)
fun rps(): MessageElement = MessageElement(MessageType.Rps)
}
@Serializable
abstract class Message
/**
* 文本
*/
@Serializable
data class TextMessage(
val text: String
) : Message()
/**
* At
*/
@Serializable
data class AtMessage(
val qq: ID,
val name: String? = null
) : Message() {
fun isAtAll():Boolean {
if (qq is ID.StringValue) {
return qq.value == "all"
}
return false
}
}
/**
* 图片
*/
@Serializable
data class ImageMessage(
val file: String,
val summary: String? = "[图片]"
) : Message()
/**
* JSON
*/
@Serializable
data class JSONMessage(
val data: String
) : Message()
/**
* 语音 && MarkDown(在其它/保留接口里)
*/
@Serializable
data class RecordMessage(
val file: String
) : Message()
/**
* 视频
*/
@Serializable
data class VideoMessage(
val file: String
) : Message()
/**
* 系统表情
*/
@Serializable
data class FaceMessage(
val id: Int
) : Message()
/**
* 回复
*/
@Serializable
data class ReplyMessage(
val id: ID
) : Message()
/**
* 音乐
*/
@Serializable
data class MusicMessage(
val type: Type,
val id: String,
): Message() {
@Serializable
enum class Type(val string: String) {
@SerialName("163")NETEASE("netease"),
@SerialName("qq")QQ("qq")
}
}
/**
* 音乐
*/
@Serializable
data class CustomMusicMessage(
val type: Type,
/**
* 链接
*/
val url: String,
/**
* 音频
*/
val audio: String,
/**
* 标题
*/
val title: String,
/**
* 图片
*/
val image: String,
) : Message() {
@Serializable
enum class Type(val string: String) {
@SerialName("custom")Custom("custom")
}
}
@Serializable
data class DiceMessage (
/**
* 该参数暂不可用
*/
val result: Type
) : Message() {
@Serializable
enum class Type(val value: Int) {
@SerialName("1")ONE(1),
@SerialName("2")TWO(2),
@SerialName("3")THREE(3),
@SerialName("4")FOUR(4),
@SerialName("5")FIVE(5),
@SerialName("6")SIX(6),
}
}
} }

View File

@ -14,5 +14,9 @@ enum class MessageType(val value: String) {
@SerialName("record") Record("record"), @SerialName("record") Record("record"),
@SerialName("reply") Reply("reply"), @SerialName("reply") Reply("reply"),
@SerialName("text") Text("text"), @SerialName("text") Text("text"),
@SerialName("video") Video("video"); @SerialName("video") Video("video"),
@SerialName("music") Music("music"),
@SerialName("dice") Dice("dice"),
@SerialName("rps") Rps("rps"),
@SerialName("node") Node("node");
} }

View File

@ -3,7 +3,7 @@ package top.r3944realms.ltdmanager.napcat.data
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
@Serializable @Serializable
sealed class Qq { sealed class QQ {
class DoubleValue(val value: Double) : Qq() class DoubleValue(val value: Double) : QQ()
class StringValue(val value: String) : Qq() class StringValue(val value: String) : QQ()
} }

View File

@ -5,7 +5,7 @@ import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlinx.serialization.Transient import kotlinx.serialization.Transient
import top.r3944realms.ltdmanager.napcat.data.MessageType import top.r3944realms.ltdmanager.napcat.data.MessageType
import top.r3944realms.ltdmanager.napcat.data.Qq import top.r3944realms.ltdmanager.napcat.data.QQ
import top.r3944realms.ltdmanager.napcat.data.Sender import top.r3944realms.ltdmanager.napcat.data.Sender
/** /**
@ -165,8 +165,8 @@ data class GetRecentContactEvent(
data class Data ( data class Data (
val text: String? = null, val text: String? = null,
val name: String? = null, val name: String? = null,
val qq: Qq? = null, val qq: QQ? = null,
val id: Qq? = null, val id: QQ? = null,
val file: String? = null, val file: String? = null,
/** /**

View File

@ -5,7 +5,7 @@ import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlinx.serialization.Transient import kotlinx.serialization.Transient
import top.r3944realms.ltdmanager.napcat.data.MessageType import top.r3944realms.ltdmanager.napcat.data.MessageType
import top.r3944realms.ltdmanager.napcat.data.Qq import top.r3944realms.ltdmanager.napcat.data.QQ
import top.r3944realms.ltdmanager.napcat.data.Sender import top.r3944realms.ltdmanager.napcat.data.Sender
import top.r3944realms.ltdmanager.napcat.events.group.AbstractGroupEvent import top.r3944realms.ltdmanager.napcat.events.group.AbstractGroupEvent
@ -154,8 +154,8 @@ data class GetForwardMsgEvent(
data class MessageData ( data class MessageData (
val text: String? = null, val text: String? = null,
val name: String? = null, val name: String? = null,
val qq: Qq? = null, val qq: QQ? = null,
val id: Qq? = null, val id: QQ? = null,
val file: String? = null, val file: String? = null,
/** /**

View File

@ -5,7 +5,7 @@ import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlinx.serialization.Transient import kotlinx.serialization.Transient
import top.r3944realms.ltdmanager.napcat.data.MessageType import top.r3944realms.ltdmanager.napcat.data.MessageType
import top.r3944realms.ltdmanager.napcat.data.Qq import top.r3944realms.ltdmanager.napcat.data.QQ
import top.r3944realms.ltdmanager.napcat.data.Sender import top.r3944realms.ltdmanager.napcat.data.Sender
import top.r3944realms.ltdmanager.napcat.events.group.AbstractGroupEvent import top.r3944realms.ltdmanager.napcat.events.group.AbstractGroupEvent
@ -41,8 +41,8 @@ data class GetFriendMsgHistoryEvent(
data class MessageData ( data class MessageData (
val text: String? = null, val text: String? = null,
val name: String? = null, val name: String? = null,
val qq: Qq? = null, val qq: QQ? = null,
val id: Qq? = null, val id: QQ? = null,
val file: String? = null, val file: String? = null,
/** /**

View File

@ -10,7 +10,7 @@ import kotlinx.serialization.json.Json
*/ */
@Serializable @Serializable
class GetFriendListRequest: AbstractAccountRequest() { class GetFriendListRequest: AbstractAccountRequest() {
override fun toJSON(): String = Json.encodeToString(this) override fun toJSON(): String = "{}"
override fun path(): String = "/get_friend_list" override fun path(): String = "/get_friend_list"
} }

View File

@ -10,7 +10,7 @@ import kotlinx.serialization.json.Json
*/ */
@Serializable @Serializable
class GetFriendsWithCategoryRequest : AbstractAccountRequest() { class GetFriendsWithCategoryRequest : AbstractAccountRequest() {
override fun toJSON(): String = Json.encodeToString(this) override fun toJSON(): String = "{}"
override fun path(): String = "/get_friends_with_category" override fun path(): String = "/get_friends_with_category"
} }

View File

@ -10,7 +10,7 @@ import kotlinx.serialization.json.Json
*/ */
@Serializable @Serializable
class GetLoginInfoRequest : AbstractAccountRequest() { class GetLoginInfoRequest : AbstractAccountRequest() {
override fun toJSON(): String = Json.encodeToString(this) override fun toJSON(): String = "{}"
override fun path(): String = "/get_login_info" override fun path(): String = "/get_login_info"
} }

View File

@ -4,15 +4,13 @@ import kotlinx.serialization.Serializable
import top.r3944realms.ltdmanager.napcat.Developing import top.r3944realms.ltdmanager.napcat.Developing
/** /**
* 设置消息已读 * 获取当前账号在线客户端列表
*/ */
@Developing @Developing
@Serializable @Serializable
class GetOnlineClientRequest class GetOnlineClientRequest : AbstractAccountRequest(){
: AbstractAccountRequest(){ override fun toJSON(): String = "{}"
override fun toJSON(): String {
return "{}"
}
override fun path(): String { override fun path(): String {
return "/get_online_clients" return "/get_online_clients"

View File

@ -12,7 +12,7 @@ import top.r3944realms.ltdmanager.napcat.Developing
@Developing @Developing
@Serializable @Serializable
class GetUnidirectionalFriendListRequest: AbstractAccountRequest() { class GetUnidirectionalFriendListRequest: AbstractAccountRequest() {
override fun toJSON(): String = Json.encodeToString(this) override fun toJSON(): String = "{}"
override fun path(): String = "/get_unidirectional_friend_list" override fun path(): String = "/get_unidirectional_friend_list"
} }

View File

@ -10,7 +10,7 @@ import kotlinx.serialization.json.Json
*/ */
@Serializable @Serializable
class MarkAllAsReadRequest: AbstractAccountRequest() { class MarkAllAsReadRequest: AbstractAccountRequest() {
override fun toJSON(): String = Json.encodeToString(this) override fun toJSON(): String = "{}"
override fun path(): String = "/_mark_all_as_read" override fun path(): String = "/_mark_all_as_read"
} }

View File

@ -5,7 +5,6 @@ import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json import kotlinx.serialization.json.Json
import top.r3944realms.ltdmanager.napcat.data.ID import top.r3944realms.ltdmanager.napcat.data.ID
import top.r3944realms.ltdmanager.napcat.requests.NapCatRequest
/** /**
* 设置消息已读 * 设置消息已读

View File

@ -13,7 +13,7 @@ import top.r3944realms.ltdmanager.napcat.data.ID
@Serializable @Serializable
data class SetEssenceMsgRequest( data class SetEssenceMsgRequest(
@SerialName("message_id") @SerialName("message_id")
val messageID: ID val messageId: ID
) : AbstractGroupRequest() { ) : AbstractGroupRequest() {
override fun toJSON(): String = Json.encodeToString(this) override fun toJSON(): String = Json.encodeToString(this)

View File

@ -4,7 +4,7 @@ import kotlinx.serialization.Serializable
import top.r3944realms.ltdmanager.napcat.requests.NapCatRequest import top.r3944realms.ltdmanager.napcat.requests.NapCatRequest
@Serializable @Serializable
abstract class AbstractPasskeyRequest abstract class AbstractPassKeyRequest
: NapCatRequest() { : NapCatRequest() {
override fun header(): String { override fun header(): String {
return "passkey" return "passkey"

View File

@ -0,0 +1,14 @@
package top.r3944realms.ltdmanager.napcat.requests.passkey
import kotlinx.serialization.Serializable
/**
* GetClientkey请求
*/
@Serializable
class GetClientkeyRequest: AbstractPassKeyRequest() {
override fun toJSON(): String = "{}"
override fun path(): String = "/get_clientkey"
}

View File

@ -0,0 +1,18 @@
package top.r3944realms.ltdmanager.napcat.requests.passkey
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
/**
* GetCookies请求
*/
@Serializable
data class GetCookiesRequest(
val domain: String
) : AbstractPassKeyRequest() {
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/get_cookies"
}

View File

@ -0,0 +1,18 @@
package top.r3944realms.ltdmanager.napcat.requests.passkey
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
/**
* GetCredentials请求
*/
@Serializable
data class GetCredentialsRequest(
val domain: String
) : AbstractPassKeyRequest() {
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/get_credentials"
}

View File

@ -0,0 +1,14 @@
package top.r3944realms.ltdmanager.napcat.requests.passkey
import kotlinx.serialization.Serializable
/**
* GetCsrfToken请求
*/
@Serializable
class GetCsrfTokenRequest : AbstractPassKeyRequest() {
override fun toJSON(): String = "{}"
override fun path(): String = "/get_csrf_token"
}

View File

@ -0,0 +1,14 @@
package top.r3944realms.ltdmanager.napcat.requests.passkey
import kotlinx.serialization.Serializable
/**
* GetRkey请求
*/
@Serializable
class GetRkeyRequest: AbstractPassKeyRequest() {
override fun toJSON(): String = "{}"
override fun path(): String = "/get_rkey"
}

View File

@ -0,0 +1,14 @@
package top.r3944realms.ltdmanager.napcat.requests.passkey
import kotlinx.serialization.Serializable
/**
* GetRkeyServer请求
*/
@Serializable
class GetRkeyServerRequest: AbstractPassKeyRequest() {
override fun toJSON(): String = "{}"
override fun path(): String = "/get_rkey_server"
}

View File

@ -0,0 +1,14 @@
package top.r3944realms.ltdmanager.napcat.requests.passkey
import kotlinx.serialization.Serializable
/**
* NcGetRkey请求
*/
@Serializable
class NcGetRkeyRequest : AbstractPassKeyRequest() {
override fun toJSON(): String = "{}"
override fun path(): String = "/nc_get_rkey"
}

View File

@ -0,0 +1,14 @@
package top.r3944realms.ltdmanager.napcat.requests.personal
import kotlinx.serialization.Serializable
/**
* CanSendImage请求
*/
@Serializable
class CanSendImageRequest : AbstractPersonalRequest() {
override fun toJSON(): String = "{}"
override fun path(): String = "/can_send_image"
}

View File

@ -0,0 +1,14 @@
package top.r3944realms.ltdmanager.napcat.requests.personal
import kotlinx.serialization.Serializable
/**
* CanSendRecord请求
*/
@Serializable
class CanSendRecordRequest : AbstractPersonalRequest() {
override fun toJSON(): String = "{}"
override fun path(): String = "/can_send_record"
}

View File

@ -0,0 +1,33 @@
package top.r3944realms.ltdmanager.napcat.requests.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
/**
* ClickInlineKeyboardButton请求
*/
@Serializable
data class ClickInlineKeyboardButtonRequest(
@SerialName("bot_appid")
val botAppid: String,
@SerialName("button_id")
val buttonID: String,
@SerialName("callback_data")
val callbackData: String,
@SerialName("group_id")
val groupID: ID,
@SerialName("msg_seq")
val msgSeq: String
) : AbstractPersonalRequest() {
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/click_inline_keyboard_button"
}

View File

@ -0,0 +1,27 @@
package top.r3944realms.ltdmanager.napcat.requests.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
/**
* GetAiCharacters请求
*/
@Serializable
data class GetAiCharactersRequest(
/**
* 1 or 2?
*/
@SerialName("chat_type")
val chatType: ID? = null,
@SerialName("group_id")
val groupId: ID
) : AbstractPersonalRequest() {
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/get_ai_characters"
}

View File

@ -0,0 +1,31 @@
package top.r3944realms.ltdmanager.napcat.requests.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
/**
* GetAiRecord请求
*/
@Serializable
data class GetAiRecordRequest(
/**
* character_id
*/
val character: String,
@SerialName("group_id")
val groupId: ID,
/**
* 文本
*/
val text: String
) : AbstractPersonalRequest() {
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/get_ai_record"
}

View File

@ -0,0 +1,18 @@
package top.r3944realms.ltdmanager.napcat.requests.personal
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
/**
* OcrImage请求
*/
@Serializable
data class OcrImageRequest(
val image: String
) : AbstractPersonalRequest() {
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/ocr_image"
}

View File

@ -0,0 +1,27 @@
package top.r3944realms.ltdmanager.napcat.requests.personal
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonObject
/**
* PointHandleQuickOperation请求
*/
@Serializable
data class PointHandleQuickOperationRequest(
/**
* 事件数据对象
*/
val context: JsonObject,
/**
* 快速操作对象
*/
val operation: JsonObject
) : AbstractPersonalRequest() {
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/.handle_quick_operation"
}

View File

@ -0,0 +1,18 @@
package top.r3944realms.ltdmanager.napcat.requests.personal
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
/**
* PointOcrImage请求
*/
@Serializable
data class PointOcrImageRequest(
val image: String
) : AbstractPersonalRequest() {
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/.ocr_image"
}

View File

@ -0,0 +1,29 @@
package top.r3944realms.ltdmanager.napcat.requests.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
/**
* SetInputStatus请求
*/
@Serializable
data class SetInputStatusRequest(
@SerialName("event_type")
val eventType: EventType,
@SerialName("user_id")
val userId: ID
) : AbstractPersonalRequest() {
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/set_input_status"
@Serializable
enum class EventType(val value: Int) {
@SerialName("0")SPEAKING(0),
@SerialName("1")TYPING(1)
}
}

View File

@ -0,0 +1,21 @@
package top.r3944realms.ltdmanager.napcat.requests.personal
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
/**
* TranslateEn2zh请求
*/
@Serializable
data class TranslateEn2zhRequest(
/**
* 英文数组
*/
val words: List<String>
) : AbstractPersonalRequest() {
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/translate_en2zh"
}

View File

@ -0,0 +1,16 @@
package top.r3944realms.ltdmanager.napcat.requests.system
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
/**
* BotExit请求
*/
@Serializable
class BotExitRequest : AbstractSystemRequest() {
override fun toJSON(): String = Json.encodeToString(this)
override fun path(): String = "/bot_exit"
}

View File

@ -0,0 +1,14 @@
package top.r3944realms.ltdmanager.napcat.requests.system
import kotlinx.serialization.Serializable
/**
* GetRobotUinRange请求
*/
@Serializable
class GetRobotUinRangeRequest : AbstractSystemRequest() {
override fun toJSON(): String = "{}"
override fun path(): String = "/get_robot_uin_range"
}

View File

@ -0,0 +1,14 @@
package top.r3944realms.ltdmanager.napcat.requests.system
import kotlinx.serialization.Serializable
/**
* GetVersionInfo请求
*/
@Serializable
class GetVersionInfoRequest : AbstractSystemRequest() {
override fun toJSON(): String = "{}"
override fun path(): String = "/get_version_info"
}

View File

@ -0,0 +1,14 @@
package top.r3944realms.ltdmanager.napcat.requests.system
import kotlinx.serialization.Serializable
/**
* NcGetPacketStatus请求
*/
@Serializable
class NcGetPacketStatusRequest : AbstractSystemRequest() {
override fun toJSON(): String = "{}"
override fun path(): String = "/nc_get_packet_status"
}

View File

@ -0,0 +1,16 @@
package top.r3944realms.ltdmanager.napcat.requests.system
import kotlinx.serialization.Serializable
import top.r3944realms.ltdmanager.napcat.Developing
/**
* SendPacket请求
*/
@Developing
@Serializable
class SendPacketRequest : AbstractSystemRequest() {
override fun toJSON(): String = "{}"
override fun path(): String = "/send_packet"
}