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