1use crate::{event::message::Anonymous, traits::EndPoint, MessageSegment};
2use onebot_v11_macro::{endpoint, ApiDataDerive};
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, PartialEq, Eq, ApiDataDerive)]
6pub enum ApiPayload {
7 SendPrivateMsg(SendPrivateMsg),
9 SendGroupMsg(SendGroupMsg),
11 SendMsg(SendMsg),
13 DeleteMsg(DeleteMsg),
15 GetMsg(GetMsg),
17 GetForwardMsg(GetForwardMsg),
19 SendLike(SendLike),
21 SetGroupKick(SetGroupKick),
23 SetGroupBan(SetGroupBan),
25 SetGroupAnonymousBan(SetGroupAnonymousBan),
27 SetGroupWholeBan(SetGroupWholeBan),
29 SetGroupAdmin(SetGroupAdmin),
31 SetGroupAnonymous(SetGroupAnonymous),
33 SetGroupCard(SetGroupCard),
35 SetGroupName(SetGroupName),
37 SetGroupLeave(SetGroupLeave),
39 SetGroupSpecialTitle(SetGroupSpecialTitle),
41 SetFriendAddRequest(SetFriendAddRequest),
43 SetGroupAddRequest(SetGroupAddRequest),
45 GetLoginInfo(GetLoginInfo),
47 GetStrangerInfo(GetStrangerInfo),
49 GetFriendList(GetFriendList),
51 GetGroupInfo(GetGroupInfo),
53 GetGroupList(GetGroupList),
55 GetGroupMemberInfo(GetGroupMemberInfo),
57 GetGroupMemberList(GetGroupMemberList),
59 GetGroupHonorInfo(GetGroupHonorInfo),
61 GetCookies(GetCookies),
63 GetCsrfToken(GetCsrfToken),
65 GetCredentials(GetCredentials),
67 GetRecord(GetRecord),
69 GetImage(GetImage),
71 CanSendImage(CanSendImage),
73 CanSendRecord(CanSendRecord),
75 GetStatus(GetStatus),
77 GetVersionInfo(GetVersionInfo),
79 SetRestart(SetRestart),
81 CleanCache(CleanCache),
83
84 SetQQAvatar(SetQQAvatar),
87 GetGroupSystemMsg(GetGroupSystemMsg),
89 GetFile(GetFile),
91 ForwardFriendSingleMsg(ForwardFriendSingleMsg),
93 ForwardGroupSingleMsg(ForwardGroupSingleMsg),
95 SetMsgEmojiLike(SetMsgEmojiLike),
97 MarkPrivateMsgAsRead(MarkPrivateMsgAsRead),
99 MarkGroupMsgAsRead(MarkGroupMsgAsRead),
101 GetRobotUinRange(GetRobotUinRange),
103 SetOnlineStatus(SetOnlineStatus),
105 GetFriendsWithCategory(GetFriendsWithCategory),
107 GetGroupFileCount(GetGroupFileCount),
109 GetGroupFileList(GetGroupFileList),
111 SetGroupFileFolder(SetGroupFileFolder),
113 DelGroupFile(DelGroupFile),
115 DelGroupFileFolder(DelGroupFileFolder),
117
118 SendGroupForwardMsg(SendGroupForwardMsg),
121 SendPrivateForwardMsg(SendPrivateForwardMsg),
123}
124
125#[endpoint("send_private_msg")]
127#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
128pub struct SendPrivateMsg {
129 pub user_id: i64,
131 pub message: Vec<MessageSegment>,
133 pub auto_escape: bool,
135}
136
137#[endpoint("send_group_msg")]
139#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
140pub struct SendGroupMsg {
141 pub group_id: i64,
143 pub message: Vec<MessageSegment>,
145 pub auto_escape: bool,
147}
148
149#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
150pub enum MessageType {
151 #[serde(rename = "private")]
152 Private,
153 #[serde(rename = "group")]
154 Group,
155}
156
157#[endpoint("send_msg")]
159#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
160pub struct SendMsg {
161 pub message_type: MessageType,
163 pub user_id: Option<i64>,
165 pub group_id: Option<i64>,
167 pub message: Vec<MessageSegment>,
169 pub auto_escape: bool,
171}
172
173#[endpoint("delete_msg")]
175#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
176pub struct DeleteMsg {
177 pub message_id: i64,
179}
180
181#[endpoint("get_msg")]
183#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
184pub struct GetMsg {
185 pub message_id: i64,
187}
188
189#[endpoint("get_forward_msg")]
191#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
192pub struct GetForwardMsg {
193 pub id: String,
195}
196
197#[endpoint("send_like")]
199#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
200pub struct SendLike {
201 pub user_id: i64,
203 pub times: i64,
205}
206
207#[endpoint("set_group_kick")]
209#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
210pub struct SetGroupKick {
211 pub group_id: i64,
213 pub user_id: i64,
215 pub reject_add_request: bool,
217}
218
219#[endpoint("set_group_ban")]
221#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
222pub struct SetGroupBan {
223 pub group_id: i64,
225 pub user_id: i64,
227 pub duration: i64,
229}
230
231#[endpoint("set_group_anonymous_ban")]
233#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
234pub struct SetGroupAnonymousBan {
235 pub group_id: i64,
237 pub anonymous: Option<Anonymous>,
239 pub anonymous_flag: Option<String>,
241 pub duration: i64,
243}
244
245#[endpoint("set_group_whole_ban")]
247#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
248pub struct SetGroupWholeBan {
249 pub group_id: i64,
251 pub enable: bool,
253}
254
255#[endpoint("set_group_admin")]
257#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
258pub struct SetGroupAdmin {
259 pub group_id: i64,
261 pub user_id: i64,
263 pub enable: bool,
265}
266
267#[endpoint("set_group_anonymous")]
269#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
270pub struct SetGroupAnonymous {
271 pub group_id: i64,
273 pub enable: bool,
275}
276
277#[endpoint("set_group_card")]
279#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
280pub struct SetGroupCard {
281 pub group_id: i64,
283 pub user_id: i64,
285 pub card: String,
287}
288
289#[endpoint("set_group_name")]
291#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
292pub struct SetGroupName {
293 pub group_id: i64,
295 pub group_name: String,
297}
298
299#[endpoint("set_group_leave")]
301#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
302pub struct SetGroupLeave {
303 pub group_id: i64,
305 pub is_dismiss: bool,
307}
308
309#[endpoint("set_group_special_title")]
311#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
312pub struct SetGroupSpecialTitle {
313 pub group_id: i64,
315 pub user_id: i64,
317 pub special_title: String,
319 pub duration: i64,
321}
322
323#[endpoint("set_friend_add_request")]
325#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
326pub struct SetFriendAddRequest {
327 pub flag: String,
329 pub approve: bool,
331 #[serde(skip_serializing_if = "Option::is_none")]
333 pub remark: Option<String>,
334}
335
336#[endpoint(" set_group_add_request")]
338#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
339pub struct SetGroupAddRequest {
340 pub flag: String,
342 pub sub_type: String,
344 pub approve: bool,
346 #[serde(skip_serializing_if = "Option::is_none")]
348 pub reason: Option<String>,
349}
350
351#[endpoint("get_login_info")]
353#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
354pub struct GetLoginInfo {}
355
356#[endpoint("get_stranger_info")]
358#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
359pub struct GetStrangerInfo {
360 pub user_id: i64,
362 pub no_cache: bool,
364}
365
366#[endpoint("get_friend_list")]
368#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
369pub struct GetFriendList {}
370
371#[endpoint("get_group_info")]
373#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
374pub struct GetGroupInfo {
375 pub group_id: i64,
377 pub no_cache: bool,
379}
380
381#[endpoint("get_group_list")]
383#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
384pub struct GetGroupList {}
385
386#[endpoint("get_group_member_info")]
388#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
389pub struct GetGroupMemberInfo {
390 pub group_id: i64,
392 pub user_id: i64,
394 pub no_cache: bool,
396}
397
398#[endpoint("get_group_member_list")]
400#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
401pub struct GetGroupMemberList {
402 pub group_id: i64,
404}
405
406#[endpoint("get_group_honor_info")]
408#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
409pub struct GetGroupHonorInfo {
410 pub group_id: i64,
412 #[serde(rename = "type")]
414 pub honor_type: String,
415}
416
417#[endpoint("get_cookies")]
419#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
420pub struct GetCookies {
421 pub domain: String,
423}
424
425#[endpoint("get_csrf_token")]
427#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
428pub struct GetCsrfToken {}
429
430#[endpoint("get_credentials")]
432#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
433pub struct GetCredentials {
434 pub domain: String,
436}
437
438#[endpoint("get_record")]
440#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
441pub struct GetRecord {
442 pub file: String,
444 pub out_format: String,
446}
447
448#[endpoint("get_image")]
450#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
451pub struct GetImage {
452 pub file: String,
454}
455
456#[endpoint("can_send_image")]
458#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
459pub struct CanSendImage {}
460
461#[endpoint("can_send_record")]
463#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
464pub struct CanSendRecord {}
465
466#[endpoint("get_status")]
468#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
469pub struct GetStatus {}
470
471#[endpoint("get_version_info")]
473#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
474pub struct GetVersionInfo {}
475
476#[endpoint("set_restart")]
478#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
479pub struct SetRestart {
480 pub delay: i64,
482}
483
484#[endpoint("clean_cache")]
486#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
487pub struct CleanCache {}
488
489#[endpoint("set_qq_avatar")]
493#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
494pub struct SetQQAvatar {
495 pub file: String,
497}
498
499#[endpoint("get_group_system_msg")]
501#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
502pub struct GetGroupSystemMsg {
503 pub group_id: i64,
505}
506
507#[endpoint("get_file")]
509#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
510pub struct GetFile {
511 pub file_id: String,
513}
514
515#[endpoint("forward_friend_single_msg")]
517#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
518pub struct ForwardFriendSingleMsg {
519 pub user_id: i64,
521 pub message_id: i64,
523}
524
525#[endpoint("forward_group_single_msg")]
527#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
528pub struct ForwardGroupSingleMsg {
529 pub group_id: i64,
531 pub message_id: i64,
533}
534
535#[endpoint("set_msg_emoji_like")]
537#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
538pub struct SetMsgEmojiLike {
539 pub message_id: String,
541 pub emoji_id: String,
544}
545
546#[endpoint("mark_private_msg_as_read")]
548#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
549pub struct MarkPrivateMsgAsRead {
550 pub user_id: i64,
552}
553
554#[endpoint("mark_group_msg_as_read")]
556#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
557pub struct MarkGroupMsgAsRead {
558 pub group_id: i64,
560}
561
562#[endpoint("get_robot_uin_range")]
564#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
565pub struct GetRobotUinRange {}
566
567#[endpoint("set_online_status")]
570#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
571pub struct SetOnlineStatus {
572 pub status: u32,
574 #[serde(rename = "extStatus")]
576 pub ext_status: u32,
577 #[serde(rename = "batteryStatus")]
579 pub battery_status: u32,
580}
581
582#[endpoint("get_friends_with_category")]
584#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
585pub struct GetFriendsWithCategory {}
586
587#[endpoint("get_group_file_count")]
589#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
590pub struct GetGroupFileCount {
591 pub group_id: i64,
593}
594
595#[endpoint("get_group_file_list")]
597#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
598pub struct GetGroupFileList {
599 pub group_id: i64,
601 pub start_index: i64,
603 pub file_count: i64,
605}
606
607#[endpoint("set_group_file_folder")]
609#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
610pub struct SetGroupFileFolder {
611 pub group_id: i64,
613 pub folder_name: String,
615}
616
617#[endpoint("del_group_file")]
619#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
620pub struct DelGroupFile {
621 pub group_id: i64,
623 pub file_id: String,
625}
626
627#[endpoint("del_group_file_folder")]
629#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
630pub struct DelGroupFileFolder {
631 pub group_id: i64,
633 pub folder_id: String,
635}
636
637#[endpoint("send_group_forward_msg")]
641#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
642pub struct SendGroupForwardMsg {
643 pub group_id: i64,
645 pub messages: Vec<MessageSegment>,
647}
648
649#[endpoint("send_private_forward_msg")]
651#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
652pub struct SendPrivateForwardMsg {
653 pub user_id: i64,
655 pub messages: Vec<MessageSegment>,
657}