1use crate::error::APIResult;
2use crate::event::message::GroupMessageAnonymous;
3use crate::message::receive_segment::ReceiveSegment;
4use crate::message::send_segment::SendSegment;
5use arg_type::*;
6use async_trait::async_trait;
7use return_type::*;
8
9pub mod arg_type;
10pub mod return_type;
11
12#[async_trait]
15pub trait APISender {
16 async fn send_private_msg(
17 &self,
18 user_id: i64,
19 message: Vec<SendSegment>,
20 auto_escape: Option<bool>,
21 ) -> APIResult<i32>;
22
23 async fn send_group_msg(
24 &self,
25 group_id: i64,
26 message: Vec<SendSegment>,
27 auto_escape: Option<bool>,
28 ) -> APIResult<i32>;
29
30 async fn send_msg(
31 &self,
32 message_type: Option<MessageType>,
33 user_id: i64,
34 group_id: i64,
35 message: Vec<SendSegment>,
36 auto_escape: Option<bool>,
37 ) -> APIResult<i32>;
38
39 async fn delete_msg(&self, message_id: i32) -> APIResult<()>;
40
41 async fn get_msg(&self, message_id: i32) -> APIResult<GetMsgResponse>;
42
43 async fn get_forward_msg(&self, id: String) -> APIResult<Vec<ReceiveSegment>>;
44
45 async fn send_like(&self, user_id: i64, times: Option<i32>) -> APIResult<()>;
46
47 async fn set_group_kick(
48 &self,
49 group_id: i32,
50 user_id: i32,
51 reject_add_request: Option<bool>,
52 ) -> APIResult<()>;
53
54 async fn set_group_ban(
55 &self,
56 group_id: i32,
57 user_id: i32,
58 duration: Option<i32>,
59 ) -> APIResult<()>;
60
61 async fn set_group_anonymous_ban(
62 &self,
63 group_id: i32,
64 anonymous: Option<GroupMessageAnonymous>,
65 flag: Option<String>,
66 duration: Option<i32>,
67 ) -> APIResult<()>;
68
69 async fn set_group_whole_ban(&self, group_id: i32, enable: Option<bool>) -> APIResult<()>;
70
71 async fn set_group_admin(
72 &self,
73 group_id: i32,
74 user_id: i32,
75 enable: Option<bool>,
76 ) -> APIResult<()>;
77
78 async fn set_group_anonymous(&self, group_id: i32, enable: Option<bool>) -> APIResult<()>;
79
80 async fn set_group_card(
81 &self,
82 group_id: i32,
83 user_id: i32,
84 card: Option<String>,
85 ) -> APIResult<()>;
86
87 async fn set_group_name(&self, group_id: i32, group_name: String) -> APIResult<()>;
88
89 async fn set_group_leave(&self, group_id: i32, is_dismiss: Option<bool>) -> APIResult<()>;
90
91 async fn set_group_special_title(
92 &self,
93 group_id: i32,
94 user_id: i32,
95 special_title: Option<String>,
96 duration: Option<i32>,
97 ) -> APIResult<()>;
98
99 async fn set_friend_add_request(
100 &self,
101 flag: String,
102 approve: Option<bool>,
103 remark: Option<String>,
104 ) -> APIResult<()>;
105
106 async fn set_group_add_request(
107 &self,
108 flag: String,
109 sub_type: String,
110 approve: Option<bool>,
111 reason: Option<String>,
112 ) -> APIResult<()>;
113
114 async fn get_login_info(&self) -> APIResult<GetLoginInfoResponse>;
115
116 async fn get_stranger_info(
117 &self,
118 user_id: i32,
119 no_cache: Option<bool>,
120 ) -> APIResult<GetStrangerInfoResponse>;
121
122 async fn get_friend_list(&self) -> APIResult<Vec<GetFriendListResponse>>;
123
124 async fn get_group_info(
125 &self,
126 group_id: i32,
127 no_cache: Option<bool>,
128 ) -> APIResult<GetGroupInfoResponse>;
129
130 async fn get_group_list(&self) -> APIResult<Vec<GetGroupInfoResponse>>;
131
132 async fn get_group_member_info(
133 &self,
134 group_id: i32,
135 user_id: i32,
136 no_cache: Option<bool>,
137 ) -> APIResult<GetGroupMemberInfoResponse>;
138
139 async fn get_group_member_list(
140 &self,
141 group_id: i32,
142 ) -> APIResult<Vec<GetGroupMemberInfoResponse>>;
143
144 async fn get_group_honor_info(
145 &self,
146 group_id: i64,
147 honor_type: String,
148 ) -> APIResult<GetGroupMemberInfoResponse>;
149
150 async fn get_cookies(&self, domain: Option<String>) -> APIResult<String>;
151
152 async fn get_csrf_token(&self) -> APIResult<i32>;
153
154 async fn get_credentials(&self, domain: Option<String>) -> APIResult<GetCredentialsResponse>;
155
156 async fn get_record(&self, file: String, out_format: String) -> APIResult<String>;
157
158 async fn get_image(&self, file: String) -> APIResult<String>;
159
160 async fn can_send_image(&self) -> APIResult<bool>;
161
162 async fn can_send_record(&self) -> APIResult<bool>;
163
164 async fn get_status(&self) -> APIResult<GetStatusResponse>;
165
166 async fn get_version_info(&self) -> APIResult<GetVersionInfoResponse>;
167
168 async fn set_restart(&self, delay: Option<i32>) -> APIResult<()>;
169
170 async fn clean_cache(&self) -> APIResult<()>;
171}