diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 64c916c..9b06c1b 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -1,5 +1,6 @@ + + + + + + diff --git a/python/events/KtEventGenerator.py b/python/events/KtEventGenerator.py new file mode 100644 index 0000000..fc0a19c --- /dev/null +++ b/python/events/KtEventGenerator.py @@ -0,0 +1,117 @@ +# KtEventGenerator.py +import os + +# Kotlin事件类模板 +kotlin_template_common = """ +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}( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + +) : {super_class}Event(status0, retcode0, message0, wording0, echo0) {{ + + override fun subtype(): String {{ + return "{original_name}" + }} +}} +""" + +def path_to_class_name(api_path): + """将API路径转换为类名""" + # 移除斜杠和前缀下划线 + clean_path = api_path.lstrip('/').lstrip('_').replace('.','point_') + # 分割单词并转换为驼峰命名 + parts = clean_path.split('_') + return ''.join(part.capitalize() for part in parts) + "Event" + +def path_to_original_name(api_path): + """获取原始API名称(不带斜杠)""" + return api_path.lstrip('/') + +def generate_description(class_name): + """生成事件描述""" + return class_name.replace("Event", "") + +def generate_kotlin_class(api_path, path0, super_class, template): + """生成完整的Kotlin类(通过自通过模板)""" + class_name = path_to_class_name(api_path) + original_name = path_to_original_name(api_path) + event_description = generate_description(class_name) + + return template.format( + path=path0, + class_name=class_name, + original_name=original_name, + event_description=event_description, + super_class=super_class + ) + +def find_project_root(start_path=None, marker='.projectroot'): + """向上查找直到找到标记文件""" + if start_path is None: + start_path = os.path.abspath(__file__) + + current = os.path.dirname(start_path) + while True: + if marker in os.listdir(current): + return current + parent = os.path.dirname(current) + if parent == current: # 到达根目录 + raise FileNotFoundError(f"Project root marker '{marker}' not found") + current = parent + + +def generateEventKt(path0, superclass0, apipaths, template = kotlin_template_common): + """ + 生成事件类文件 + :param path0: 包路径,如"account"或"message" + :param superclass0: 父类名,如"AbstractAccount"或"AbstractMessage" + :param apipaths: API路径列表 + :param template: 自提供模板(不提供则使用默认) + """ + # 创建输出目录 + root_path = find_project_root() + + path_ = path0.replace(".", "/") + output_dir = os.path.join( + root_path, + "src/main/kotlin/top/r3944realms/ltdmanager/napcat/events", + path_, + "wip" + ) + os.makedirs(output_dir, exist_ok=True) + + # 为每个API路径生成Kotlin文件 + for api_path in apipaths: + kotlin_code = generate_kotlin_class(api_path, path0, superclass0, template) + class_name = path_to_class_name(api_path) + filename = os.path.join(output_dir, f"{class_name}.kt") + + with open(filename, "w", encoding="utf-8") as f: + f.write(kotlin_code) + + print(f"Generated: {filename}") + + print(f"\nSuccessfully generated {len(apipaths)} Kotlin event classes in '{output_dir}' directory") + +# 确保方法可以被导入 +__all__ = ['generateEventKt'] \ No newline at end of file diff --git a/python/events/__pycache__/KtEventGenerator.cpython-311.pyc b/python/events/__pycache__/KtEventGenerator.cpython-311.pyc new file mode 100644 index 0000000..810a719 Binary files /dev/null and b/python/events/__pycache__/KtEventGenerator.cpython-311.pyc differ diff --git a/python/events/account/KtGenerator.py b/python/events/account/KtGenerator.py deleted file mode 100644 index 0cca50f..0000000 --- a/python/events/account/KtGenerator.py +++ /dev/null @@ -1,111 +0,0 @@ -import os - -# 原始API路径列表 -api_paths = [ - "/set_qq_avatar", - "/send_like", - "/mark_private_msg_as_read", - "/mark_group_msg_as_read", - "/create_collection", - "/set_friend_add_request", - "/set_self_longnick", - "/get_login_info", - "/get_recent_contact", - "/get_stranger_info", - "/get_friend_list", - "/_mark_all_as_read", - "/get_profile_like", - "/fetch_custom_face", - "/delete_friend", - "/_get_model_show", - "/_set_model_show", - "/nc_get_user_status", - "/get_status", - "/get_mini_app_ark", - "/get_unidirectional_friend_list", - "/set_diy_online_status", - "/set_friend_remark" -] - -# Kotlin事件类模板 -kotlin_template = """ -package top.r3944realms.ltdmanager.napcat.events.account - -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable -import kotlinx.serialization.Transient - -/** - * {event_description}事件 - * @property data 响应数据 - */ -@Serializable -data class {class_name}( - @Transient - val status0: Status = Status.Ok, - @Transient - val retcode0: Double = 0.0, - @Transient - val message0: String = "", - @Transient - val wording0: String = "", - @Transient - val echo0: String? = null, - - -) : AbstractAccountEvent(status0, retcode0, message0, wording0, echo0) {{ - - override fun subtype(): String {{ - return "{original_name}" - }} -}} -""" - -def path_to_class_name(api_path): - """将API路径转换为类名""" - # 移除斜杠和前缀下划线 - clean_path = api_path.lstrip('/').lstrip('_') - # 分割单词并转换为驼峰命名 - parts = clean_path.split('_') - return ''.join(part.capitalize() for part in parts) + "Event" - -def path_to_original_name(api_path): - """获取原始API名称(不带斜杠)""" - return api_path.lstrip('/') - -def generate_description(class_name): - """生成事件描述""" - return class_name.replace("Event", "") - -def generate_kotlin_class(api_path): - """生成完整的Kotlin类""" - class_name = path_to_class_name(api_path) - original_name = path_to_original_name(api_path) - event_description = generate_description(class_name) - - return kotlin_template.format( - class_name=class_name, - original_name=original_name, - event_description=event_description - ) - -def main(): - # 创建输出目录 - output_dir = "../../../src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/wip" - os.makedirs(output_dir, exist_ok=True) - - # 为每个API路径生成Kotlin文件 - for api_path in api_paths: - kotlin_code = generate_kotlin_class(api_path) - class_name = path_to_class_name(api_path) - filename = f"{output_dir}/{class_name}.kt" - - with open(filename, "w", encoding="utf-8") as f: - f.write(kotlin_code) - - print(f"Generated: {filename}") - - print(f"\nSuccessfully generated {len(api_paths)} Kotlin event classes in '{output_dir}' directory") - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/python/events/account/ktg.py b/python/events/account/ktg.py new file mode 100644 index 0000000..9f8c76c --- /dev/null +++ b/python/events/account/ktg.py @@ -0,0 +1,53 @@ +# ktg.py +import sys +sys.path.append("..") # 添加父目录到模块搜索路径 +import KtEventGenerator as kg +def main(): + api_paths = [ + # 账号信息管理 + "/set_qq_profile", # 设置账号信息 + "/set_qq_avatar", # 设置头像 + "/set_self_longnick", # 设置个性签名 + "/get_login_info", # 获取登录号信息 + "/get_stranger_info", # 获取账号信息(陌生人) + "/get_online_clients", # 获取在线客户端列表 + "/send_like", # 点赞 + "/get_profile_like", # 获取点赞列表 + "/create_collection", # 创建收藏 + "/fetch_custom_face", # 获取收藏表情 + "/get_recent_contact", # 获取最近消息列表 + + # 在线状态管理 + "/set_online_status", # 设置在线状态(10=在线,60=Q我) + "/set_diy_online_status", # 设置自定义在线状态 + "/get_status", # 获取状态(基础) + "/nc_get_user_status", # 获取用户状态(扩展) + "/_get_model_show", # 获取在线机型 + "/_set_model_show", # 设置在线机型 + + # 好友关系管理 + "/get_friend_list", # 获取好友列表 + "/get_unidirectional_friend_list", # 获取单向好友列表 + "/get_friends_with_category", # 获取好友分组列表 + "/set_friend_remark", # 设置好友备注 + "/delete_friend", # 删除好友 + "/set_friend_add_request", # 处理好友请求 + "/get_doubt_friends_add_request", # 获取被过滤好友请求 + "/set_doubt_friends_add_request", # 处理被过滤请求(调用即同意!) + + # 私聊消息状态 + "/mark_private_msg_as_read", # 设置私聊已读 + + # 消息状态控制 + "/mark_msg_as_read", # 设置消息已读(通用) + "/mark_group_msg_as_read", # 设置群聊已读 + "/_mark_all_as_read", # 设置所有消息已读 + + # 卡片与分享功能 + "/ArkSharePeer", # 获取推荐好友/群聊卡片 + "/ArkShareGroup", # 获取推荐群聊卡片 + "/get_mini_app_ark", # 获取小程序卡片 + ] + kg.generateEventKt("account", "AbstractAccount", api_paths) +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/python/events/file/ktg.py b/python/events/file/ktg.py new file mode 100644 index 0000000..8d6db39 --- /dev/null +++ b/python/events/file/ktg.py @@ -0,0 +1,28 @@ +# ktg.py +import sys +sys.path.append("..") # 添加父目录到模块搜索路径 +import KtEventGenerator as kg +def main(): + group_apis = [ + "/move_group_file", # 移动群文件 + "/trans_group_file", # 转存为永久文件 + "/rename_group_file", # 重命名群文件 + "/upload_group_file", # 上传群文件 + "/create_group_file_folder", # 创建群文件文件夹 + "/delete_group_file", # 删除群文件 + "/delete_group_folder", # 删除群文件夹 + "/get_group_file_system_info", # 获取群文件系统信息 + "/get_group_root_files", # 获取群根目录文件列表 + "/get_group_files_by_folder", # 获取群子目录文件列表 + "/get_group_file_url", # 获取群文件链接 + + "/upload_private_file", # 上传私聊文件 + "/get_private_file_url", # 获取私聊文件链接 + + "/get_file", # 获取文件信息(通用) + "/download_file", # 下载文件到缓存目录 + "/clean_cache" # 清空缓存 + ] + kg.generateEventKt("file", "AbstractFile", group_apis) +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/python/events/group/KtGenerator.py b/python/events/group/KtGenerator.py deleted file mode 100644 index afb785a..0000000 --- a/python/events/group/KtGenerator.py +++ /dev/null @@ -1,111 +0,0 @@ -import os - -# 原始API路径列表 -api_paths = [ - "/set_qq_avatar", - "/send_like", - "/mark_private_msg_as_read", - "/mark_group_msg_as_read", - "/create_collection", - "/set_friend_add_request", - "/set_self_longnick", - "/get_login_info", - "/get_recent_contact", - "/get_stranger_info", - "/get_friend_list", - "/_mark_all_as_read", - "/get_profile_like", - "/fetch_custom_face", - "/delete_friend", - "/_get_model_show", - "/_set_model_show", - "/nc_get_user_status", - "/get_status", - "/get_mini_app_ark", - "/get_unidirectional_friend_list", - "/set_diy_online_status", - "/set_friend_remark" -] - -# Kotlin事件类模板 -kotlin_template = """ -package top.r3944realms.ltdmanager.napcat.events.group - -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable -import kotlinx.serialization.Transient - -/** - * {event_description}事件 - * @property data 响应数据 - */ -@Serializable -data class {class_name}( - @Transient - val status0: Status = Status.Ok, - @Transient - val retcode0: Double = 0.0, - @Transient - val message0: String = "", - @Transient - val wording0: String = "", - @Transient - val echo0: String? = null, - - -) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) {{ - - override fun subtype(): String {{ - return "{original_name}" - }} -}} -""" - -def path_to_class_name(api_path): - """将API路径转换为类名""" - # 移除斜杠和前缀下划线 - clean_path = api_path.lstrip('/').lstrip('_') - # 分割单词并转换为驼峰命名 - parts = clean_path.split('_') - return ''.join(part.capitalize() for part in parts) + "Event" - -def path_to_original_name(api_path): - """获取原始API名称(不带斜杠)""" - return api_path.lstrip('/') - -def generate_description(class_name): - """生成事件描述""" - return class_name.replace("Event", "") - -def generate_kotlin_class(api_path): - """生成完整的Kotlin类""" - class_name = path_to_class_name(api_path) - original_name = path_to_original_name(api_path) - event_description = generate_description(class_name) - - return kotlin_template.format( - class_name=class_name, - original_name=original_name, - event_description=event_description - ) - -def main(): - # 创建输出目录 - output_dir = "../../../src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/wip" - os.makedirs(output_dir, exist_ok=True) - - # 为每个API路径生成Kotlin文件 - for api_path in api_paths: - kotlin_code = generate_kotlin_class(api_path) - class_name = path_to_class_name(api_path) - filename = f"{output_dir}/{class_name}.kt" - - with open(filename, "w", encoding="utf-8") as f: - f.write(kotlin_code) - - print(f"Generated: {filename}") - - print(f"\nSuccessfully generated {len(api_paths)} Kotlin event classes in '{output_dir}' directory") - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/python/events/group/ktg.py b/python/events/group/ktg.py new file mode 100644 index 0000000..71460e3 --- /dev/null +++ b/python/events/group/ktg.py @@ -0,0 +1,44 @@ +# ktg.py +import sys +sys.path.append("..") # 添加父目录到模块搜索路径 +import KtEventGenerator as kg +def main(): + group_apis = [ + "/set_group_search", + "/get_group_detail_info", + "/set_group_add_option", + "/set_group_robot_add_option", + "/set_group_kick_members", + "/set_group_remark", + "/set_group_kick", + "/get_group_system_msg", + "/set_group_ban", + "/get_essence_msg_list", + "/set_group_whole_ban", + "/set_group_portrait", + "/set_group_admin", + "/set_group_card", + "/set_essence_msg", + "/set_group_name", + "/delete_essence_msg", + "/set_group_leave", + "/_send_group_notice", + "/set_group_special_title", + "/_get_group_notice", + "/set_group_add_request", + "/get_group_info", + "/get_group_list", + "/_del_group_notice", + "/get_group_member_info", + "/get_group_member_list", + "/get_group_honor_info", + "/get_group_info_ex", + "/get_group_at_all_remain", + "/get_group_shut_list", + "/get_group_ignored_notifies", + "/set_group_sign", + "/send_group_sign" + ] + kg.generateEventKt("group", "AbstractGroup", group_apis) +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/python/events/message/KtGenerator.py b/python/events/message/KtGenerator.py deleted file mode 100644 index 0cca50f..0000000 --- a/python/events/message/KtGenerator.py +++ /dev/null @@ -1,111 +0,0 @@ -import os - -# 原始API路径列表 -api_paths = [ - "/set_qq_avatar", - "/send_like", - "/mark_private_msg_as_read", - "/mark_group_msg_as_read", - "/create_collection", - "/set_friend_add_request", - "/set_self_longnick", - "/get_login_info", - "/get_recent_contact", - "/get_stranger_info", - "/get_friend_list", - "/_mark_all_as_read", - "/get_profile_like", - "/fetch_custom_face", - "/delete_friend", - "/_get_model_show", - "/_set_model_show", - "/nc_get_user_status", - "/get_status", - "/get_mini_app_ark", - "/get_unidirectional_friend_list", - "/set_diy_online_status", - "/set_friend_remark" -] - -# Kotlin事件类模板 -kotlin_template = """ -package top.r3944realms.ltdmanager.napcat.events.account - -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable -import kotlinx.serialization.Transient - -/** - * {event_description}事件 - * @property data 响应数据 - */ -@Serializable -data class {class_name}( - @Transient - val status0: Status = Status.Ok, - @Transient - val retcode0: Double = 0.0, - @Transient - val message0: String = "", - @Transient - val wording0: String = "", - @Transient - val echo0: String? = null, - - -) : AbstractAccountEvent(status0, retcode0, message0, wording0, echo0) {{ - - override fun subtype(): String {{ - return "{original_name}" - }} -}} -""" - -def path_to_class_name(api_path): - """将API路径转换为类名""" - # 移除斜杠和前缀下划线 - clean_path = api_path.lstrip('/').lstrip('_') - # 分割单词并转换为驼峰命名 - parts = clean_path.split('_') - return ''.join(part.capitalize() for part in parts) + "Event" - -def path_to_original_name(api_path): - """获取原始API名称(不带斜杠)""" - return api_path.lstrip('/') - -def generate_description(class_name): - """生成事件描述""" - return class_name.replace("Event", "") - -def generate_kotlin_class(api_path): - """生成完整的Kotlin类""" - class_name = path_to_class_name(api_path) - original_name = path_to_original_name(api_path) - event_description = generate_description(class_name) - - return kotlin_template.format( - class_name=class_name, - original_name=original_name, - event_description=event_description - ) - -def main(): - # 创建输出目录 - output_dir = "../../../src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/wip" - os.makedirs(output_dir, exist_ok=True) - - # 为每个API路径生成Kotlin文件 - for api_path in api_paths: - kotlin_code = generate_kotlin_class(api_path) - class_name = path_to_class_name(api_path) - filename = f"{output_dir}/{class_name}.kt" - - with open(filename, "w", encoding="utf-8") as f: - f.write(kotlin_code) - - print(f"Generated: {filename}") - - print(f"\nSuccessfully generated {len(api_paths)} Kotlin event classes in '{output_dir}' directory") - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/python/events/message/group/KtGenerator.py b/python/events/message/group/KtGenerator.py deleted file mode 100644 index 0cca50f..0000000 --- a/python/events/message/group/KtGenerator.py +++ /dev/null @@ -1,111 +0,0 @@ -import os - -# 原始API路径列表 -api_paths = [ - "/set_qq_avatar", - "/send_like", - "/mark_private_msg_as_read", - "/mark_group_msg_as_read", - "/create_collection", - "/set_friend_add_request", - "/set_self_longnick", - "/get_login_info", - "/get_recent_contact", - "/get_stranger_info", - "/get_friend_list", - "/_mark_all_as_read", - "/get_profile_like", - "/fetch_custom_face", - "/delete_friend", - "/_get_model_show", - "/_set_model_show", - "/nc_get_user_status", - "/get_status", - "/get_mini_app_ark", - "/get_unidirectional_friend_list", - "/set_diy_online_status", - "/set_friend_remark" -] - -# Kotlin事件类模板 -kotlin_template = """ -package top.r3944realms.ltdmanager.napcat.events.account - -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable -import kotlinx.serialization.Transient - -/** - * {event_description}事件 - * @property data 响应数据 - */ -@Serializable -data class {class_name}( - @Transient - val status0: Status = Status.Ok, - @Transient - val retcode0: Double = 0.0, - @Transient - val message0: String = "", - @Transient - val wording0: String = "", - @Transient - val echo0: String? = null, - - -) : AbstractAccountEvent(status0, retcode0, message0, wording0, echo0) {{ - - override fun subtype(): String {{ - return "{original_name}" - }} -}} -""" - -def path_to_class_name(api_path): - """将API路径转换为类名""" - # 移除斜杠和前缀下划线 - clean_path = api_path.lstrip('/').lstrip('_') - # 分割单词并转换为驼峰命名 - parts = clean_path.split('_') - return ''.join(part.capitalize() for part in parts) + "Event" - -def path_to_original_name(api_path): - """获取原始API名称(不带斜杠)""" - return api_path.lstrip('/') - -def generate_description(class_name): - """生成事件描述""" - return class_name.replace("Event", "") - -def generate_kotlin_class(api_path): - """生成完整的Kotlin类""" - class_name = path_to_class_name(api_path) - original_name = path_to_original_name(api_path) - event_description = generate_description(class_name) - - return kotlin_template.format( - class_name=class_name, - original_name=original_name, - event_description=event_description - ) - -def main(): - # 创建输出目录 - output_dir = "../../../src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/wip" - os.makedirs(output_dir, exist_ok=True) - - # 为每个API路径生成Kotlin文件 - for api_path in api_paths: - kotlin_code = generate_kotlin_class(api_path) - class_name = path_to_class_name(api_path) - filename = f"{output_dir}/{class_name}.kt" - - with open(filename, "w", encoding="utf-8") as f: - f.write(kotlin_code) - - print(f"Generated: {filename}") - - print(f"\nSuccessfully generated {len(api_paths)} Kotlin event classes in '{output_dir}' directory") - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/python/events/message/group/ktg.py b/python/events/message/group/ktg.py new file mode 100644 index 0000000..ef83550 --- /dev/null +++ b/python/events/message/group/ktg.py @@ -0,0 +1,14 @@ +# ktg.py +import sys +sys.path.append("../..") # 添加父目录到模块搜索路径 +import KtEventGenerator as kg +def main(): + api_paths = [ + "/send_group_msg", # 发送群消息(文本、图片、表情、JSON、语音、视频、回复、音乐卡片等) + "/send_group_forward_msg", # 发送群合并转发消息 + "/forward_group_single_msg", # 转发单条消息到群 + "/group_poke" # 发送群聊戳一戳 + ] + kg.generateEventKt("message.group", "AbstractGroup", api_paths) +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/python/events/message/ktg.py b/python/events/message/ktg.py new file mode 100644 index 0000000..ee9c88a --- /dev/null +++ b/python/events/message/ktg.py @@ -0,0 +1,22 @@ +# ktg.py +import sys +sys.path.append("..") # 添加父目录到模块搜索路径 +import KtEventGenerator as kg +def main(): + api_paths = [ + "/send_poke", # 发送戳一戳(通用版,可能同时适用于群和私聊) + "/delete_msg", # 撤回消息 + "/get_group_msg_history", # 获取群历史消息 + "/get_friend_msg_history", # 获取好友历史消息 + "/get_msg", # 获取消息详情 + "/get_forward_msg", # 获取合并转发消息 + "/send_forward_msg", # 发送合并转发消息(通用版) + "/set_msg_emoji_like", # 贴表情(点赞表情) + "/fetch_emoji_like", # 获取贴表情详情 + "/get_record", # 获取语音消息详情 + "/get_image", # 获取图片消息详情 + "/send_group_ai_record" # 发送群AI语音 + ] + kg.generateEventKt("message", "AbstractGroup", api_paths) +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/python/events/message/personal/KtGenerator.py b/python/events/message/personal/KtGenerator.py deleted file mode 100644 index 0cca50f..0000000 --- a/python/events/message/personal/KtGenerator.py +++ /dev/null @@ -1,111 +0,0 @@ -import os - -# 原始API路径列表 -api_paths = [ - "/set_qq_avatar", - "/send_like", - "/mark_private_msg_as_read", - "/mark_group_msg_as_read", - "/create_collection", - "/set_friend_add_request", - "/set_self_longnick", - "/get_login_info", - "/get_recent_contact", - "/get_stranger_info", - "/get_friend_list", - "/_mark_all_as_read", - "/get_profile_like", - "/fetch_custom_face", - "/delete_friend", - "/_get_model_show", - "/_set_model_show", - "/nc_get_user_status", - "/get_status", - "/get_mini_app_ark", - "/get_unidirectional_friend_list", - "/set_diy_online_status", - "/set_friend_remark" -] - -# Kotlin事件类模板 -kotlin_template = """ -package top.r3944realms.ltdmanager.napcat.events.account - -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable -import kotlinx.serialization.Transient - -/** - * {event_description}事件 - * @property data 响应数据 - */ -@Serializable -data class {class_name}( - @Transient - val status0: Status = Status.Ok, - @Transient - val retcode0: Double = 0.0, - @Transient - val message0: String = "", - @Transient - val wording0: String = "", - @Transient - val echo0: String? = null, - - -) : AbstractAccountEvent(status0, retcode0, message0, wording0, echo0) {{ - - override fun subtype(): String {{ - return "{original_name}" - }} -}} -""" - -def path_to_class_name(api_path): - """将API路径转换为类名""" - # 移除斜杠和前缀下划线 - clean_path = api_path.lstrip('/').lstrip('_') - # 分割单词并转换为驼峰命名 - parts = clean_path.split('_') - return ''.join(part.capitalize() for part in parts) + "Event" - -def path_to_original_name(api_path): - """获取原始API名称(不带斜杠)""" - return api_path.lstrip('/') - -def generate_description(class_name): - """生成事件描述""" - return class_name.replace("Event", "") - -def generate_kotlin_class(api_path): - """生成完整的Kotlin类""" - class_name = path_to_class_name(api_path) - original_name = path_to_original_name(api_path) - event_description = generate_description(class_name) - - return kotlin_template.format( - class_name=class_name, - original_name=original_name, - event_description=event_description - ) - -def main(): - # 创建输出目录 - output_dir = "../../../src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/wip" - os.makedirs(output_dir, exist_ok=True) - - # 为每个API路径生成Kotlin文件 - for api_path in api_paths: - kotlin_code = generate_kotlin_class(api_path) - class_name = path_to_class_name(api_path) - filename = f"{output_dir}/{class_name}.kt" - - with open(filename, "w", encoding="utf-8") as f: - f.write(kotlin_code) - - print(f"Generated: {filename}") - - print(f"\nSuccessfully generated {len(api_paths)} Kotlin event classes in '{output_dir}' directory") - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/python/events/message/personal/ktg.py b/python/events/message/personal/ktg.py new file mode 100644 index 0000000..2a4bf82 --- /dev/null +++ b/python/events/message/personal/ktg.py @@ -0,0 +1,14 @@ +# ktg.py +import sys +sys.path.append("../..") # 添加父目录到模块搜索路径 +import KtEventGenerator as kg +def main(): + api_paths = [ + "/send_private_msg", # 发送私聊消息(文本、图片、表情、JSON、语音、视频、回复、音乐卡片等) + "/send_private_forward_msg", # 发送私聊合并转发消息 + "/forward_friend_single_msg", # 转发单条消息到私聊 + "/friend_poke" # 发送私聊戳一戳 + ] + kg.generateEventKt("message.personal", "AbstractGroup", api_paths) +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/python/events/other/ktg.py b/python/events/other/ktg.py new file mode 100644 index 0000000..4c1a9a7 --- /dev/null +++ b/python/events/other/ktg.py @@ -0,0 +1,24 @@ +# ktg.py +import sys +sys.path.append("..") # 添加父目录到模块搜索路径 +import KtEventGenerator as kg +def main(): + api_paths = [ + # 保留 + "/send_private_msg", # send_private_msg + "/send_group_msg", # send_group_msg + "/send_msg", # send_msg + + # 接口 + "/unknown", # unknown + "/get_guild_list", # get_guild_list + "/get_guild_service_profile", # get_guild_service_profile + "/check_url_safely", # 检查链接安全性 + + #bug + "/get_collection_list", # 获取收藏列表 + "/get_group_ignore_add_request" # 获取被过滤的加群请求 + ] + kg.generateEventKt("other", "AbstractOther", api_paths) +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/python/events/passkey/ktg.py b/python/events/passkey/ktg.py new file mode 100644 index 0000000..4dee645 --- /dev/null +++ b/python/events/passkey/ktg.py @@ -0,0 +1,17 @@ +# ktg.py +import sys +sys.path.append("..") # 添加父目录到模块搜索路径 +import KtEventGenerator as kg +def main(): + api_paths = [ + "/get_clientkey", # 获取 clientkey + "/get_cookies", # 获取 cookies + "/get_csrf_token", # 获取 CSRF Token + "/get_credentials", # 获取 QQ 相关接口凭证 + "/get_rkey", # 获取 rkey(通用) + "/nc_get_rkey", # nc获取rkey(可能是特殊渠道) + "/get_rkey_server" # 获取rkey服务(可能是服务端专用) + ] + kg.generateEventKt("passkey", "AbstractPasskey", api_paths) +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/python/events/personal/ktg.py b/python/events/personal/ktg.py new file mode 100644 index 0000000..7970e90 --- /dev/null +++ b/python/events/personal/ktg.py @@ -0,0 +1,20 @@ +# ktg.py +import sys +sys.path.append("..") # 添加父目录到模块搜索路径 +import KtEventGenerator as kg +def main(): + api_paths = [ + "/ocr_image", # OCR 图片识别 + "/.ocr_image", # .OCR 图片识别 + "/translate_en2zh", # 获取 CSRF Token + "/.handle_quick_operation", # .对事件执行快速操作 + "/can_send_image", # 检查是否可以发送图片 + "/can_send_record", # 检查是否可以发送语音 + "/get_ai_characters", # 获取AI语音人物 + "/click_inline_keyboard_button", # 点击按钮 + "/get_ai_record" # 获取AI语音 + "/set_input_status" # 设置输入状态 + ] + kg.generateEventKt("personal", "AbstractPersonal", api_paths) +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/python/events/pycode.sh b/python/events/pycode.sh new file mode 100644 index 0000000..95e0b84 --- /dev/null +++ b/python/events/pycode.sh @@ -0,0 +1,18 @@ +cd account +python ktg.py +cd ../file +python ktg.py +cd ../group +python ktg.py +cd ../message/personal +python ktg.py +cd ../group +python ktg.py +cd ../../personal +python ktg.py +cd ../passkey +python ktg.py +cd ../other +python ktg.py +cd ../system +python ktg.py \ No newline at end of file diff --git a/python/events/system/ktg.py b/python/events/system/ktg.py new file mode 100644 index 0000000..8166ce4 --- /dev/null +++ b/python/events/system/ktg.py @@ -0,0 +1,42 @@ +# ktg.py +import sys +sys.path.append("..") # 添加父目录到模块搜索路径 +import KtEventGenerator as kg +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 = [ + # 账号控制 + "/get_robot_uin_range", # 获取机器人可操作的账号范围(多账号托管时使用) + "/bot_exit", # 强制退出当前机器人账号(主动下线) + + # 协议级操作 + "/send_packet", # 发送原始协议数据包(需熟悉QQ协议格式) + "/nc_get_packet_status", # 查询自定义数据包的状态(如发送结果、回包状态) + + # 系统信息 + "/get_version_info" # 获取机器人框架/客户端的版本信息 + ] + kg.generateEventKt("system", "AbstractSystem", api_paths, kotlin_template_system) +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/main.kt b/src/main/kotlin/top/r3944realms/ltdmanager/main.kt index b3f4334..d33db5e 100644 --- a/src/main/kotlin/top/r3944realms/ltdmanager/main.kt +++ b/src/main/kotlin/top/r3944realms/ltdmanager/main.kt @@ -1,61 +1,29 @@ package top.r3944realms.ltdmanager import org.slf4j.LoggerFactory -import top.r3944realms.ltdmanager.napcat.data.Sex import top.r3944realms.ltdmanager.napcat.events.NapCatEvent -import top.r3944realms.ltdmanager.napcat.events.account.SetQQProfileEvent -import top.r3944realms.ltdmanager.napcat.requests.account.SetQQProfileRequest +import top.r3944realms.ltdmanager.napcat.events.group.SetGroupPortraitEvent +import top.r3944realms.ltdmanager.napcat.events.group.SetGroupSearchEvent +import top.r3944realms.ltdmanager.napcat.events.personal.CanSendImageEvent +import top.r3944realms.ltdmanager.napcat.requests.account.SetOnlineStatusRequest fun main() { val logger = LoggerFactory.getLogger("log") logger.info("Start") - - // 创建请求 - val request = SetQQProfileRequest( - nickname = "123", - personalNote = "232", - sex = Sex.FEMALE - ) - - // 序列化(会自动添加type字段) - val jsonStr = request.toJSON() - logger.info("Serialized: {}", jsonStr) - // 输出示例: {"type":"account/setQQProfile","nickname":"123","personal_note":"232","sex":"2"} - val decodeJson = - """ + val toJSON = SetOnlineStatusRequest.ONLINE.toJSON() + logger.info("S:{}",toJSON) + val str: String = """ { "status": "ok", "retcode": 0, - "data": { - "result": 0, - "errMsg": "string" - }, + "data": null, "message": "string", "wording": "string", "echo": "string" } - """.trimIndent(); - try { - when (val decoded = NapCatEvent.decodeEvent(decodeJson, request.type())) { - is SetQQProfileEvent -> { - println(""" - 反序列化成功: - { - "status": ${decoded.status}, - "retcode": ${decoded.retcode}, - "data": { - "result": ${decoded.data.result}, - "errMsg": ${decoded.data.errorMsg} - }, - "message": ${decoded.message}, - "wording": ${decoded.wording}, - "echo": ${decoded.echo} - } - """.trimIndent()) - } - else -> println("未知请求类型") - } - } catch (e: Exception) { - println("反序列化失败: ${e.message}") + """.trimIndent() + val decodeEvent = NapCatEvent.decodeEvent(str, "group/set_group_search") + if (decodeEvent is SetGroupSearchEvent) { + logger.info("data:{}",decodeEvent.data) } } \ No newline at end of file diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/Author.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/Author.kt index a6f9b4b..b15c805 100644 --- a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/Author.kt +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/Author.kt @@ -1,4 +1,21 @@ package top.r3944realms.ltdmanager.napcat.data -class Author { -} \ No newline at end of file +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class Author ( + @SerialName("groupId") + val groupID: String, + + val groupName: String, + + @SerialName("numId") + val numID: String, + + @SerialName("strId") + val strID: String, + + val type: Double, + val uid: String +) \ No newline at end of file diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/CharBoxElement.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/CharBoxElement.kt index f9f72a3..b3cdab6 100644 --- a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/CharBoxElement.kt +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/CharBoxElement.kt @@ -1,4 +1,40 @@ package top.r3944realms.ltdmanager.napcat.data -class CharBoxElement { +import kotlinx.serialization.Serializable + +@Serializable +data class CharBoxElement ( + val charBox: CharBoxCharBox, + val charText: String +) { + @Serializable + data class CharBoxCharBox ( + /** + * 顶点坐标 + */ + val pt1: CharBoxPt, + + /** + * 顶点坐标 + */ + val pt2: CharBoxPt, + + /** + * 顶点坐标 + */ + val pt3: CharBoxPt, + + /** + * 顶点坐标 + */ + val pt4: CharBoxPt + ) + /** + * 顶点坐标 + */ + @Serializable + data class CharBoxPt ( + val x: String, + val y: String + ) } \ No newline at end of file diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/Character.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/Character.kt index f1b9426..c268dbe 100644 --- a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/Character.kt +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/Character.kt @@ -1,4 +1,25 @@ package top.r3944realms.ltdmanager.napcat.data -class Character { -} \ No newline at end of file +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class Character ( + /** + * 人物ID + */ + @SerialName("character_id") + val characterID: String, + + /** + * 人物名字 + */ + @SerialName("character_name") + val characterName: String, + + /** + * 试听网址 + */ + @SerialName("preview_url") + val previewURL: String +) \ No newline at end of file diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/CollectionItemList.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/CollectionItemList.kt index d1552c5..14030cb 100644 --- a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/CollectionItemList.kt +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/CollectionItemList.kt @@ -1,4 +1,28 @@ package top.r3944realms.ltdmanager.napcat.data -class CollectionItemList { -} \ No newline at end of file +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class CollectionItemList ( + val author: Author, + val bid: Double, + val category: Double, + val cid: String, + val collectTime: String, + val createTime: String, + + @SerialName("customGroupId") + val customGroupID: Double, + + val modifyTime: String, + val securityBeat: Boolean, + val sequence: String, + + @SerialName("shareUrl") + val shareURL: String, + + val status: Double, + val summary: Summary, + val type: Double +) \ No newline at end of file diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/CollectionSearchList.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/CollectionSearchList.kt index ffa5a94..ac298dd 100644 --- a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/CollectionSearchList.kt +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/CollectionSearchList.kt @@ -1,4 +1,10 @@ package top.r3944realms.ltdmanager.napcat.data -class CollectionSearchList { -} \ No newline at end of file +import kotlinx.serialization.Serializable + +@Serializable +data class CollectionSearchList ( + val bottomTimeStamp: String, + val collectionItemList: List, + val hasMore: Boolean +) \ No newline at end of file diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/EmojiLikesList.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/EmojiLikesList.kt new file mode 100644 index 0000000..4880352 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/EmojiLikesList.kt @@ -0,0 +1,15 @@ +package top.r3944realms.ltdmanager.napcat.data + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class EmojiLikesList ( + @SerialName("headUrl") + val headURL: String, + + val nickName: String, + + @SerialName("tinyId") + val tinyID: String +) \ No newline at end of file diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/FriendInfo.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/FriendInfo.kt index ce7f797..a85c3dd 100644 --- a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/FriendInfo.kt +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/FriendInfo.kt @@ -1,4 +1,29 @@ package top.r3944realms.ltdmanager.napcat.data -class FriendeInfo { -} \ No newline at end of file +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +/** + * 好友信息 + */ +@Serializable +data class FriendInfo( + @SerialName("birthday_year") + val birthdayYear: Int, + @SerialName("birthday_month") + val birthdayMonth: Int, + @SerialName("birthday_day") + val birthdayDay: Int, + @SerialName("user_id") + val userId: Long, + val age: Int, + @SerialName("phone_number") + val phoneNum: String, + val email: String, + @SerialName("category_id") + val categoryId: Int, + val nickname: String, + val remark: String, + val sex: String, + val level: Int +) \ No newline at end of file diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/ID.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/ID.kt index 5bc2198..2a50dec 100644 --- a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/ID.kt +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/ID.kt @@ -2,6 +2,9 @@ package top.r3944realms.ltdmanager.napcat.data import kotlinx.serialization.Serializable +/** + * ID + */ @Serializable sealed class ID { class DoubleValue(val value: Double) : ID() diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/MessageType.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/MessageType.kt new file mode 100644 index 0000000..100a42e --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/MessageType.kt @@ -0,0 +1,18 @@ +package top.r3944realms.ltdmanager.napcat.data + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +enum class MessageType(val value: String) { + @SerialName("at") At("at"), + @SerialName("face") Face("face"), + @SerialName("file") File("file"), + @SerialName("forward") Forward("forward"), + @SerialName("image") Image("image"), + @SerialName("json") JSON("json"), + @SerialName("record") Record("record"), + @SerialName("reply") Reply("reply"), + @SerialName("text") Text("text"), + @SerialName("video") Video("video"); +} \ No newline at end of file diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/Qq.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/Qq.kt new file mode 100644 index 0000000..baca230 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/Qq.kt @@ -0,0 +1,9 @@ +package top.r3944realms.ltdmanager.napcat.data + +import kotlinx.serialization.Serializable + +@Serializable +sealed class Qq { + class DoubleValue(val value: Double) : Qq() + class StringValue(val value: String) : Qq() +} \ No newline at end of file diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/Role.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/Role.kt new file mode 100644 index 0000000..82b7ada --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/Role.kt @@ -0,0 +1,11 @@ +package top.r3944realms.ltdmanager.napcat.data + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +enum class Role(val value: String) { + @SerialName("admin") Admin("admin"), + @SerialName("member") Member("member"), + @SerialName("owner") Owner("owner"); +} \ No newline at end of file diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/Sender.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/Sender.kt new file mode 100644 index 0000000..5204587 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/Sender.kt @@ -0,0 +1,19 @@ +package top.r3944realms.ltdmanager.napcat.data + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +/** + * sender + */ +@Serializable +data class Sender ( + val age: Double? = null, + val card: String, + val nickname: String, + val role: Role? = null, + val sex: SexV2? = null, + + @SerialName("user_id") + val userID: Double +) \ No newline at end of file diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/SexV2.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/SexV2.kt new file mode 100644 index 0000000..f473535 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/SexV2.kt @@ -0,0 +1,14 @@ +package top.r3944realms.ltdmanager.napcat.data; + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +/** + * 回应格式不统一导致有了第二版本 + */ +@Serializable +enum class SexV2(val value: String) { + @SerialName("female") FEMALE("female"), + @SerialName("male") MALE("male"), + @SerialName("unknown") UNKNOWN("unknown"); +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/Summary.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/Summary.kt index df0c516..e4e0b51 100644 --- a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/Summary.kt +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/data/Summary.kt @@ -1,4 +1,15 @@ package top.r3944realms.ltdmanager.napcat.data -class Summary { -} \ No newline at end of file +import kotlinx.serialization.Serializable + +@Serializable +data class Summary ( + val audioSummary: String, + val fileSummary: String, + val gallerySummary: String, + val linkSummary: String, + val locationSummary: String, + val richMediaSummary: String, + val textSummary: String, + val videoSummary: String +) diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/AbstractAccountEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/AbstractAccountEvent.kt index 8fe8c6e..c1faa16 100644 --- a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/AbstractAccountEvent.kt +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/AbstractAccountEvent.kt @@ -42,18 +42,43 @@ abstract class AbstractAccountEvent( override fun type(): String { return "account/" + subtype() } - + //TODO 太烦了 也许该考虑反射或代码生成 companion object { val eventTypeMap by lazy { mutableMapOf>().apply { put("account/set_qq_profile", SetQQProfileEvent.serializer()) - put("account/ArkSharePeer", GetArkSharePeerEvent.serializer()) + put("account/ArkSharePeer", ArkSharePeerEvent.serializer()) put("account/get_doubt_friends_add_request", GetDoubtFriendsAddRequestEvent.serializer()) put("account/set_doubt_friends_add_request", SetDoubtFriendsAddRequestEvent.serializer()) put("account/get_online_clients", GetOnlineClientsEvent.serializer()) put("account/mark_msg_as_read", MarkMsgAsReadEvent.serializer()) put("account/set_online_status", SetOnlineStatusEvent.serializer()) put("account/ArkShareGroup", MarkMsgAsReadEvent.serializer()) + put("account/get_friends_with_category",GetFriendsWithCategoryEvent.serializer()) + put("account/create_collection",CreateCollectionEvent.serializer()) + put("account/delete_friend",DeleteFriendEvent.serializer()) + put("account/fetch_custom_face",FetchCustomFaceEvent.serializer()) + put("account/get_friend_list",GetFriendListEvent.serializer()) + put("account/get_login_info",GetLoginInfoEvent.serializer()) + put("account/get_mini_app_ark",GetMiniAppArkEvent.serializer()) + put("account/_get_model_show",GetModelShowEvent.serializer()) + put("account/get_profile_like",GetProfileLikeEvent.serializer()) + put("account/get_recent_contact",GetRecentContactEvent.serializer()) + put("account/get_status",GetStatusEvent.serializer()) + put("account/get_stranger_info",GetStrangerInfoEvent.serializer()) + put("account/get_unidirectional_friend_list",GetUnidirectionalFriendListEvent.serializer()) + put("account/_mark_all_as_read",MarkAllAsReadEvent.serializer()) + put("account/mark_group_msg_as_read",MarkGroupMsgAsReadEvent.serializer()) + put("account/mark_private_msg_as_read",MarkPrivateMsgAsReadEvent.serializer()) + put("account/nc_get_user_status",NcGetUserStatusEvent.serializer()) + put("account/send_like",SendLikeEvent.serializer()) + put("account/set_diy_online_status",SetDiyOnlineStatusEvent.serializer()) + put("account/set_friend_add_request",SetFriendAddRequestEvent.serializer()) + put("account/set_friend_remark",SetFriendRemarkEvent.serializer()) + put("account/_set_model_show",SetModelShowEvent.serializer()) + put("account/set_qq_avatar",SetQqAvatarEvent.serializer()) + put("account/set_self_longnick",SetSelfLongnickEvent.serializer()) + } } internal val json: Json by lazy { @@ -61,12 +86,38 @@ abstract class AbstractAccountEvent( ignoreUnknownKeys = true serializersModule = SerializersModule { polymorphic(NapCatEvent::class) { - subclass(GetArkSharePeerEvent::class) subclass(SetQQProfileEvent::class) + subclass(ArkSharePeerEvent::class) subclass(GetDoubtFriendsAddRequestEvent::class) subclass(SetDoubtFriendsAddRequestEvent::class) subclass(GetOnlineClientsEvent::class) subclass(MarkMsgAsReadEvent::class) + subclass(SetOnlineStatusEvent::class) + subclass(ArkShareGroupEvent::class) + subclass(GetFriendsWithCategoryEvent::class) + subclass(CreateCollectionEvent::class) + subclass(DeleteFriendEvent::class) + subclass(FetchCustomFaceEvent::class) + subclass(GetFriendListEvent::class) + subclass(GetLoginInfoEvent::class) + subclass(GetMiniAppArkEvent::class) + subclass(GetModelShowEvent::class) + subclass(GetProfileLikeEvent::class) + subclass(GetRecentContactEvent::class) + subclass(GetStatusEvent::class) + subclass(GetStrangerInfoEvent::class) + subclass(GetUnidirectionalFriendListEvent::class) + subclass(MarkAllAsReadEvent::class) + subclass(MarkGroupMsgAsReadEvent::class) + subclass(MarkPrivateMsgAsReadEvent::class) + subclass(NcGetUserStatusEvent::class) + subclass(SendLikeEvent::class) + subclass(SetDiyOnlineStatusEvent::class) + subclass(SetFriendAddRequestEvent::class) + subclass(SetFriendRemarkEvent::class) + subclass(SetModelShowEvent::class) + subclass(SetQqAvatarEvent::class) + subclass(SetSelfLongnickEvent::class) } } } diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/ArkSharePeerEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/ArkSharePeerEvent.kt index 5553e37..df02634 100644 --- a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/ArkSharePeerEvent.kt +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/ArkSharePeerEvent.kt @@ -9,7 +9,7 @@ import kotlinx.serialization.Transient * @property data 响应数据 */ @Serializable -data class GetArkSharePeerEvent( +data class ArkSharePeerEvent( @Transient val status0: Status = Status.Ok, @Transient diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/CreateCollectionEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/CreateCollectionEvent.kt new file mode 100644 index 0000000..cb99b69 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/CreateCollectionEvent.kt @@ -0,0 +1,34 @@ + +package top.r3944realms.ltdmanager.napcat.events.account + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +/** + * CreateCollection事件 + * @property data 响应数据 + */ +@Serializable +data class CreateCollectionEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: Data +) : AbstractAccountEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Data( + val result: Double, + val errMsg: String + ) + override fun subtype(): String { + return "create_collection" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/DeleteFriendEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/DeleteFriendEvent.kt new file mode 100644 index 0000000..3611c43 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/DeleteFriendEvent.kt @@ -0,0 +1,34 @@ + +package top.r3944realms.ltdmanager.napcat.events.account + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +/** + * DeleteFriend事件 + * @property data 响应数据 + */ +@Serializable +data class DeleteFriendEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: Data +) : AbstractAccountEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Data( + val result: Double, + val errMsg: String + ) + override fun subtype(): String { + return "delete_friend" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/FetchCustomFaceEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/FetchCustomFaceEvent.kt new file mode 100644 index 0000000..2e4e4ac --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/FetchCustomFaceEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.account + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonArray + +/** + * FetchCustomFace事件 + * @property data 响应数据 + */ +@Serializable +data class FetchCustomFaceEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonArray +) : AbstractAccountEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "fetch_custom_face" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/GetFriendListEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/GetFriendListEvent.kt new file mode 100644 index 0000000..51d2813 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/GetFriendListEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.account + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonArray + +/** + * GetFriendList事件 + * @property data 响应数据 + */ +@Serializable +data class GetFriendListEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonArray +) : AbstractAccountEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "get_friend_list" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/GetFriendsWithCategoryEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/GetFriendsWithCategoryEvent.kt index 3733124..8932fae 100644 --- a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/GetFriendsWithCategoryEvent.kt +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/GetFriendsWithCategoryEvent.kt @@ -5,7 +5,8 @@ import kotlinx.serialization.Serializable import kotlinx.serialization.Transient import top.r3944realms.ltdmanager.napcat.data.FriendInfo -data class GetFriendsWithCategory( +@Serializable +data class GetFriendsWithCategoryEvent( @Transient val status0: Status = Status.Ok, @Transient @@ -19,7 +20,7 @@ data class GetFriendsWithCategory( val data: Datum ) : AbstractAccountEvent(status0, retcode0, message0, wording0, echo0) { - override fun subtype(): String = "/get_friends_with_category" + override fun subtype(): String = "get_friends_with_category" @Serializable data class Datum ( /** diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/GetLoginInfoEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/GetLoginInfoEvent.kt new file mode 100644 index 0000000..ffac2b1 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/GetLoginInfoEvent.kt @@ -0,0 +1,36 @@ + +package top.r3944realms.ltdmanager.napcat.events.account + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +/** + * GetLoginInfo事件 + * @property data 响应数据 + */ +@Serializable +data class GetLoginInfoEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: Data +) : AbstractAccountEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Data( + @SerialName("user_id") + val userId: Double, + val nickname: String + ) + override fun subtype(): String { + return "get_login_info" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/GetMiniAppArkEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/GetMiniAppArkEvent.kt new file mode 100644 index 0000000..e10b9ce --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/GetMiniAppArkEvent.kt @@ -0,0 +1,136 @@ + +package top.r3944realms.ltdmanager.napcat.events.account + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonObject + +/** + * GetMiniAppArk事件 + * @property data 响应数据 + */ +@Serializable +data class GetMiniAppArkEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: Data +) : AbstractAccountEvent(status0, retcode0, message0, wording0, echo0) { + /** + * rawArkData = true + * + * rawArkData = false + */ + @Serializable + data class Data ( + val appName: String? = null, + val appView: String? = null, + val config: Config, + val desc: String? = null, + val metaData: MetaData? = null, + val prompt: String, + val ver: String, + val app: String? = null, + val meta: Meta? = null, + val miniappOpenRefer: String? = null, + val miniappShareOrigin: Double? = null, + val view: String? = null + ) + + @Serializable + data class Config ( + val autoSize: Double, + val ctime: Double, + val forward: Double, + val height: Double, + val token: String, + val type: String, + val width: Double + ) + + @Serializable + data class Meta ( + @SerialName("detail_1") + val detail1: MetaDetail1 + ) + + @Serializable + data class MetaDetail1 ( + val appid: String, + val appType: Double, + val desc: String, + val gamePoints: String, + + @SerialName("gamePointsUrl") + val gamePointsURL: String, + + val host: PurpleHost, + val icon: String, + val preview: String, + val scene: Double, + val shareOrigin: Double, + val shareTemplateData: JsonObject, + + @SerialName("shareTemplateId") + val shareTemplateID: String, + + val showLittleTail: String, + val title: String, + val url: String + ) + + @Serializable + data class PurpleHost ( + val nick: String, + val uin: Double + ) + + @Serializable + data class MetaData ( + @SerialName("detail_1") + val detail1: MetaDataDetail1 + ) + + @Serializable + data class MetaDataDetail1 ( + val appid: String, + val appType: Double, + val desc: String, + val gamePoints: String, + + @SerialName("gamePointsUrl") + val gamePointsURL: String, + + val host: FluffyHost, + val icon: String, + val preview: String, + val scene: Double, + val shareOrigin: Double, + val shareTemplateData: JsonObject, + + @SerialName("shareTemplateId") + val shareTemplateID: String, + + val showLittleTail: String, + val title: String, + val url: String + ) + + @Serializable + data class FluffyHost ( + val nick: String, + val uin: Double + ) + override fun subtype(): String { + return "get_mini_app_ark" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/GetModelShowEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/GetModelShowEvent.kt new file mode 100644 index 0000000..09ab071 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/GetModelShowEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.account + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement + +/** + * GetModelShow事件 + * @property data 响应数据 + */ +@Serializable +data class GetModelShowEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonElement? = null +) : AbstractAccountEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "_get_model_show" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/GetProfileLikeEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/GetProfileLikeEvent.kt new file mode 100644 index 0000000..672d4ce --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/GetProfileLikeEvent.kt @@ -0,0 +1,123 @@ + +package top.r3944realms.ltdmanager.napcat.events.account + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +/** + * GetProfileLike事件 + * @property data 响应数据 + */ +@Serializable +data class GetProfileLikeEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: Data +) : AbstractAccountEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Data ( + /** + * 互赞信息 + */ + val favoriteInfo: FavoriteInfo, + + val time: Double, + val uid: String, + + /** + * 点赞信息 + */ + val voteInfo: VoteInfo + ) + + /** + * 互赞信息 + */ + @Serializable + data class FavoriteInfo ( + /** + * 最后点赞时间(不是时间戳) + */ + @SerialName("last_time") + val lastTime: Double, + + /** + * 上次次数 + */ + @SerialName("today_count") + val todayCount: Double, + + /** + * 总次数 + */ + @SerialName("total_count") + val totalCount: Double, + + val userInfos: List + ) + + /** + * 点赞信息 + */ + @Serializable + data class LikeInfo ( + val age: Double, + val bAvailableCnt: Double, + val bTodayVotedCnt: Double, + val count: Double, + + @SerialName("customId") + val customID: Double, + + val gender: Double, + val giftCount: Double, + val isFriend: Boolean, + val isSvip: Boolean, + val isvip: Boolean, + val lastCharged: Double, + val latestTime: Double, + val nick: String, + val src: Double, + val uid: String, + val uin: Double + ) + + /** + * 点赞信息 + */ + @Serializable + data class VoteInfo ( + @SerialName("last_visit_time") + val lastVisitTime: Double, + + /** + * 点赞次数 + */ + @SerialName("new_count") + val newCount: Double, + + @SerialName("new_nearby_count") + val newNearbyCount: Double, + + /** + * 总次数 + */ + @SerialName("total_count") + val totalCount: Double, + + val userInfos: List + ) + override fun subtype(): String { + return "get_profile_like" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/GetRecentContactEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/GetRecentContactEvent.kt new file mode 100644 index 0000000..33a49ff --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/GetRecentContactEvent.kt @@ -0,0 +1,212 @@ + +package top.r3944realms.ltdmanager.napcat.events.account + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import top.r3944realms.ltdmanager.napcat.data.MessageType +import top.r3944realms.ltdmanager.napcat.data.Qq +import top.r3944realms.ltdmanager.napcat.data.Sender + +/** + * GetRecentContact事件 + * @property data 响应数据 + */ +@Serializable +data class GetRecentContactEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: List +) : AbstractAccountEvent(status0, retcode0, message0, wording0, echo0) { + + @Serializable + data class Datum ( + val chatType: Double, + + /** + * 最新消息内容 + */ + val lastestMsg: LastestMsg? = null, + + @SerialName("msgId") + val msgID: String, + + /** + * 消息时间 + */ + val msgTime: String, + + /** + * 对方昵称 + */ + val peerName: String, + + /** + * 对方账号 + */ + val peerUin: String, + + val remark: String, + val sendMemberName: String, + + /** + * 发送人昵称 + */ + val sendNickName: String + ) + + /** + * 最新消息内容 + */ + @Serializable + data class LastestMsg ( + val font: Double, + + @SerialName("group_id") + val groupID: Double? = null, + + val message: List, + + @SerialName("message_format") + val messageFormat: String, + + @SerialName("message_type") + val messageType: String, + + @SerialName("post_type") + val postType: String, + + @SerialName("raw_message") + val rawMessage: String, + + @SerialName("real_seq") + val realSeq: String, + + @SerialName("self_id") + val selfID: Double, + + val sender: Sender, + + @SerialName("sub_type") + val subType: String, + + val time: Double, + + @SerialName("user_id") + val userID: Double + ) + + /** + * 消息详情 + */ + @Serializable + data class SpecificMsg ( + val font: Double, + + @SerialName("group_id") + val groupID: Double? = null, + + val message: List, + + @SerialName("message_format") + val messageFormat: String, + + @SerialName("message_id") + val messageID: Double, + + @SerialName("message_seq") + val messageSeq: Double, + + @SerialName("message_type") + val messageType: String, + + @SerialName("post_type") + val postType: String, + + @SerialName("raw_message") + val rawMessage: String, + + @SerialName("real_id") + val realID: Double, + + @SerialName("real_seq") + val realSeq: String, + + @SerialName("self_id") + val selfID: Double, + + val sender: Sender, + + @SerialName("sub_type") + val subType: String, + + val time: Double, + + @SerialName("user_id") + val userID: Double + ) + + @Serializable + sealed class Content { + class StringValue(val value: String) : Content() + class SpecificMsgList(val value: List) : Content() + } + + @Serializable + data class Data ( + val text: String? = null, + val name: String? = null, + val qq: Qq? = null, + val id: Qq? = null, + val file: String? = null, + + /** + * 外显 + */ + val summary: String? = null, + + val data: String? = null, + val content: Content? = null + ) + + /** + * 文本消息 + * + * 艾特消息 + * + * 表情消息 + * + * 图片消息 + * + * 文件消息 + * + * 回复消息 + * + * JSON消息 + * + * 语音消息 + * + * 视频消息 + * + * markdown消息 + * + * 消息forward + */ + @Serializable + data class TextMsg ( + val data: Data, + val type: MessageType + ) + override fun subtype(): String { + return "get_recent_contact" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/GetStatusEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/GetStatusEvent.kt new file mode 100644 index 0000000..6f59dd1 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/GetStatusEvent.kt @@ -0,0 +1,36 @@ + +package top.r3944realms.ltdmanager.napcat.events.account + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonObject + +/** + * GetStatus事件 + * @property data 响应数据 + */ +@Serializable +data class GetStatusEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: Data +) : AbstractAccountEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Data ( + val good: Boolean, + val online: Boolean, + val stat: JsonObject + ) + override fun subtype(): String { + return "get_status" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/GetStrangerInfoEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/GetStrangerInfoEvent.kt new file mode 100644 index 0000000..4a2f116 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/GetStrangerInfoEvent.kt @@ -0,0 +1,102 @@ + +package top.r3944realms.ltdmanager.napcat.events.account + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +/** + * GetStrangerInfo事件 + * @property data 响应数据 + */ +@Serializable +data class GetStrangerInfoEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: Data +) : AbstractAccountEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Data ( + /** + * 年龄 + */ + val age: Double, + + /** + * 是否会员 + */ + @SerialName("is_vip") + val isVip: Boolean, + + /** + * 是否年费会员 + */ + @SerialName("is_years_vip") + val isYearsVip: Boolean, + + /** + * 连续登录天数 + */ + @SerialName("login_days") + val loginDays: Double, + + /** + * 个性签名 + */ + @SerialName("long_nick") + val longNick: String, + + /** + * 昵称 + */ + val nickname: String, + + val qid: String, + + /** + * 账号等级 + */ + val qqLevel: Double, + + /** + * 注册时间 + */ + @SerialName("reg_time") + val regTime: Double, + + /** + * 备注 + */ + val remark: String, + + /** + * 性别 + */ + val sex: String, + + val status: Double, + val uid: String, + val uin: String, + + @SerialName("user_id") + val userID: Double, + + /** + * 会员等级 + */ + @SerialName("vip_level") + val vipLevel: Double + ) + override fun subtype(): String { + return "get_stranger_info" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/GetUnidirectionalFriendListEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/GetUnidirectionalFriendListEvent.kt new file mode 100644 index 0000000..b8c8743 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/GetUnidirectionalFriendListEvent.kt @@ -0,0 +1,43 @@ + +package top.r3944realms.ltdmanager.napcat.events.account + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import top.r3944realms.ltdmanager.napcat.Developing + +/** + * GetUnidirectionalFriendList事件 + * @property data 响应数据 + */ +@Developing +@Serializable +data class GetUnidirectionalFriendListEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: List +) : AbstractAccountEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Datum ( + val age: Double, + + @SerialName("nick_name") + val nickName: String, + + val source: String, + val uid: String, + val uin: Double + ) + override fun subtype(): String { + return "get_unidirectional_friend_list" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/MarkAllAsReadEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/MarkAllAsReadEvent.kt new file mode 100644 index 0000000..5e78b54 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/MarkAllAsReadEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.account + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement + +/** + * MarkAllAsRead事件 + * @property data 响应数据 + */ +@Serializable +data class MarkAllAsReadEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonElement? = null +) : AbstractAccountEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "_mark_all_as_read" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/MarkGroupMsgAsReadEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/MarkGroupMsgAsReadEvent.kt new file mode 100644 index 0000000..0e4adcd --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/MarkGroupMsgAsReadEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.account + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement + +/** + * MarkGroupMsgAsRead事件 + * @property data 响应数据 + */ +@Serializable +data class MarkGroupMsgAsReadEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonElement? = null +) : AbstractAccountEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "mark_group_msg_as_read" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/MarkPrivateMsgAsReadEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/MarkPrivateMsgAsReadEvent.kt new file mode 100644 index 0000000..d94ffa0 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/MarkPrivateMsgAsReadEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.account + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement + +/** + * MarkPrivateMsgAsRead事件 + * @property data 响应数据 + */ +@Serializable +data class MarkPrivateMsgAsReadEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonElement? = null +) : AbstractAccountEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "mark_private_msg_as_read" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/NcGetUserStatusEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/NcGetUserStatusEvent.kt new file mode 100644 index 0000000..ff7cd86 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/NcGetUserStatusEvent.kt @@ -0,0 +1,36 @@ + +package top.r3944realms.ltdmanager.napcat.events.account + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +/** + * NcGetUserStatus事件 + * @property data 响应数据 + */ +@Serializable +data class NcGetUserStatusEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: Data +) : AbstractAccountEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Data( + val status:Double, + @SerialName("ext_status") + val extStatus:Double + ) + override fun subtype(): String { + return "nc_get_user_status" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/SendLikeEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/SendLikeEvent.kt new file mode 100644 index 0000000..1fc9962 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/SendLikeEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.account + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement + +/** + * SendLike事件 + * @property data 响应数据 + */ +@Serializable +data class SendLikeEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonElement? = null +) : AbstractAccountEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "send_like" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/SetDiyOnlineStatusEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/SetDiyOnlineStatusEvent.kt new file mode 100644 index 0000000..ee2b90a --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/SetDiyOnlineStatusEvent.kt @@ -0,0 +1,30 @@ + +package top.r3944realms.ltdmanager.napcat.events.account + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +/** + * SetDiyOnlineStatus事件 + * @property data 响应数据 + */ +@Serializable +data class SetDiyOnlineStatusEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: String +) : AbstractAccountEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "set_diy_online_status" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/SetFriendAddRequestEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/SetFriendAddRequestEvent.kt new file mode 100644 index 0000000..9f6d3cf --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/SetFriendAddRequestEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.account + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement + +/** + * SetFriendAddRequest事件 + * @property data 响应数据 + */ +@Serializable +data class SetFriendAddRequestEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonElement? = null +) : AbstractAccountEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "set_friend_add_request" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/SetFriendRemarkEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/SetFriendRemarkEvent.kt new file mode 100644 index 0000000..ec94659 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/SetFriendRemarkEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.account + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement + +/** + * SetFriendRemark事件 + * @property data 响应数据 + */ +@Serializable +data class SetFriendRemarkEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonElement? = null +) : AbstractAccountEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "set_friend_remark" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/SetModelShowEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/SetModelShowEvent.kt new file mode 100644 index 0000000..467200b --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/SetModelShowEvent.kt @@ -0,0 +1,33 @@ + +package top.r3944realms.ltdmanager.napcat.events.account + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement +import top.r3944realms.ltdmanager.napcat.Developing + +/** + * SetModelShow事件 + * @property data 响应数据 + */ +@Developing +@Serializable +data class SetModelShowEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonElement? = null +) : AbstractAccountEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "_set_model_show" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/SetOnlineStatusEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/SetOnlineStatusEvent.kt index c6f63c3..66f7bb1 100644 --- a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/SetOnlineStatusEvent.kt +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/SetOnlineStatusEvent.kt @@ -19,6 +19,6 @@ data class SetOnlineStatusEvent( val data: JsonElement? = null, ) : AbstractAccountEvent(status0, retcode0, message0, wording0, echo0) { - override fun subtype(): String = "/set_online_status" + override fun subtype(): String = "set_online_status" } diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/SetQqAvatarEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/SetQqAvatarEvent.kt new file mode 100644 index 0000000..0ef556d --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/SetQqAvatarEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.account + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement + +/** + * SetQqAvatar事件 + * @property data 响应数据 + */ +@Serializable +data class SetQqAvatarEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonElement? = null +) : AbstractAccountEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "set_qq_avatar" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/SetSelfLongnickEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/SetSelfLongnickEvent.kt new file mode 100644 index 0000000..2883ca9 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/account/SetSelfLongnickEvent.kt @@ -0,0 +1,34 @@ + +package top.r3944realms.ltdmanager.napcat.events.account + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +/** + * SetSelfLongnick事件 + * @property data 响应数据 + */ +@Serializable +data class SetSelfLongnickEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: Data +) : AbstractAccountEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Data( + val result: Double, + val errMsg: String + ) + override fun subtype(): String { + return "set_self_longnick" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/AbstractFileEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/AbstractFileEvent.kt index 623cec6..2ca90dc 100644 --- a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/AbstractFileEvent.kt +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/AbstractFileEvent.kt @@ -1,10 +1,12 @@ package top.r3944realms.ltdmanager.napcat.events.file import kotlinx.serialization.KSerializer +import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json import kotlinx.serialization.modules.SerializersModule import kotlinx.serialization.modules.polymorphic +import kotlinx.serialization.modules.subclass import top.r3944realms.ltdmanager.napcat.events.NapCatEvent /** @@ -38,11 +40,115 @@ abstract class AbstractFileEvent( */ open val echo: String? = null ) : NapCatEvent() { + @Serializable + data class OkData( + val ok:Boolean + ) + @Serializable + data class UrlData( + val url: String + ) + /** + * 群文件信息 + */ + @Serializable + data class GroupFileInformation ( + val busid: Double, + + @SerialName("dead_time") + val deadTime: Double, + + @SerialName("download_times") + val downloadTimes: Double, + + @SerialName("file_id") + val fileID: String, + + @SerialName("file_name") + val fileName: String, + + @SerialName("file_size") + val fileSize: Double, + + @SerialName("group_id") + val groupID: Double, + + @SerialName("modify_time") + val modifyTime: Double, + + val size: Double, + + @SerialName("upload_time") + val uploadTime: Double, + + val uploader: Double, + + @SerialName("uploader_name") + val uploaderName: String + ) + + /** + * 群文件夹信息 + */ + @Serializable + data class GroupFolderInformation ( + /** + * 创建时间 + */ + @SerialName("create_time") + val createTime: Double, + + /** + * 创建人账号 + */ + val creator: Double, + + /** + * 创建人昵称 + */ + @SerialName("creator_name") + val creatorName: String, + + val folder: String, + + @SerialName("folder_id") + val folderID: String, + + /** + * 文件夹名称 + */ + @SerialName("folder_name") + val folderName: String, + + @SerialName("group_id") + val groupID: Double, + + /** + * 文件数量 + */ + @SerialName("total_file_count") + val totalFileCount: Double + ) override fun type(): String = "file/" + subtype() companion object { val eventTypeMap by lazy { mutableMapOf>().apply { - + put("file/move_group_file", MoveGroupFileEvent.serializer()) + put("file/trans_group_file", TransGroupFileEvent.serializer()) + put("file/rename_group_file", RenameGroupFileEvent.serializer()) + put("file/upload_group_file",UploadGroupFileEvent.serializer()) + put("file/create_group_file_folder",CreateGroupFileFolderEvent.serializer()) + put("file/delete_group_file", DeleteGroupFileEvent.serializer()) + put("file/delete_group_folder", DeleteGroupFolderEvent.serializer()) + put("file/get_group_file_system_info", GetGroupFileSystemInfoEvent.serializer()) + put("file/get_group_root_files", GetGroupRootFilesEvent.serializer()) + put("file/get_group_files_by_folder", GetGroupFilesByFolderEvent.serializer()) + put("file/get_group_file_url",GetGroupFileUrlEvent.serializer()) + put("file/upload_private_file", UploadGroupFileEvent.serializer()) + put("file/get_private_file_url", GetPrivateFileUrlEvent.serializer()) + put("file/get_file", GetFileEvent.serializer()) + put("file/download_file", DownloadFileEvent.serializer()) + put("file/clean_cache", CleanCacheEvent.serializer()) } } internal val json: Json by lazy { @@ -50,7 +156,22 @@ abstract class AbstractFileEvent( ignoreUnknownKeys = true serializersModule = SerializersModule { polymorphic(NapCatEvent::class) { - + subclass(MoveGroupFileEvent::class) + subclass(TransGroupFileEvent::class) + subclass(RenameGroupFileEvent::class) + subclass(UploadGroupFileEvent::class) + subclass(CreateGroupFileFolderEvent::class) + subclass(DeleteGroupFileEvent::class) + subclass(DeleteGroupFolderEvent::class) + subclass(GetGroupFileSystemInfoEvent::class) + subclass(GetGroupRootFilesEvent::class) + subclass(GetGroupFilesByFolderEvent::class) + subclass(GetGroupFileUrlEvent::class) + subclass(UploadGroupFileEvent::class) + subclass(GetPrivateFileUrlEvent::class) + subclass(GetFileEvent::class) + subclass(DownloadFileEvent::class) + subclass(CleanCacheEvent::class) } } } diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/CleanCacheEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/CleanCacheEvent.kt new file mode 100644 index 0000000..775c97c --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/CleanCacheEvent.kt @@ -0,0 +1,33 @@ + +package top.r3944realms.ltdmanager.napcat.events.file + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement +import top.r3944realms.ltdmanager.napcat.Developing + +/** + * CleanCache事件 + * @property data 响应数据 + */ +@Developing +@Serializable +data class CleanCacheEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonElement? = null +) : AbstractFileEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "clean_cache" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/CreateGroupFileFolderEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/CreateGroupFileFolderEvent.kt new file mode 100644 index 0000000..19747f5 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/CreateGroupFileFolderEvent.kt @@ -0,0 +1,81 @@ + +package top.r3944realms.ltdmanager.napcat.events.file + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +/** + * CreateGroupFileFolder事件 + * @property data 响应数据 + */ +@Serializable +data class CreateGroupFileFolderEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: Data +) : AbstractFileEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Data ( + val groupItem: GroupItem, + val result: Result + ) + + @Serializable + data class GroupItem ( + val fileInfo: String? = null, + + /** + * 文件夹信息 + */ + val folderInfo: FolderInfo, + + @SerialName("peerId") + val peerID: String, + + val type: Double + ) + + /** + * 文件夹信息 + */ + @Serializable + data class FolderInfo ( + val createTime: Double, + val createUin: String, + val creatorName: String, + + @SerialName("folderId") + val folderID: String, + + val folderName: String, + val modifyName: String, + val modifyTime: Double, + val modifyUin: String, + + @SerialName("parentFolderId") + val parentFolderID: String, + + val totalFileCount: Double, + val usedSpace: String + ) + + @Serializable + data class Result ( + val clientWording: String, + val retCode: Double, + val retMsg: String + ) + override fun subtype(): String { + return "create_group_file_folder" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/DeleteGroupFileEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/DeleteGroupFileEvent.kt new file mode 100644 index 0000000..a265a0f --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/DeleteGroupFileEvent.kt @@ -0,0 +1,54 @@ + +package top.r3944realms.ltdmanager.napcat.events.file + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +/** + * DeleteGroupFile事件 + * @property data 响应数据 + */ +@Serializable +data class DeleteGroupFileEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: Data +) : AbstractFileEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Data ( + val errMsg: String, + val result: Double, + val transGroupFileResult: TransGroupFileResult + ) + + @Serializable + data class TransGroupFileResult ( + @SerialName("failFileIdList") + val failFileIDList: List, + + val result: Result, + + @SerialName("successFileIdList") + val successFileIDList: List + ) + + @Serializable + data class Result ( + val clientWording: String, + val retCode: Double, + val retMsg: String + ) + override fun subtype(): String { + return "delete_group_file" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/DeleteGroupFolderEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/DeleteGroupFolderEvent.kt new file mode 100644 index 0000000..665146b --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/DeleteGroupFolderEvent.kt @@ -0,0 +1,36 @@ + +package top.r3944realms.ltdmanager.napcat.events.file + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +/** + * DeleteGroupFolder事件 + * @property data 响应数据 + */ +@Serializable +data class DeleteGroupFolderEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: Data +) : AbstractFileEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Data ( + val clientWording: String, + val retCode: Double, + val retMsg: String + ) + + override fun subtype(): String { + return "delete_group_folder" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/DownloadFileEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/DownloadFileEvent.kt new file mode 100644 index 0000000..6e4683f --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/DownloadFileEvent.kt @@ -0,0 +1,33 @@ + +package top.r3944realms.ltdmanager.napcat.events.file + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +/** + * DownloadFile事件 + * @property data 响应数据 + */ +@Serializable +data class DownloadFileEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: Data +) : AbstractFileEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Data( + val file: String + ) + override fun subtype(): String { + return "download_file" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/GetFileEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/GetFileEvent.kt new file mode 100644 index 0000000..ad76f13 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/GetFileEvent.kt @@ -0,0 +1,56 @@ + +package top.r3944realms.ltdmanager.napcat.events.file + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +/** + * GetFile事件 + * @property data 响应数据 + */ +@Serializable +data class GetFileEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: Data +) : AbstractFileEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Data ( + val base64: String, + + /** + * 路径或链接 + */ + val file: String, + + /** + * 文件名 + */ + @SerialName("file_name") + val fileName: String, + + /** + * 文件大小 + */ + @SerialName("file_size") + val fileSize: String, + + /** + * 路径或链接 + */ + val url: String + ) + override fun subtype(): String { + return "get_file" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/GetGroupFileSystemInfoEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/GetGroupFileSystemInfoEvent.kt new file mode 100644 index 0000000..9dca6d0 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/GetGroupFileSystemInfoEvent.kt @@ -0,0 +1,56 @@ + +package top.r3944realms.ltdmanager.napcat.events.file + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +/** + * GetGroupFileSystemInfo事件 + * @property data 响应数据 + */ +@Serializable +data class GetGroupFileSystemInfoEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: Data +) : AbstractFileEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Data ( + /** + * 文件总数 + */ + @SerialName("file_count") + val fileCount: Double, + + /** + * 文件上限 + */ + @SerialName("limit_count") + val limitCount: Double, + + /** + * 空间上限 + */ + @SerialName("total_space") + val totalSpace: Double, + + /** + * 已使用空间 + */ + @SerialName("used_space") + val usedSpace: Double + ) + override fun subtype(): String { + return "get_group_file_system_info" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/GetGroupFileUrlEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/GetGroupFileUrlEvent.kt new file mode 100644 index 0000000..c8e3315 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/GetGroupFileUrlEvent.kt @@ -0,0 +1,30 @@ + +package top.r3944realms.ltdmanager.napcat.events.file + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +/** + * GetGroupFileUrl事件 + * @property data 响应数据 + */ +@Serializable +data class GetGroupFileUrlEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: UrlData +) : AbstractFileEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "get_group_file_url" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/GetGroupFilesByFolderEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/GetGroupFilesByFolderEvent.kt new file mode 100644 index 0000000..505e3fe --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/GetGroupFilesByFolderEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.file + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import top.r3944realms.ltdmanager.napcat.events.file.GetGroupRootFilesEvent.FileData + +/** + * GetGroupFilesByFolder事件 + * @property data 响应数据 + */ +@Serializable +data class GetGroupFilesByFolderEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: FileData +) : AbstractFileEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "get_group_files_by_folder" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/GetGroupRootFilesEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/GetGroupRootFilesEvent.kt new file mode 100644 index 0000000..4efc1df --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/GetGroupRootFilesEvent.kt @@ -0,0 +1,43 @@ + +package top.r3944realms.ltdmanager.napcat.events.file + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +/** + * GetGroupRootFiles事件 + * @property data 响应数据 + */ +@Serializable +data class GetGroupRootFilesEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: FileData +) : AbstractFileEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class FileData ( + /** + * 文件列表 + */ + val files: List, + + /** + * 文件夹列表 + */ + val folders: List + ) + + + override fun subtype(): String { + return "get_group_root_files" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/GetPrivateFileUrlEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/GetPrivateFileUrlEvent.kt new file mode 100644 index 0000000..ae8812c --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/GetPrivateFileUrlEvent.kt @@ -0,0 +1,30 @@ + +package top.r3944realms.ltdmanager.napcat.events.file + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +/** + * GetPrivateFileUrl事件 + * @property data 响应数据 + */ +@Serializable +data class GetPrivateFileUrlEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: UrlData +) : AbstractFileEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "get_private_file_url" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/MoveGroupFileEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/MoveGroupFileEvent.kt new file mode 100644 index 0000000..10952e7 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/MoveGroupFileEvent.kt @@ -0,0 +1,30 @@ + +package top.r3944realms.ltdmanager.napcat.events.file + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +/** + * MoveGroupFile事件 + * @property okData 响应数据 + */ +@Serializable +data class MoveGroupFileEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: OkData +) : AbstractFileEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "move_group_file" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/RenameGroupFileEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/RenameGroupFileEvent.kt new file mode 100644 index 0000000..bcd26fb --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/RenameGroupFileEvent.kt @@ -0,0 +1,30 @@ + +package top.r3944realms.ltdmanager.napcat.events.file + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +/** + * RenameGroupFile事件 + * @property data 响应数据 + */ +@Serializable +data class RenameGroupFileEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: OkData +) : AbstractFileEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "rename_group_file" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/TransGroupFileEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/TransGroupFileEvent.kt new file mode 100644 index 0000000..8be47ec --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/TransGroupFileEvent.kt @@ -0,0 +1,30 @@ + +package top.r3944realms.ltdmanager.napcat.events.file + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +/** + * TransGroupFile事件 + * @property data 响应数据 + */ +@Serializable +data class TransGroupFileEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: OkData +) : AbstractFileEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "trans_group_file" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/UploadGroupFileEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/UploadGroupFileEvent.kt new file mode 100644 index 0000000..85b26f9 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/UploadGroupFileEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.file + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement + +/** + * UploadGroupFile事件 + * @property data 响应数据 + */ +@Serializable +data class UploadGroupFileEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonElement? = null +) : AbstractFileEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "upload_group_file" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/UploadPrivateFileEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/UploadPrivateFileEvent.kt new file mode 100644 index 0000000..730563e --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/file/UploadPrivateFileEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.file + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement + +/** + * UploadPrivateFile事件 + * @property data 响应数据 + */ +@Serializable +data class UploadPrivateFileEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonElement? = null, +) : AbstractFileEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "upload_private_file" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/AbstractGroupEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/AbstractGroupEvent.kt index 9c8bc53..5f9c94b 100644 --- a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/AbstractGroupEvent.kt +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/AbstractGroupEvent.kt @@ -5,6 +5,7 @@ import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json import kotlinx.serialization.modules.SerializersModule import kotlinx.serialization.modules.polymorphic +import kotlinx.serialization.modules.subclass import top.r3944realms.ltdmanager.napcat.events.NapCatEvent /** @@ -43,7 +44,40 @@ open val echo: String? = null companion object { val eventTypeMap by lazy { mutableMapOf>().apply { - + put("group/get_group_info",GetGroupInfoEvent.serializer()) + put("group/get_group_info_ex",GetGroupInfoExEvent.serializer()) + put("group/get_group_detail_info",GetGroupDetailInfoEvent.serializer()) + put("group/get_group_list",GetGroupListEvent.serializer()) + put("group/get_group_member_info",GetGroupMemberInfoEvent.serializer()) + put("group/get_group_member_list",GetGroupMemberListEvent.serializer()) + put("group/get_group_honor_info",GetGroupHonorInfoEvent.serializer()) + put("group/get_group_at_all_remain",GetGroupAtAllRemainEvent.serializer()) + put("group/get_group_shut_list",GetGroupShutListEvent.serializer()) + put("group/get_group_ignored_notifies",GetGroupIgnoredNotifiesEvent.serializer()) + put("group/get_group_system_msg",GetGroupSystemMsgEvent.serializer()) + put("group/get_essence_msg_list",GetEssenceMsgListEvent.serializer()) + put("group/set_group_name",SetGroupNameEvent.serializer()) + put("group/set_group_portrait",SetGroupPortraitEvent.serializer()) + put("group/set_group_search",SetGroupSearchEvent.serializer()) + put("group/set_group_add_option",SetGroupAddOptionEvent.serializer()) + put("group/set_group_robot_add_option",SetGroupRobotAddOptionEvent.serializer()) + put("group/set_group_remark",SetGroupRemarkEvent.serializer()) + put("group/set_group_card",SetGroupCardEvent.serializer()) + put("group/set_group_special_title",SetGroupSpecialTitleEvent.serializer()) + put("group/set_group_admin",SetGroupAdminEvent.serializer()) + put("group/set_group_leave",SetGroupLeaveEvent.serializer()) + put("group/set_essence_msg",SetEssenceMsgEvent.serializer()) + put("group/delete_essence_msg", DeleteEssenceMsgEvent.serializer()) + put("group/_send_group_notice",SendGroupNoticeEvent.serializer()) + put("group/_get_group_notice",GetGroupNoticeEvent.serializer()) + put("group/_del_group_notice",DelGroupNoticeEvent.serializer()) + put("group/set_group_kick",SetGroupKickEvent.serializer()) + put("group/set_group_kick_members",SetGroupKickMembersEvent.serializer()) + put("group/set_group_ban",SetGroupBanEvent.serializer()) + put("group/set_group_whole_ban",SetGroupWholeBanEvent.serializer()) + put("group/set_group_sign",SetGroupSignEvent.serializer()) + put("group/send_group_sign",SendGroupSignEvent.serializer()) + put("group/set_group_add_request",SetGroupAddRequestEvent.serializer()) } } internal val json: Json by lazy { @@ -51,7 +85,40 @@ open val echo: String? = null ignoreUnknownKeys = true serializersModule = SerializersModule { polymorphic(NapCatEvent::class) { - + subclass(GetGroupInfoEvent::class) + subclass(GetGroupInfoExEvent::class) + subclass(GetGroupDetailInfoEvent::class) + subclass(GetGroupListEvent::class) + subclass(GetGroupMemberInfoEvent::class) + subclass(GetGroupMemberListEvent::class) + subclass(GetGroupHonorInfoEvent::class) + subclass(GetGroupAtAllRemainEvent::class) + subclass(GetGroupShutListEvent::class) + subclass(GetGroupIgnoredNotifiesEvent::class) + subclass(GetGroupSystemMsgEvent::class) + subclass(GetEssenceMsgListEvent::class) + subclass(SetGroupNameEvent::class) + subclass(SetGroupPortraitEvent::class) + subclass(SetGroupSearchEvent::class) + subclass(SetGroupAddOptionEvent::class) + subclass(SetGroupRobotAddOptionEvent::class) + subclass(SetGroupRemarkEvent::class) + subclass(SetGroupCardEvent::class) + subclass(SetGroupSpecialTitleEvent::class) + subclass(SetGroupAdminEvent::class) + subclass(SetGroupLeaveEvent::class) + subclass(SetEssenceMsgEvent::class) + subclass(DeleteEssenceMsgEvent::class) + subclass(SendGroupNoticeEvent::class) + subclass(GetGroupNoticeEvent::class) + subclass(DelGroupNoticeEvent::class) + subclass(SetGroupKickEvent::class) + subclass(SetGroupKickMembersEvent::class) + subclass(SetGroupBanEvent::class) + subclass(SetGroupWholeBanEvent::class) + subclass(SetGroupSignEvent::class) + subclass(SendGroupSignEvent::class) + subclass(SetGroupAddRequestEvent::class) } } } diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/DelGroupNoticeEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/DelGroupNoticeEvent.kt new file mode 100644 index 0000000..683ea9d --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/DelGroupNoticeEvent.kt @@ -0,0 +1,34 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +/** + * DelGroupNotice事件 + * @property data 响应数据 + */ +@Serializable +data class DelGroupNoticeEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: Data +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Data( + val result: Double, + val errMsg: String + ) + override fun subtype(): String { + return "_del_group_notice" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/DeleteEssenceMsgEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/DeleteEssenceMsgEvent.kt new file mode 100644 index 0000000..3ab70e1 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/DeleteEssenceMsgEvent.kt @@ -0,0 +1,49 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonObject + +/** + * DeleteEssenceMsg事件 + * @property data 响应数据 + */ +@Serializable +data class DeleteEssenceMsgEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: Data +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Data ( + val errCode: String, + val errMsg: String, + val result: Result + ) + + @Serializable + data class Result ( + val digestTime: String, + val digestUin: String, + val msg: JsonObject, + + /** + * 正常为空,异常有文本提示 + */ + val wording: String + ) + override fun subtype(): String { + return "delete_essence_msg" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetEssenceMsgListEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetEssenceMsgListEvent.kt new file mode 100644 index 0000000..ddbebb6 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetEssenceMsgListEvent.kt @@ -0,0 +1,96 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +/** + * GetEssenceMsgList事件 + * @property data 响应数据 + */ +@Serializable +data class GetEssenceMsgListEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: List +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Datum ( + /** + * 消息内容 + */ + val content: List, + + @SerialName("message_id") + val messageID: Double, + + @SerialName("msg_random") + val msgRandom: Double, + + @SerialName("msg_seq") + val msgSeq: Double, + + /** + * 设精人账号 + */ + @SerialName("operator_id") + val operatorID: Double, + + /** + * 设精人昵称 + */ + @SerialName("operator_nick") + val operatorNick: String, + + /** + * 设精时间 + */ + @SerialName("operator_time") + val operatorTime: Double, + + /** + * 发送人账号 + */ + @SerialName("sender_id") + val senderID: Double, + + /** + * 发送人昵称 + */ + @SerialName("sender_nick") + val senderNick: String + ) + /** + * 文本消息 + */ + @Serializable + data class Content ( + val data: Data, + val type: Type + ) + + @Serializable + data class Data ( + val text: String? = null, + val url: String? = null + ) + + @Serializable + enum class Type(val value: String) { + @SerialName("image") Image("image"), + @SerialName("text") Text("text"); + } + override fun subtype(): String { + return "get_essence_msg_list" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupAtAllRemainEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupAtAllRemainEvent.kt new file mode 100644 index 0000000..b1902ea --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupAtAllRemainEvent.kt @@ -0,0 +1,41 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +/** + * GetGroupAtAllRemain事件 + * @property data 响应数据 + */ +@Serializable +data class GetGroupAtAllRemainEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: Data +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Data ( + @SerialName("can_at_all") + val canAtAll: Boolean, + + @SerialName("remain_at_all_count_for_group") + val remainAtAllCountForGroup: Double, + + @SerialName("remain_at_all_count_for_uin") + val remainAtAllCountForUin: Double + ) + override fun subtype(): String { + return "get_group_at_all_remain" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupDetailInfoEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupDetailInfoEvent.kt new file mode 100644 index 0000000..2674a40 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupDetailInfoEvent.kt @@ -0,0 +1,50 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +/** + * GetGroupDetailInfo事件 + * @property data 响应数据 + */ +@Serializable +data class GetGroupDetailInfoEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: Data +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Data ( + @SerialName("group_all_shut") + val groupAllShut: Double, + + @SerialName("group_id") + val groupID: Double, + + @SerialName("group_name") + val groupName: String, + + @SerialName("group_remark") + val groupRemark: String, + + @SerialName("max_member_count") + val maxMemberCount: Double, + + @SerialName("member_count") + val memberCount: Double + ) + override fun subtype(): String { + return "get_group_detail_info" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupHonorInfoEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupHonorInfoEvent.kt new file mode 100644 index 0000000..8ff26ac --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupHonorInfoEvent.kt @@ -0,0 +1,91 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +/** + * GetGroupHonorInfo事件 + * @property data 响应数据 + */ +@Serializable +data class GetGroupHonorInfoEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: Data +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Data ( + /** + * 当前龙王 + */ + @SerialName("current_talkative") + val currentTalkative: GroupHonorInfo, + + /** + * 快乐源泉 + */ + @SerialName("emotion_list") + val emotionList: List, + + @SerialName("group_id") + val groupID: String, + + /** + * 龙王 + */ + @SerialName("legend_list") + val legendList: List, + + /** + * 群聊炽焰 + */ + @SerialName("performer_list") + val performerList: List, + + /** + * 冒尖小春笋 + */ + @SerialName("strong_newbie_list") + val strongNewbieList: List, + + /** + * 群聊之火 + */ + @SerialName("talkative_list") + val talkativeList: List + ) + + /** + * 当前龙王 + * + * 群荣誉信息 + */ + @Serializable + data class GroupHonorInfo ( + val avatar: Double? = null, + + /** + * 说明 + */ + val description: String? = null, + + val nickname: String? = null, + + @SerialName("user_id") + val userID: Double? = null + ) + override fun subtype(): String { + return "get_group_honor_info" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupIgnoredNotifiesEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupIgnoredNotifiesEvent.kt new file mode 100644 index 0000000..da61e0e --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupIgnoredNotifiesEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +/** + * GetGroupIgnoredNotifies事件 + * @property data 响应数据 + */ +@Serializable +data class GetGroupIgnoredNotifiesEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: GetGroupSystemMsgEvent.Data +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "get_group_ignored_notifies" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupInfoEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupInfoEvent.kt new file mode 100644 index 0000000..db3c017 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupInfoEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonObject + +/** + * GetGroupInfo事件 + * @property data 响应数据 + */ +@Serializable +data class GetGroupInfoEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonObject +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "get_group_info" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupInfoExEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupInfoExEvent.kt new file mode 100644 index 0000000..40a8da4 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupInfoExEvent.kt @@ -0,0 +1,132 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +/** + * GetGroupInfoEx事件 + * @property data 响应数据 + */ +@Serializable +data class GetGroupInfoExEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: Data +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Data ( + val extInfo: EXTInfo, + val groupCode: String, + val resultCode: Double + ) + + @Serializable + data class EXTInfo ( + @SerialName("bindGuildId") + val bindGuildID: String, + + val blacklistExpireTime: Double, + + @SerialName("companyId") + val companyID: Double, + + val essentialMsgPrivilege: Double, + val essentialMsgSwitch: Double, + val fullGroupExpansionSeq: String, + val fullGroupExpansionSwitch: Double, + + @SerialName("gangUpId") + val gangUpID: String, + + @SerialName("groupAioBindGuildId") + val groupAioBindGuildID: String, + + @SerialName("groupBindGuildIds") + val groupBindGuildIDS: GroupBindGuildIDS, + + val groupBindGuildSwitch: Double, + + @SerialName("groupExcludeGuildIds") + val groupExcludeGuildIDS: GroupExcludeGuildIDS, + + @SerialName("groupExtFlameData") + val groupEXTFlameData: GroupEXTFlameData, + + val groupFlagPro1: String, + + @SerialName("groupInfoExtSeq") + val groupInfoEXTSeq: Double, + + @SerialName("groupOwnerId") + val groupOwnerID: GroupOwnerID, + + val groupSquareSwitch: Double, + val hasGroupCustomPortrait: Double, + val inviteRobotMemberExamine: Double, + val inviteRobotMemberSwitch: Double, + val inviteRobotSwitch: Double, + + @SerialName("isLimitGroupRtc") + val isLimitGroupRTC: Double, + + val lightCharNum: Double, + val luckyWord: String, + + @SerialName("luckyWordId") + val luckyWordID: String, + + val msgEventSeq: String, + val qqMusicMedalSwitch: Double, + val reserve: Double, + val showPlayTogetherSwitch: Double, + + @SerialName("starId") + val starID: Double, + + val todoSeq: Double, + val viewedMsgDisappearTime: String + ) + + @Serializable + data class GroupBindGuildIDS ( + @SerialName("guildIds") + val guildIDS: List + ) + + @Serializable + data class GroupEXTFlameData ( + val dayNums: List, + val isDisplayDayNum: Boolean, + val state: Long, + val switchState: Long, + val updateTime: String, + val version: Long + ) + + @Serializable + data class GroupExcludeGuildIDS ( + @SerialName("guildIds") + val guildIDS: List + ) + + @Serializable + data class GroupOwnerID ( + val memberQid: String, + val memberUid: String, + val memberUin: String + ) + override fun subtype(): String { + return "get_group_info_ex" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupListEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupListEvent.kt new file mode 100644 index 0000000..f3f7d4d --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupListEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonArray + +/** + * GetGroupList事件 + * @property data 响应数据 + */ +@Serializable +data class GetGroupListEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonArray +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "get_group_list" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupMemberInfoEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupMemberInfoEvent.kt new file mode 100644 index 0000000..9b6d548 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupMemberInfoEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonObject + +/** + * GetGroupMemberInfo事件 + * @property data 响应数据 + */ +@Serializable +data class GetGroupMemberInfoEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonObject +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "get_group_member_info" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupMemberListEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupMemberListEvent.kt new file mode 100644 index 0000000..f9e50ad --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupMemberListEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonArray + +/** + * GetGroupMemberList事件 + * @property data 响应数据 + */ +@Serializable +data class GetGroupMemberListEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonArray +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "get_group_member_list" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupNoticeEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupNoticeEvent.kt new file mode 100644 index 0000000..806a452 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupNoticeEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement + +/** + * GetGroupNotice事件 + * @property data 响应数据 + */ +@Serializable +data class GetGroupNoticeEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonElement? = null, +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "_get_group_notice" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupShutListEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupShutListEvent.kt new file mode 100644 index 0000000..d86b26e --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupShutListEvent.kt @@ -0,0 +1,100 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonObject + +/** + * GetGroupShutList事件 + * @property data 响应数据 + */ +@Serializable +data class GetGroupShutListEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: List +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Datum ( + val autoRemark: String, + val avatarPath: String, + val bigClubFlag: Double, + val bigClubLevel: Double, + val cardName: String, + + @SerialName("cardNameId") + val cardNameID: Double, + + val cardType: Double, + val creditLevel: Double, + val globalGroupLevel: Double, + val globalGroupPoint: Double, + val groupHonor: JsonObject, + val isDelete: Boolean, + val isRobot: Boolean, + val isSpecialConcerned: Boolean, + val isSpecialShield: Boolean, + val isSpecialShielded: Boolean, + + /** + * 入群时间 + */ + val joinTime: Double, + + /** + * 最后发言时间 + */ + val lastSpeakTime: Double, + + val memberFlag: Double, + + @SerialName("memberFlagExt") + val memberFlagEXT: Double, + + val memberFlagExt2: Double, + val memberLevel: Double, + val memberMobileFlag: Double, + + /** + * 群聊等级 + */ + val memberRealLevel: Double, + + val memberSpecialTitle: String, + + @SerialName("memberTitleId") + val memberTitleID: Double, + + val mssVipType: Double, + val nick: String, + val qid: String, + val remark: String, + val richFlag: Double, + val role: Double, + + /** + * 解禁时间 + */ + val shutUpTime: Double, + + val specialTitleExpireTime: String, + val uid: String, + val uin: String, + val userShowFlag: Double, + val userShowFlagNew: Double + ) + override fun subtype(): String { + return "get_group_shut_list" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupSystemMsgEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupSystemMsgEvent.kt new file mode 100644 index 0000000..423d21d --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/GetGroupSystemMsgEvent.kt @@ -0,0 +1,67 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +/** + * GetGroupSystemMsg事件 + * @property data 响应数据 + */ +@Serializable +data class GetGroupSystemMsgEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: Data +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Data ( + @SerialName("InvitedRequest") + val invitedRequest: List, + + @SerialName("join_requests") + val joinRequests: List + ) + + /** + * 系统信息 + */ + @Serializable + data class SystemInfo ( + val actor: Double, + val checked: Boolean, + + @SerialName("group_id") + val groupID: Double, + + @SerialName("group_name") + val groupName: String, + + @SerialName("invitor_nick") + val invitorNick: String, + + @SerialName("invitor_uin") + val invitorUin: Double, + + val message: String, + + @SerialName("request_id") + val requestID: Double, + + @SerialName("requester_nick") + val requesterNick: String + ) + override fun subtype(): String { + return "get_group_system_msg" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SendGroupNoticeEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SendGroupNoticeEvent.kt new file mode 100644 index 0000000..978ed5b --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SendGroupNoticeEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement + +/** + * SendGroupNotice事件 + * @property data 响应数据 + */ +@Serializable +data class SendGroupNoticeEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonElement? = null +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "_send_group_notice" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SendGroupSignEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SendGroupSignEvent.kt new file mode 100644 index 0000000..f30f9fd --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SendGroupSignEvent.kt @@ -0,0 +1,21 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement +import top.r3944realms.ltdmanager.napcat.events.NapCatEvent + +/** + * SendGroupSign事件 + */ +@Serializable +class SendGroupSignEvent: NapCatEvent() { + override fun type(): String { + return "group/" + subtype() + } + + override fun subtype(): String { + return "send_group_sign" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetEssenceMsgEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetEssenceMsgEvent.kt new file mode 100644 index 0000000..1cfa7d3 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetEssenceMsgEvent.kt @@ -0,0 +1,49 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonObject + +/** + * SetEssenceMsg事件 + * @property data 响应数据 + */ +@Serializable +data class SetEssenceMsgEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: Data +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Data ( + val errCode: String, + val errMsg: String, + val result: Result + ) + + @Serializable + data class Result ( + val digestTime: Double, + val digestUin: String, + val errorCode: Double, + val msg: JsonObject, + + /** + * 正常为空,异常有文本提示 + */ + val wording: String + ) + override fun subtype(): String { + return "set_essence_msg" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupAddOptionEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupAddOptionEvent.kt new file mode 100644 index 0000000..7b762fc --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupAddOptionEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement + +/** + * SetGroupAddOption事件 + * @property data 响应数据 + */ +@Serializable +data class SetGroupAddOptionEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonElement? = null +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "set_group_add_option" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupAddRequestEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupAddRequestEvent.kt new file mode 100644 index 0000000..848e916 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupAddRequestEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement + +/** + * SetGroupAddRequest事件 + * @property data 响应数据 + */ +@Serializable +data class SetGroupAddRequestEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonElement? = null +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "set_group_add_request" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupAdminEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupAdminEvent.kt new file mode 100644 index 0000000..7e17c7d --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupAdminEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement + +/** + * SetGroupAdmin事件 + * @property data 响应数据 + */ +@Serializable +data class SetGroupAdminEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonElement? = null +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "set_group_admin" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupBanEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupBanEvent.kt new file mode 100644 index 0000000..050dbd5 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupBanEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement + +/** + * SetGroupBan事件 + * @property data 响应数据 + */ +@Serializable +data class SetGroupBanEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonElement? = null +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "set_group_ban" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupCardEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupCardEvent.kt new file mode 100644 index 0000000..2a08494 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupCardEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement + +/** + * SetGroupCard事件 + * @property data 响应数据 + */ +@Serializable +data class SetGroupCardEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonElement? = null +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "set_group_card" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupKickEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupKickEvent.kt new file mode 100644 index 0000000..475bf27 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupKickEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement + +/** + * SetGroupKick事件 + * @property data 响应数据 + */ +@Serializable +data class SetGroupKickEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonElement? = null +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "set_group_kick" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupKickMembersEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupKickMembersEvent.kt new file mode 100644 index 0000000..d9ea2c9 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupKickMembersEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement + +/** + * SetGroupKickMembers事件 + * @property data 响应数据 + */ +@Serializable +data class SetGroupKickMembersEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonElement? = null +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "set_group_kick_members" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupLeaveEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupLeaveEvent.kt new file mode 100644 index 0000000..095de87 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupLeaveEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement + +/** + * SetGroupLeave事件 + * @property data 响应数据 + */ +@Serializable +data class SetGroupLeaveEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonElement? = null +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "set_group_leave" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupNameEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupNameEvent.kt new file mode 100644 index 0000000..0dd58af --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupNameEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement + +/** + * SetGroupName事件 + * @property data 响应数据 + */ +@Serializable +data class SetGroupNameEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonElement? = null +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "set_group_name" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupPortraitEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupPortraitEvent.kt new file mode 100644 index 0000000..f18ad97 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupPortraitEvent.kt @@ -0,0 +1,38 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +/** + * SetGroupPortrait事件 + * @property data 响应数据 + */ + +@Serializable +data class SetGroupPortraitEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: Data +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + + @Serializable + data class Data( + //TODO: 文档里Data result字段类型存疑(返回响应与示例不一致),需验证 + // https://napcat.apifox.cn/226658669e0 + val result: String, + val errMsg: String + ) + override fun subtype(): String { + return "set_group_portrait" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupRemarkEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupRemarkEvent.kt new file mode 100644 index 0000000..c85133c --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupRemarkEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement + +/** + * SetGroupRemark事件 + * @property data 响应数据 + */ +@Serializable +data class SetGroupRemarkEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonElement? = null, +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "set_group_remark" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupRobotAddOptionEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupRobotAddOptionEvent.kt new file mode 100644 index 0000000..f41f3ca --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupRobotAddOptionEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement + +/** + * SetGroupRobotAddOption事件 + * @property data 响应数据 + */ +@Serializable +data class SetGroupRobotAddOptionEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonElement? = null +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "set_group_robot_add_option" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupSearchEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupSearchEvent.kt new file mode 100644 index 0000000..8c8d0f5 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupSearchEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement + +/** + * SetGroupSearch事件 + * @property data 响应数据 + */ +@Serializable +data class SetGroupSearchEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonElement? = null, +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "set_group_search" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupSignEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupSignEvent.kt new file mode 100644 index 0000000..82fde77 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupSignEvent.kt @@ -0,0 +1,18 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.Serializable +import top.r3944realms.ltdmanager.napcat.events.NapCatEvent + +/** + * SetGroupSign事件 + */ +@Serializable +class SetGroupSignEvent : NapCatEvent() { + override fun type(): String { + return "group/" + subtype() + } + override fun subtype(): String { + return "set_group_sign" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupSpecialTitleEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupSpecialTitleEvent.kt new file mode 100644 index 0000000..97c6dd4 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupSpecialTitleEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement + +/** + * SetGroupSpecialTitle事件 + * @property data 响应数据 + */ +@Serializable +data class SetGroupSpecialTitleEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonElement? = null +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "set_group_special_title" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupWholeBanEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupWholeBanEvent.kt new file mode 100644 index 0000000..c67a423 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/group/SetGroupWholeBanEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.group + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement + +/** + * SetGroupWholeBan事件 + * @property data 响应数据 + */ +@Serializable +data class SetGroupWholeBanEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonElement? = null +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "set_group_whole_ban" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/AbstractMessageEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/AbstractMessageEvent.kt index 38220b5..d8a45de 100644 --- a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/AbstractMessageEvent.kt +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/AbstractMessageEvent.kt @@ -5,7 +5,16 @@ import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json import kotlinx.serialization.modules.SerializersModule import kotlinx.serialization.modules.polymorphic +import kotlinx.serialization.modules.subclass import top.r3944realms.ltdmanager.napcat.events.NapCatEvent +import top.r3944realms.ltdmanager.napcat.events.message.group.ForwardGroupSingleMsgEvent +import top.r3944realms.ltdmanager.napcat.events.message.group.GroupPokeEvent +import top.r3944realms.ltdmanager.napcat.events.message.group.SendGroupForwardMsgEvent +import top.r3944realms.ltdmanager.napcat.events.message.personal.ForwardFriendSingleMsgEvent +import top.r3944realms.ltdmanager.napcat.events.message.personal.FriendPokeEvent +import top.r3944realms.ltdmanager.napcat.events.message.personal.SendPrivateForwardMsgEvent +import top.r3944realms.ltdmanager.napcat.events.other.SendGroupMsgEvent +import top.r3944realms.ltdmanager.napcat.events.other.SendPrivateMsgEvent /** * QQ 消息相关响应抽象 @@ -43,7 +52,26 @@ abstract class AbstractMessageEvent ( companion object { val eventTypeMap by lazy { mutableMapOf>().apply { - + put("message/send_group_msg", SendGroupMsgEvent.serializer()) + put("message/send_group_forward_msg", SendGroupForwardMsgEvent.serializer()) + put("message/forward_group_single_msg", ForwardGroupSingleMsgEvent.serializer()) + put("message/group_poke", GroupPokeEvent.serializer()) + put("message/send_private_msg", SendPrivateMsgEvent.serializer()) + put("message/send_private_forward_msg", SendPrivateForwardMsgEvent.serializer()) + put("message/forward_friend_single_msg", ForwardFriendSingleMsgEvent.serializer()) + put("message/friend_poke", FriendPokeEvent.serializer()) + put("message/send_poke", SendPokeEvent.serializer()) + put("message/delete_msg", DeleteMsgEvent.serializer()) + put("message/get_group_msg_history", GetGroupMsgHistoryEvent.serializer()) + put("message/get_friend_msg_history", GetFriendMsgHistoryEvent.serializer()) + put("message/get_msg", GetMsgEvent.serializer()) + put("message/get_forward_msg", GetForwardMsgEvent.serializer()) + put("message/send_forward_msg", SendForwardMsgEvent.serializer()) + put("message/set_msg_emoji_like", SetMsgEmojiLikeEvent.serializer()) + put("message/fetch_emoji_like", FetchEmojiLikeEvent.serializer()) + put("message/get_record", GetRecordEvent.serializer()) + put("message/get_image", GetImageEvent.serializer()) + put("message/send_group_ai_record", SendGroupAiRecordEvent.serializer()) } } internal val json: Json by lazy { @@ -51,7 +79,26 @@ abstract class AbstractMessageEvent ( ignoreUnknownKeys = true serializersModule = SerializersModule { polymorphic(NapCatEvent::class) { - + subclass(SendGroupMsgEvent::class) + subclass(SendGroupForwardMsgEvent::class) + subclass(ForwardGroupSingleMsgEvent::class) + subclass(GroupPokeEvent::class) + subclass(SendPrivateMsgEvent::class) + subclass(SendPrivateForwardMsgEvent::class) + subclass(ForwardFriendSingleMsgEvent::class) + subclass(FriendPokeEvent::class) + subclass(SendPokeEvent::class) + subclass(DeleteMsgEvent::class) + subclass(GetGroupMsgHistoryEvent::class) + subclass(GetFriendMsgHistoryEvent::class) + subclass(GetMsgEvent::class) + subclass(GetForwardMsgEvent::class) + subclass(SendForwardMsgEvent::class) + subclass(SetMsgEmojiLikeEvent::class) + subclass(FetchEmojiLikeEvent::class) + subclass(GetRecordEvent::class) + subclass(GetImageEvent::class) + subclass(SendGroupAiRecordEvent::class) } } } diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/DeleteMsgEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/DeleteMsgEvent.kt new file mode 100644 index 0000000..6b3aa32 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/DeleteMsgEvent.kt @@ -0,0 +1,32 @@ + +package top.r3944realms.ltdmanager.napcat.events.message + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement +import top.r3944realms.ltdmanager.napcat.events.group.AbstractGroupEvent + +/** + * DeleteMsg事件 + * @property data 响应数据 + */ +@Serializable +data class DeleteMsgEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonElement? = null, + ) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "delete_msg" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/FetchEmojiLikeEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/FetchEmojiLikeEvent.kt new file mode 100644 index 0000000..fcf39db --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/FetchEmojiLikeEvent.kt @@ -0,0 +1,35 @@ + +package top.r3944realms.ltdmanager.napcat.events.message + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import top.r3944realms.ltdmanager.napcat.events.group.AbstractGroupEvent + +/** + * FetchEmojiLike事件 + * @property data 响应数据 + */ +@Serializable +data class FetchEmojiLikeEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: Data +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Data( + val result: Double, + val errMsg: String? = null, + ) + override fun subtype(): String { + return "fetch_emoji_like" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/GetForwardMsgEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/GetForwardMsgEvent.kt new file mode 100644 index 0000000..69fdf64 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/GetForwardMsgEvent.kt @@ -0,0 +1,172 @@ + +package top.r3944realms.ltdmanager.napcat.events.message + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import top.r3944realms.ltdmanager.napcat.data.MessageType +import top.r3944realms.ltdmanager.napcat.data.Qq +import top.r3944realms.ltdmanager.napcat.data.Sender +import top.r3944realms.ltdmanager.napcat.events.group.AbstractGroupEvent + +/** + * GetForwardMsg事件 + * @property data 响应数据 + */ +@Serializable +data class GetForwardMsgEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: Data +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Data ( + val messages: List + ) + /** + * 获取合并转发消息 + */ + @Serializable + data class Msg ( + val font: Double, + + @SerialName("group_id") + val groupID: Double? = null, + + val message: List, + + @SerialName("message_format") + val messageFormat: String, + + @SerialName("message_id") + val messageID: Double, + + @SerialName("message_seq") + val messageSeq: Double, + + @SerialName("message_type") + val messageType: String, + + @SerialName("post_type") + val postType: String, + + @SerialName("raw_message") + val rawMessage: String, + + @SerialName("real_id") + val realID: Double, + + @SerialName("real_seq") + val realSeq: String, + + @SerialName("self_id") + val selfID: Double, + + val sender: Sender, + + @SerialName("sub_type") + val subType: String, + + val time: Double, + + @SerialName("user_id") + val userID: Double + ) + /** + * 文本消息 + * + * 艾特消息 + * + * 表情消息 + * + * 图片消息 + * + * 回复消息 + * + * JSON消息 + * + * 语音消息 + * + * 视频消息 + * + * markdown消息 + * + * 获取合并转发消息 + */ + @Serializable + data class Message ( + val data: MessageData? = null, + val type: MessageType? = null, + val font: Double? = null, + + @SerialName("group_id") + val groupID: Double? = null, + + val message: List? = null, + + @SerialName("message_format") + val messageFormat: String? = null, + + @SerialName("message_id") + val messageID: Double? = null, + + @SerialName("message_seq") + val messageSeq: Double? = null, + + @SerialName("message_type") + val messageType: String? = null, + + @SerialName("post_type") + val postType: String? = null, + + @SerialName("raw_message") + val rawMessage: String? = null, + + @SerialName("real_id") + val realID: Double? = null, + + @SerialName("real_seq") + val realSeq: String? = null, + + @SerialName("self_id") + val selfID: Double? = null, + + val sender: Sender? = null, + + @SerialName("sub_type") + val subType: String? = null, + + val time: Double? = null, + + @SerialName("user_id") + val userID: Double? = null + ) + @Serializable + data class MessageData ( + val text: String? = null, + val name: String? = null, + val qq: Qq? = null, + val id: Qq? = null, + val file: String? = null, + + /** + * 外显 + */ + val summary: String? = null, + + val data: String? = null, + val content: String? = null + ) + override fun subtype(): String { + return "get_forward_msg" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/GetFriendMsgHistoryEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/GetFriendMsgHistoryEvent.kt new file mode 100644 index 0000000..139a51d --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/GetFriendMsgHistoryEvent.kt @@ -0,0 +1,136 @@ + +package top.r3944realms.ltdmanager.napcat.events.message + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import top.r3944realms.ltdmanager.napcat.data.MessageType +import top.r3944realms.ltdmanager.napcat.data.Qq +import top.r3944realms.ltdmanager.napcat.data.Sender +import top.r3944realms.ltdmanager.napcat.events.group.AbstractGroupEvent + +/** + * GetFriendMsgHistory事件 + * @property data 响应数据 + */ +@Serializable +data class GetFriendMsgHistoryEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: Data +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Data ( + val messages: List + ) + @Serializable + sealed class Content { + class StringValue(val value: String) : Content() + class SpecificMsgList(val value: List) : Content() + } + @Serializable + data class MessageData ( + val text: String? = null, + val name: String? = null, + val qq: Qq? = null, + val id: Qq? = null, + val file: String? = null, + + /** + * 外显 + */ + val summary: String? = null, + + val data: String? = null, + val content: Content? = null + ) + /** + * 文本消息 + * + * 艾特消息 + * + * 表情消息 + * + * 图片消息 + * + * 文件消息 + * + * 回复消息 + * + * JSON消息 + * + * 语音消息 + * + * 视频消息 + * + * markdown消息 + * + * 消息forward + */ + @Serializable + data class Message ( + val data: MessageData, + val type: MessageType + ) + /** + * 消息详情 + */ + @Serializable + data class SpecificMsg ( + val font: Double, + + @SerialName("group_id") + val groupID: Double? = null, + + val message: List, + + @SerialName("message_format") + val messageFormat: String, + + @SerialName("message_id") + val messageID: Double, + + @SerialName("message_seq") + val messageSeq: Double, + + @SerialName("message_type") + val messageType: String, + + @SerialName("post_type") + val postType: String, + + @SerialName("raw_message") + val rawMessage: String, + + @SerialName("real_id") + val realID: Double, + + @SerialName("real_seq") + val realSeq: String, + + @SerialName("self_id") + val selfID: Double, + + val sender: Sender, + + @SerialName("sub_type") + val subType: String, + + val time: Double, + + @SerialName("user_id") + val userID: Double + ) + override fun subtype(): String { + return "get_friend_msg_history" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/GetGroupMsgHistoryEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/GetGroupMsgHistoryEvent.kt new file mode 100644 index 0000000..f1c8526 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/GetGroupMsgHistoryEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.message + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import top.r3944realms.ltdmanager.napcat.events.group.AbstractGroupEvent + +/** + * GetGroupMsgHistory事件 + * @property data 响应数据 + */ +@Serializable +data class GetGroupMsgHistoryEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: GetFriendMsgHistoryEvent.Data +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "get_group_msg_history" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/GetImageEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/GetImageEvent.kt new file mode 100644 index 0000000..62263a5 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/GetImageEvent.kt @@ -0,0 +1,57 @@ + +package top.r3944realms.ltdmanager.napcat.events.message + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import top.r3944realms.ltdmanager.napcat.events.group.AbstractGroupEvent + +/** + * GetImage事件 + * @property data 响应数据 + */ +@Serializable +data class GetImageEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: Data +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Data ( + val base64: String, + + /** + * 本地路径 + */ + val file: String, + + /** + * 文件名 + */ + @SerialName("file_name") + val fileName: String, + + /** + * 文件大小 + */ + @SerialName("file_size") + val fileSize: String, + + /** + * 网络路径 + */ + val url: String + ) + override fun subtype(): String { + return "get_image" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/GetMsgEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/GetMsgEvent.kt new file mode 100644 index 0000000..7f0393f --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/GetMsgEvent.kt @@ -0,0 +1,32 @@ + +package top.r3944realms.ltdmanager.napcat.events.message + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonObject +import top.r3944realms.ltdmanager.napcat.events.group.AbstractGroupEvent + +/** + * GetMsg事件 + * @property data 响应数据 + */ +@Serializable +data class GetMsgEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonObject +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "get_msg" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/GetRecordEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/GetRecordEvent.kt new file mode 100644 index 0000000..5bd07ee --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/GetRecordEvent.kt @@ -0,0 +1,31 @@ + +package top.r3944realms.ltdmanager.napcat.events.message + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import top.r3944realms.ltdmanager.napcat.events.group.AbstractGroupEvent + +/** + * GetRecord事件 + * @property data 响应数据 + */ +@Serializable +data class GetRecordEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: GetImageEvent.Data +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "get_record" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/SendForwardMsgEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/SendForwardMsgEvent.kt new file mode 100644 index 0000000..b422454 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/SendForwardMsgEvent.kt @@ -0,0 +1,32 @@ + +package top.r3944realms.ltdmanager.napcat.events.message + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonObject +import top.r3944realms.ltdmanager.napcat.events.group.AbstractGroupEvent + +/** + * SendForwardMsg事件 + * @property data 响应数据 + */ +@Serializable +data class SendForwardMsgEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonObject +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "send_forward_msg" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/SendGroupAiRecordEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/SendGroupAiRecordEvent.kt new file mode 100644 index 0000000..1368f50 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/SendGroupAiRecordEvent.kt @@ -0,0 +1,36 @@ + +package top.r3944realms.ltdmanager.napcat.events.message + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import top.r3944realms.ltdmanager.napcat.events.group.AbstractGroupEvent + +/** + * SendGroupAiRecord事件 + * @property data 响应数据 + */ +@Serializable +data class SendGroupAiRecordEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: Data +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Data ( + @SerialName("message_id") + val messageID: String + ) + override fun subtype(): String { + return "send_group_ai_record" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/SendPokeEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/SendPokeEvent.kt new file mode 100644 index 0000000..1057271 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/SendPokeEvent.kt @@ -0,0 +1,32 @@ + +package top.r3944realms.ltdmanager.napcat.events.message + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement +import top.r3944realms.ltdmanager.napcat.events.group.AbstractGroupEvent + +/** + * SendPoke事件 + * @property data 响应数据 + */ +@Serializable +data class SendPokeEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonElement? = null +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "send_poke" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/SetMsgEmojiLikeEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/SetMsgEmojiLikeEvent.kt new file mode 100644 index 0000000..84c53d2 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/SetMsgEmojiLikeEvent.kt @@ -0,0 +1,41 @@ + +package top.r3944realms.ltdmanager.napcat.events.message + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import top.r3944realms.ltdmanager.napcat.data.EmojiLikesList +import top.r3944realms.ltdmanager.napcat.events.group.AbstractGroupEvent + +/** + * SetMsgEmojiLike事件 + * @property data 响应数据 + */ +@Serializable +data class SetMsgEmojiLikeEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: Data +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Data ( + val cookie: String, + val emojiLikesList: List, + val errMsg: String, + val isFirstPage: Boolean, + val isLastPage: Boolean, + val result: Double + ) + + override fun subtype(): String { + return "set_msg_emoji_like" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/group/ForwardGroupSingleMsgEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/group/ForwardGroupSingleMsgEvent.kt new file mode 100644 index 0000000..e6f35d3 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/group/ForwardGroupSingleMsgEvent.kt @@ -0,0 +1,33 @@ + +package top.r3944realms.ltdmanager.napcat.events.message.group + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement +import top.r3944realms.ltdmanager.napcat.events.NapCatEvent +import top.r3944realms.ltdmanager.napcat.events.group.AbstractGroupEvent + +/** + * ForwardGroupSingleMsg事件 + * @property data 响应数据 + */ +@Serializable +data class ForwardGroupSingleMsgEvent( + @Transient + val status0: NapCatEvent.Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonElement? = null, + ) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "forward_group_single_msg" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/group/GroupPokeEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/group/GroupPokeEvent.kt new file mode 100644 index 0000000..6c03f27 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/group/GroupPokeEvent.kt @@ -0,0 +1,29 @@ + +package top.r3944realms.ltdmanager.napcat.events.message.group + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import top.r3944realms.ltdmanager.napcat.events.group.AbstractGroupEvent + +/** + * GroupPoke事件 + */ +@Serializable +data class GroupPokeEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "group_poke" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/group/SendGroupForwardMsgEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/group/SendGroupForwardMsgEvent.kt new file mode 100644 index 0000000..0b2aba6 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/group/SendGroupForwardMsgEvent.kt @@ -0,0 +1,39 @@ + +package top.r3944realms.ltdmanager.napcat.events.message.group + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import top.r3944realms.ltdmanager.napcat.events.NapCatEvent +import top.r3944realms.ltdmanager.napcat.events.group.AbstractGroupEvent + +/** + * SendGroupForwardMsg事件 + * @property data 响应数据 + */ +@Serializable +data class SendGroupForwardMsgEvent( + @Transient + val status0: NapCatEvent.Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: Data + ) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Data( + @SerialName("message_id") + val messageId: Double, + @SerialName("res_id") + val resId:String + ) + override fun subtype(): String { + return "send_group_forward_msg" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/group/SendGroupMsgEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/group/SendGroupMsgEvent.kt new file mode 100644 index 0000000..a83d31b --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/group/SendGroupMsgEvent.kt @@ -0,0 +1,36 @@ + +package top.r3944realms.ltdmanager.napcat.events.message.group + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import top.r3944realms.ltdmanager.napcat.events.group.AbstractGroupEvent + +/** + * SendGroupMsg事件 + * @property data 响应数据 + */ +@Serializable +data class SendGroupMsgEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: Data + ) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Data( + @SerialName("message_id") + val messageId: Double, + ) + override fun subtype(): String { + return "send_group_msg" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/personal/ForwardFriendSingleMsgEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/personal/ForwardFriendSingleMsgEvent.kt new file mode 100644 index 0000000..0b289b0 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/personal/ForwardFriendSingleMsgEvent.kt @@ -0,0 +1,32 @@ + +package top.r3944realms.ltdmanager.napcat.events.message.personal + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement +import top.r3944realms.ltdmanager.napcat.events.group.AbstractGroupEvent + +/** + * ForwardFriendSingleMsg事件 + * @property data 响应数据 + */ +@Serializable +data class ForwardFriendSingleMsgEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonElement? = null, +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "forward_friend_single_msg" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/personal/FriendPokeEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/personal/FriendPokeEvent.kt new file mode 100644 index 0000000..0123594 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/personal/FriendPokeEvent.kt @@ -0,0 +1,28 @@ + +package top.r3944realms.ltdmanager.napcat.events.message.personal + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import top.r3944realms.ltdmanager.napcat.events.group.AbstractGroupEvent + +/** + * FriendPoke事件 + */ +@Serializable +data class FriendPokeEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "friend_poke" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/personal/SendPrivateForwardMsgEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/personal/SendPrivateForwardMsgEvent.kt new file mode 100644 index 0000000..fe1a2e4 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/personal/SendPrivateForwardMsgEvent.kt @@ -0,0 +1,32 @@ + +package top.r3944realms.ltdmanager.napcat.events.message.personal + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonElement +import top.r3944realms.ltdmanager.napcat.events.group.AbstractGroupEvent + +/** + * SendPrivateForwardMsg事件 + * @property data 响应数据 + */ +@Serializable +data class SendPrivateForwardMsgEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: JsonElement? = null, +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + + override fun subtype(): String { + return "send_private_forward_msg" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/personal/SendPrivateMsgEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/personal/SendPrivateMsgEvent.kt new file mode 100644 index 0000000..d0422f1 --- /dev/null +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/message/personal/SendPrivateMsgEvent.kt @@ -0,0 +1,36 @@ + +package top.r3944realms.ltdmanager.napcat.events.message.personal + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import top.r3944realms.ltdmanager.napcat.events.group.AbstractGroupEvent + +/** + * SendPrivateMsg事件 + * @property data 响应数据 + */ +@Serializable +data class SendPrivateMsgEvent( + @Transient + val status0: Status = Status.Ok, + @Transient + val retcode0: Double = 0.0, + @Transient + val message0: String = "", + @Transient + val wording0: String = "", + @Transient + val echo0: String? = null, + + val data: Data +) : AbstractGroupEvent(status0, retcode0, message0, wording0, echo0) { + @Serializable + data class Data( + @SerialName("message_id") + val messageId: Double, + ) + override fun subtype(): String { + return "send_private_msg" + } +} diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/other/AbstractOtherEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/other/AbstractOtherEvent.kt index de7796f..05a686f 100644 --- a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/other/AbstractOtherEvent.kt +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/other/AbstractOtherEvent.kt @@ -5,6 +5,7 @@ import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json import kotlinx.serialization.modules.SerializersModule import kotlinx.serialization.modules.polymorphic +import kotlinx.serialization.modules.subclass import top.r3944realms.ltdmanager.napcat.events.NapCatEvent /** * QQ 其它相关响应抽象 @@ -42,7 +43,15 @@ abstract class AbstractOtherEvent ( companion object { val eventTypeMap by lazy { mutableMapOf>().apply { - + put("/send_private_msg",SendPrivateMsgEvent.serializer()) + put("/send_group_msg",SendGroupMsgEvent.serializer()) + put("/send_msg",SendMsgEvent.serializer()) + put("/unknown",UnknownEvent.serializer()) + put("/get_guild_list", GetGuildListEvent.serializer()) + put("/get_guild_service_profile", GetGuildServiceProfileEvent.serializer()) + put("/check_url_safely", CheckUrlSafelyEvent.serializer()) + put("/get_collection_list", GetCollectionListEvent.serializer()) + put("/get_group_ignore_add_request", GetGroupIgnoreAddRequestEvent.serializer()) } } internal val json: Json by lazy { @@ -50,6 +59,15 @@ abstract class AbstractOtherEvent ( ignoreUnknownKeys = true serializersModule = SerializersModule { polymorphic(NapCatEvent::class) { + subclass(SendPrivateMsgEvent::class) + subclass(SendGroupMsgEvent::class) + subclass(SendMsgEvent::class) + subclass(UnknownEvent::class) + subclass(GetGuildListEvent::class) + subclass(GetGuildServiceProfileEvent::class) + subclass(CheckUrlSafelyEvent::class) + subclass(GetCollectionListEvent::class) + subclass(GetGroupIgnoreAddRequestEvent::class) } } diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/passkey/AbstractPassKeyEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/passkey/AbstractPassKeyEvent.kt index 6a6783a..0096e56 100644 --- a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/passkey/AbstractPassKeyEvent.kt +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/passkey/AbstractPassKeyEvent.kt @@ -1,9 +1,11 @@ package top.r3944realms.ltdmanager.napcat.events.passkey import kotlinx.serialization.KSerializer +import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json import kotlinx.serialization.modules.SerializersModule import kotlinx.serialization.modules.polymorphic +import kotlinx.serialization.modules.subclass import top.r3944realms.ltdmanager.napcat.events.NapCatEvent /** @@ -14,6 +16,7 @@ import top.r3944realms.ltdmanager.napcat.events.NapCatEvent * @property wording 文字描述 * @property echo 回显字段 (可空) */ +@Serializable abstract class AbstractPassKeyEvent ( /** * 状态字符串 @@ -41,7 +44,13 @@ abstract class AbstractPassKeyEvent ( companion object { val eventTypeMap by lazy { mutableMapOf>().apply { - + put("passkey/get_clientkey", GetClientkeyEvent.serializer()) + put("passkey/get_cookies", GetCookiesEvent.serializer()) + put ("passkey/get_csrf_token", GetCsrfTokenEvent.serializer()) + put("passkey/get_credentials", GetCredentialsEvent.serializer()) + put("passkey/get_rkey", GetRkeyEvent.serializer()) + put("passkey/nc_get_rkey", NcGetRkeyEvent.serializer()) + put("passkey/get_rkey_server", GetRkeyServerEvent.serializer()) } } internal val json: Json by lazy { @@ -49,7 +58,13 @@ abstract class AbstractPassKeyEvent ( ignoreUnknownKeys = true serializersModule = SerializersModule { polymorphic(NapCatEvent::class) { - + subclass(GetClientkeyEvent::class) + subclass(GetCookiesEvent::class) + subclass(GetCsrfTokenEvent::class) + subclass(GetCredentialsEvent::class) + subclass(GetRkeyEvent::class) + subclass(NcGetRkeyEvent::class) + subclass(GetRkeyServerEvent::class) } } } diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/personal/AbstractPersonalEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/personal/AbstractPersonalEvent.kt index 82a4aaa..c56d99d 100644 --- a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/personal/AbstractPersonalEvent.kt +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/personal/AbstractPersonalEvent.kt @@ -5,6 +5,7 @@ import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json import kotlinx.serialization.modules.SerializersModule import kotlinx.serialization.modules.polymorphic +import kotlinx.serialization.modules.subclass import top.r3944realms.ltdmanager.napcat.events.NapCatEvent /** @@ -43,7 +44,15 @@ abstract class AbstractPersonalEvent ( companion object { val eventTypeMap by lazy { mutableMapOf>().apply { - + put("personal/ocr_image", OcrImageEvent.serializer()) + put("personal/.ocr_image", PointOcrImageEvent.serializer()) + put("personal/translate_en2zh", TranslateEn2zhEvent.serializer()) + put("personal/.handle_quick_operation", PointHandleQuickOperationEvent.serializer()) + put("personal/can_send_image", CanSendImageEvent.serializer()) + put("personal/can_send_record", CanSendRecordEvent.serializer()) + put("personal/get_ai_characters", GetAiCharactersEvent.serializer()) + put("personal/click_inline_keyboard_button", ClickInlineKeyboardButtonEvent.serializer()) + put("personal/get_ai_record", GetAiRecordEvent.serializer()) } } internal val json: Json by lazy { @@ -51,7 +60,15 @@ abstract class AbstractPersonalEvent ( ignoreUnknownKeys = true serializersModule = SerializersModule { polymorphic(NapCatEvent::class) { - + subclass(OcrImageEvent::class) + subclass(PointOcrImageEvent::class) + subclass(TranslateEn2zhEvent::class) + subclass(PointHandleQuickOperationEvent::class) + subclass(CanSendImageEvent::class) + subclass(CanSendRecordEvent::class) + subclass(GetAiCharactersEvent::class) + subclass(ClickInlineKeyboardButtonEvent::class) + subclass(GetAiRecordEvent::class) } } } diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/system/AbstractSystemEvent.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/system/AbstractSystemEvent.kt index cd9f730..0ca55d9 100644 --- a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/system/AbstractSystemEvent.kt +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/events/system/AbstractSystemEvent.kt @@ -4,6 +4,7 @@ import kotlinx.serialization.KSerializer import kotlinx.serialization.json.Json import kotlinx.serialization.modules.SerializersModule import kotlinx.serialization.modules.polymorphic +import kotlinx.serialization.modules.subclass import top.r3944realms.ltdmanager.napcat.events.NapCatEvent abstract class AbstractSystemEvent @@ -12,7 +13,11 @@ abstract class AbstractSystemEvent companion object { val eventTypeMap by lazy { mutableMapOf>().apply { - + put("system/get_robot_uin_range", GetRobotUinRangeEvent.serializer()) + put("system/bot_exit",BotExitEvent.serializer()) + put("system/send_packet", SendPacketEvent.serializer()) + put("system/nc_get_packet_status", NcGetPacketStatusEvent.serializer()) + put("system/get_version_info", GetVersionInfoEvent.serializer()) } } internal val json: Json by lazy { @@ -20,7 +25,11 @@ abstract class AbstractSystemEvent ignoreUnknownKeys = true serializersModule = SerializersModule { polymorphic(NapCatEvent::class) { - + subclass(GetRobotUinRangeEvent::class) + subclass(BotExitEvent::class) + subclass(SendPacketEvent::class) + subclass(NcGetPacketStatusEvent::class) + subclass(GetVersionInfoEvent::class) } } } diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/requests/account/ArkShareGroupRequest.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/requests/account/ArkShareGroupRequest.kt index 17c0765..81399ac 100644 --- a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/requests/account/ArkShareGroupRequest.kt +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/requests/account/ArkShareGroupRequest.kt @@ -5,6 +5,9 @@ import kotlinx.serialization.Serializable import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json +/** + * 获取推荐群聊卡片 + */ @Serializable data class ArkShareGroupRequest( @SerialName("group_id") diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/requests/account/SetOnlineStatusRequest.kt b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/requests/account/SetOnlineStatusRequest.kt index 58d7c8d..9f48287 100644 --- a/src/main/kotlin/top/r3944realms/ltdmanager/napcat/requests/account/SetOnlineStatusRequest.kt +++ b/src/main/kotlin/top/r3944realms/ltdmanager/napcat/requests/account/SetOnlineStatusRequest.kt @@ -24,5 +24,55 @@ data class SetOnlineStatusRequest( override fun toJSON(): String = Json.encodeToString(this) override fun path(): String = "/set_online_status" + companion object { + // Basic statuses + val ONLINE = SetOnlineStatusRequest(0.0, 0.0, 10.0) + val Q_ME = SetOnlineStatusRequest(0.0, 0.0, 60.0) + val AWAY = SetOnlineStatusRequest(0.0, 0.0, 30.0) + val BUSY = SetOnlineStatusRequest(0.0, 0.0, 50.0) + val DO_NOT_DISTURB = SetOnlineStatusRequest(0.0, 0.0, 70.0) + val INVISIBLE = SetOnlineStatusRequest(0.0, 0.0, 40.0) + // Extended statuses (all with status = 10.0) + val LISTENING_TO_MUSIC = SetOnlineStatusRequest(0.0, 1028.0, 10.0) + val SPRING_LIMITED = SetOnlineStatusRequest(0.0, 2037.0, 10.0) + val PLAYING_YUANMENG = SetOnlineStatusRequest(0.0, 2025.0, 10.0) + val LOOKING_FOR_STAR_PARTNER = SetOnlineStatusRequest(0.0, 2026.0, 10.0) + val DRAINED = SetOnlineStatusRequest(0.0, 2014.0, 10.0) + val TODAYS_WEATHER = SetOnlineStatusRequest(0.0, 1030.0, 10.0) + val I_CRASHED = SetOnlineStatusRequest(0.0, 2019.0, 10.0) + val LOVE_YOU = SetOnlineStatusRequest(0.0, 2006.0, 10.0) + val IN_LOVE = SetOnlineStatusRequest(0.0, 1051.0, 10.0) + val GOOD_LUCK_KOI = SetOnlineStatusRequest(0.0, 1071.0, 10.0) + val MERCURY_RETROGRADE = SetOnlineStatusRequest(0.0, 1201.0, 10.0) + val HAVING_FUN = SetOnlineStatusRequest(0.0, 1056.0, 10.0) + val FULL_OF_ENERGY = SetOnlineStatusRequest(0.0, 1058.0, 10.0) + val BABY_CERTIFIED = SetOnlineStatusRequest(0.0, 1070.0, 10.0) + val COMPLICATED = SetOnlineStatusRequest(0.0, 1063.0, 10.0) + val RARE_CONFUSION = SetOnlineStatusRequest(0.0, 2001.0, 10.0) + val EMO = SetOnlineStatusRequest(0.0, 1401.0, 10.0) + val LIFE_IS_HARD = SetOnlineStatusRequest(0.0, 1062.0, 10.0) + val I_UNDERSTAND = SetOnlineStatusRequest(0.0, 2013.0, 10.0) + val IM_OKAY = SetOnlineStatusRequest(0.0, 1052.0, 10.0) + val WANT_SILENCE = SetOnlineStatusRequest(0.0, 1061.0, 10.0) + val LEISURELY = SetOnlineStatusRequest(0.0, 1059.0, 10.0) + val TRAVELING = SetOnlineStatusRequest(0.0, 2015.0, 10.0) + val WEAK_SIGNAL = SetOnlineStatusRequest(0.0, 1011.0, 10.0) + val GOING_OUT = SetOnlineStatusRequest(0.0, 2003.0, 10.0) + val DOING_HOMEWORK = SetOnlineStatusRequest(0.0, 2012.0, 10.0) + val STUDYING = SetOnlineStatusRequest(0.0, 1018.0, 10.0) + val WORKING_HARD = SetOnlineStatusRequest(0.0, 2023.0, 10.0) + val SLACKING_OFF = SetOnlineStatusRequest(0.0, 1300.0, 10.0) + val BORED = SetOnlineStatusRequest(0.0, 1060.0, 10.0) + val PLAYING_GAMES = SetOnlineStatusRequest(0.0, 1027.0, 10.0) + val SLEEPING = SetOnlineStatusRequest(0.0, 1016.0, 10.0) + val STAYING_UP_LATE = SetOnlineStatusRequest(0.0, 1032.0, 10.0) + val WATCHING_DRAMA = SetOnlineStatusRequest(0.0, 1021.0, 10.0) + val BATTERY_STATUS = SetOnlineStatusRequest(0.0, 1000.0, 10.0) + + // Helper function to create custom battery status + fun withBatteryLevel(batteryLevel: Double, baseStatus: SetOnlineStatusRequest): SetOnlineStatusRequest { + return baseStatus.copy(batteryStatus = batteryLevel) + } + } } \ No newline at end of file