flow_bot/api/
api_ext.rs

1use async_trait::async_trait;
2
3use crate::{
4    event::{message::GroupAnonymousInfo, request::GroupRequestSubType},
5    message::IntoMessage,
6};
7
8use super::{
9    BotStatus, CanSendResponse, FriendInfo, GetCookiesResponse, GetCredentialsResponse,
10    GetCsrfTokenResponse, GetFileResponse, GetForwardResponse, GetMessageResponse, GroupHonorInfo,
11    GroupHonorType, GroupInfoResponse, LoginInfo, RecordFormat, SendMessageResponse, StrangerInfo,
12    VersionInfo,
13};
14
15#[async_trait]
16pub trait ApiExt {
17    type Error;
18
19    async fn send_private_message<M>(
20        &self,
21        user_id: i64,
22        message: M,
23        auto_escape: Option<bool>,
24    ) -> Result<SendMessageResponse, Self::Error>
25    where
26        M: IntoMessage + Send;
27
28    async fn send_group_message<M>(
29        &self,
30        group_id: i64,
31        message: M,
32        auto_escape: Option<bool>,
33    ) -> Result<SendMessageResponse, Self::Error>
34    where
35        M: IntoMessage + Send;
36
37    async fn delete_message(&self, message_id: i64) -> Result<(), Self::Error>;
38
39    async fn get_message(&self, message_id: i64) -> Result<GetMessageResponse, Self::Error>;
40
41    async fn get_forward_message(&self, message_id: i64)
42    -> Result<GetForwardResponse, Self::Error>;
43
44    async fn send_like(&self, user_id: i64, times: Option<i32>) -> Result<(), Self::Error>;
45
46    async fn set_group_kick(
47        &self,
48        group_id: i64,
49        user_id: i64,
50        reject_add_request: Option<bool>,
51    ) -> Result<(), Self::Error>;
52
53    async fn set_group_ban(
54        &self,
55        group_id: i64,
56        user_id: i64,
57        duration: Option<i64>,
58    ) -> Result<(), Self::Error>;
59
60    async fn set_group_anonymous_ban(
61        &self,
62        group_id: i64,
63        anonymous: Option<GroupAnonymousInfo>,
64        flag: Option<String>,
65        duration: Option<i64>,
66    ) -> Result<(), Self::Error>;
67
68    async fn set_whole_group_ban(
69        &self,
70        group_id: i64,
71        enable: Option<bool>,
72    ) -> Result<(), Self::Error>;
73
74    async fn set_group_admin(
75        &self,
76        group_id: i64,
77        user_id: i64,
78        enable: Option<bool>,
79    ) -> Result<(), Self::Error>;
80
81    async fn set_group_anonymous(
82        &self,
83        group_id: i64,
84        enable: Option<bool>,
85    ) -> Result<(), Self::Error>;
86
87    async fn set_group_card(
88        &self,
89        group_id: i64,
90        user_id: i64,
91        card: Option<String>,
92    ) -> Result<(), Self::Error>;
93
94    async fn set_group_name(&self, group_id: i64, group_name: String) -> Result<(), Self::Error>;
95
96    async fn set_group_leave(
97        &self,
98        group_id: i64,
99        is_dismiss: Option<bool>,
100    ) -> Result<(), Self::Error>;
101
102    async fn set_group_special_title(
103        &self,
104        group_id: i64,
105        user_id: i64,
106        special_title: Option<String>,
107        duration: Option<i64>,
108    ) -> Result<(), Self::Error>;
109
110    async fn set_friend_add_request(
111        &self,
112        flag: String,
113        approve: Option<bool>,
114        remark: Option<String>,
115    ) -> Result<(), Self::Error>;
116
117    async fn set_group_add_request(
118        &self,
119        flag: String,
120        sub_type: GroupRequestSubType,
121        approve: Option<bool>,
122        reason: Option<String>,
123    ) -> Result<(), Self::Error>;
124
125    async fn get_login_info(&self) -> Result<LoginInfo, Self::Error>;
126
127    async fn get_stranger_info(
128        &self,
129        user_id: i64,
130        no_cache: Option<bool>,
131    ) -> Result<StrangerInfo, Self::Error>;
132
133    async fn get_friend_list(&self) -> Result<Vec<FriendInfo>, Self::Error>;
134
135    async fn get_group_info(
136        &self,
137        group_id: i64,
138        no_cache: Option<bool>,
139    ) -> Result<GroupInfoResponse, Self::Error>;
140
141    async fn get_group_list(&self) -> Result<Vec<GroupInfoResponse>, Self::Error>;
142
143    async fn get_group_member_info(
144        &self,
145        group_id: i64,
146        user_id: i64,
147        no_cache: Option<bool>,
148    ) -> Result<GroupInfoResponse, Self::Error>;
149
150    async fn get_group_member_list(&self, group_id: i64) -> Result<Vec<FriendInfo>, Self::Error>;
151
152    async fn get_group_honor_info(
153        &self,
154        group_id: i64,
155        ty: GroupHonorType,
156    ) -> Result<GroupHonorInfo, Self::Error>;
157
158    async fn get_cookies(&self, domain: Option<String>) -> Result<GetCookiesResponse, Self::Error>;
159
160    async fn get_csrf_token(&self) -> Result<GetCsrfTokenResponse, Self::Error>;
161
162    async fn get_credentials(
163        &self,
164        domain: Option<String>,
165    ) -> Result<GetCredentialsResponse, Self::Error>;
166
167    async fn get_record(
168        &self,
169        file: String,
170        out_format: RecordFormat,
171    ) -> Result<GetFileResponse, Self::Error>;
172
173    async fn get_image(&self, file: String) -> Result<GetFileResponse, Self::Error>;
174
175    async fn can_send_image(&self) -> Result<CanSendResponse, Self::Error>;
176
177    async fn can_send_record(&self) -> Result<CanSendResponse, Self::Error>;
178
179    async fn get_status(&self) -> Result<BotStatus, Self::Error>;
180
181    async fn get_version_info(&self) -> Result<VersionInfo, Self::Error>;
182
183    async fn set_restart(&self, delay: Option<i32>) -> Result<(), Self::Error>;
184
185    async fn clean_cache(&self) -> Result<(), Self::Error>;
186}