use crate::{event::message::Anonymous, traits::EndPoint, MessageSegment};
use onebot_v11_macro::{endpoint, ApiDataDerive};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Eq, ApiDataDerive)]
pub enum ApiPayload {
SendPrivateMsg(SendPrivateMsg),
SendGroupMsg(SendGroupMsg),
SendMsg(SendMsg),
DeleteMsg(DeleteMsg),
GetMsg(GetMsg),
GetForwardMsg(GetForwardMsg),
SendLike(SendLike),
SetGroupKick(SetGroupKick),
SetGroupBan(SetGroupBan),
SetGroupAnonymousBan(SetGroupAnonymousBan),
SetGroupWholeBan(SetGroupWholeBan),
SetGroupAdmin(SetGroupAdmin),
SetGroupAnonymous(SetGroupAnonymous),
SetGroupCard(SetGroupCard),
SetGroupName(SetGroupName),
SetGroupLeave(SetGroupLeave),
SetGroupSpecialTitle(SetGroupSpecialTitle),
SetFriendAddRequest(SetFriendAddRequest),
SetGroupAddRequest(SetGroupAddRequest),
GetLoginInfo(GetLoginInfo),
GetStrangerInfo(GetStrangerInfo),
GetFriendList(GetFriendList),
GetGroupInfo(GetGroupInfo),
GetGroupList(GetGroupList),
GetGroupMemberInfo(GetGroupMemberInfo),
GetGroupMemberList(GetGroupMemberList),
GetGroupHonorInfo(GetGroupHonorInfo),
GetCookies(GetCookies),
GetCsrfToken(GetCsrfToken),
GetCredentials(GetCredentials),
GetRecord(GetRecord),
GetImage(GetImage),
CanSendImage(CanSendImage),
CanSendRecord(CanSendRecord),
GetStatus(GetStatus),
GetVersionInfo(GetVersionInfo),
SetRestart(SetRestart),
CleanCache(CleanCache),
SetQQAvatar(SetQQAvatar),
GetGroupSystemMsg(GetGroupSystemMsg),
GetFile(GetFile),
ForwardFriendSingleMsg(ForwardFriendSingleMsg),
ForwardGroupSingleMsg(ForwardGroupSingleMsg),
SetMsgEmojiLike(SetMsgEmojiLike),
MarkPrivateMsgAsRead(MarkPrivateMsgAsRead),
MarkGroupMsgAsRead(MarkGroupMsgAsRead),
GetRobotUinRange(GetRobotUinRange),
SetOnlineStatus(SetOnlineStatus),
GetFriendsWithCategory(GetFriendsWithCategory),
GetGroupFileCount(GetGroupFileCount),
GetGroupFileList(GetGroupFileList),
SetGroupFileFolder(SetGroupFileFolder),
DelGroupFile(DelGroupFile),
DelGroupFileFolder(DelGroupFileFolder),
SendGroupForwardMsg(SendGroupForwardMsg),
SendPrivateForwardMsg(SendPrivateForwardMsg),
}
#[endpoint("send_private_msg")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SendPrivateMsg {
pub user_id: i64, pub message: Vec<MessageSegment>, pub auto_escape: bool, }
#[endpoint("send_group_msg")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SendGroupMsg {
pub group_id: i64, pub message: Vec<MessageSegment>, pub auto_escape: bool, }
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub enum MessageType {
#[serde(rename = "private")]
Private,
#[serde(rename = "group")]
Group,
}
#[endpoint("send_msg")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SendMsg {
pub message_type: MessageType, pub user_id: Option<i64>, pub group_id: Option<i64>, pub message: Vec<MessageSegment>, pub auto_escape: bool, }
#[endpoint("delete_msg")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct DeleteMsg {
pub message_id: i64, }
#[endpoint("get_msg")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct GetMsg {
pub message_id: i64, }
#[endpoint("get_forward_msg")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct GetForwardMsg {
pub id: String, }
#[endpoint("send_like")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SendLike {
pub user_id: i64, pub times: i64, }
#[endpoint("set_group_kick")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SetGroupKick {
pub group_id: i64, pub user_id: i64, pub reject_add_request: bool, }
#[endpoint("set_group_ban")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SetGroupBan {
pub group_id: i64, pub user_id: i64, pub duration: i64, }
#[endpoint("set_group_anonymous_ban")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SetGroupAnonymousBan {
pub group_id: i64, pub anonymous: Option<Anonymous>, pub anonymous_flag: Option<String>, pub duration: i64, }
#[endpoint("set_group_whole_ban")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SetGroupWholeBan {
pub group_id: i64, pub enable: bool, }
#[endpoint("set_group_admin")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SetGroupAdmin {
pub group_id: i64, pub user_id: i64, pub enable: bool, }
#[endpoint("set_group_anonymous")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SetGroupAnonymous {
pub group_id: i64, pub enable: bool, }
#[endpoint("set_group_card")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SetGroupCard {
pub group_id: i64, pub user_id: i64, pub card: String, }
#[endpoint("set_group_name")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SetGroupName {
pub group_id: i64, pub group_name: String, }
#[endpoint("set_group_leave")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SetGroupLeave {
pub group_id: i64, pub is_dismiss: bool, }
#[endpoint("set_group_special_title")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SetGroupSpecialTitle {
pub group_id: i64, pub user_id: i64, pub special_title: String, pub duration: i64, }
#[endpoint("set_friend_add_request")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SetFriendAddRequest {
pub flag: String, pub approve: bool, #[serde(skip_serializing_if = "Option::is_none")]
pub remark: Option<String>, }
#[endpoint(" set_group_add_request")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SetGroupAddRequest {
pub flag: String, pub sub_type: String, pub approve: bool, #[serde(skip_serializing_if = "Option::is_none")]
pub reason: Option<String>, }
#[endpoint("get_login_info")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct GetLoginInfo {}
#[endpoint("get_stranger_info")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct GetStrangerInfo {
pub user_id: i64, pub no_cache: bool, }
#[endpoint("get_friend_list")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct GetFriendList {}
#[endpoint("get_group_info")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct GetGroupInfo {
pub group_id: i64, pub no_cache: bool, }
#[endpoint("get_group_list")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct GetGroupList {}
#[endpoint("get_group_member_info")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct GetGroupMemberInfo {
pub group_id: i64, pub user_id: i64, pub no_cache: bool, }
#[endpoint("get_group_member_list")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct GetGroupMemberList {
pub group_id: i64, }
#[endpoint("get_group_honor_info")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct GetGroupHonorInfo {
pub group_id: i64, #[serde(rename = "type")]
pub honor_type: String, }
#[endpoint("get_cookies")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct GetCookies {
pub domain: String, }
#[endpoint("get_csrf_token")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct GetCsrfToken {}
#[endpoint("get_credentials")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct GetCredentials {
pub domain: String, }
#[endpoint("get_record")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct GetRecord {
pub file: String, pub out_format: String, }
#[endpoint("get_image")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct GetImage {
pub file: String, }
#[endpoint("can_send_image")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct CanSendImage {}
#[endpoint("can_send_record")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct CanSendRecord {}
#[endpoint("get_status")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct GetStatus {}
#[endpoint("get_version_info")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct GetVersionInfo {}
#[endpoint("set_restart")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SetRestart {
pub delay: i64, }
#[endpoint("clean_cache")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct CleanCache {}
#[endpoint("set_qq_avatar")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SetQQAvatar {
pub file: String, }
#[endpoint("get_group_system_msg")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct GetGroupSystemMsg {
pub group_id: i64, }
#[endpoint("get_file")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct GetFile {
pub file_id: String, }
#[endpoint("forward_friend_single_msg")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct ForwardFriendSingleMsg {
pub user_id: i64, pub message_id: i64, }
#[endpoint("forward_group_single_msg")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct ForwardGroupSingleMsg {
pub group_id: i64, pub message_id: i64, }
#[endpoint("set_msg_emoji_like")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SetMsgEmojiLike {
pub message_id: String, pub emoji_id: String, }
#[endpoint("mark_private_msg_as_read")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct MarkPrivateMsgAsRead {
pub user_id: i64, }
#[endpoint("mark_group_msg_as_read")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct MarkGroupMsgAsRead {
pub group_id: i64, }
#[endpoint("get_robot_uin_range")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct GetRobotUinRange {}
#[endpoint("set_online_status")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SetOnlineStatus {
pub status: u32, #[serde(rename = "extStatus")]
pub ext_status: u32, #[serde(rename = "batteryStatus")]
pub battery_status: u32, }
#[endpoint("get_friends_with_category")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct GetFriendsWithCategory {}
#[endpoint("get_group_file_count")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct GetGroupFileCount {
pub group_id: i64, }
#[endpoint("get_group_file_list")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct GetGroupFileList {
pub group_id: i64, pub start_index: i64, pub file_count: i64, }
#[endpoint("set_group_file_folder")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SetGroupFileFolder {
pub group_id: i64, pub folder_name: String, }
#[endpoint("del_group_file")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct DelGroupFile {
pub group_id: i64, pub file_id: String, }
#[endpoint("del_group_file_folder")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct DelGroupFileFolder {
pub group_id: i64, pub folder_id: String, }
#[endpoint("send_group_forward_msg")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SendGroupForwardMsg {
pub group_id: i64, pub messages: Vec<MessageSegment>, }
#[endpoint("send_private_forward_msg")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SendPrivateForwardMsg {
pub user_id: i64, pub messages: Vec<MessageSegment>, }