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>,
}