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
11pub(crate) trait APIArg {}
12
13#[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 async fn send_group_msg(
22 &self,
23 group_id: i64,
24 message: Vec<SendSegment>,
25 auto_escape: Option<bool>,
26 ) -> anyhow::Result<i32>;
27 async fn send_msg(
28 &self,
29 message_type: Option<MessageType>,
30 user_id: i64,
31 group_id: i64,
32 message: Vec<SendSegment>,
33 auto_escape: Option<bool>,
34 ) -> anyhow::Result<i32>;
35 async fn delete_msg(&self, message_id: i32) -> anyhow::Result<()>;
36 async fn get_msg(&self, message_id: i32) -> anyhow::Result<GetMsgResponse>;
37 async fn get_forward_msg(&self, id: String) -> anyhow::Result<Vec<ReceiveSegment>>;
38 async fn send_like(&self, user_id: i64, times: Option<i32>) -> anyhow::Result<()>;
39 async fn set_group_kick(
40 &self,
41 group_id: i32,
42 user_id: i32,
43 reject_add_request: Option<bool>,
44 ) -> anyhow::Result<()>;
45 async fn set_group_ban(
46 &self,
47 group_id: i32,
48 user_id: i32,
49 duration: Option<i32>,
50 ) -> anyhow::Result<()>;
51 async fn set_group_anonymous_ban(
52 &self,
53 group_id: i32,
54 anonymous: Option<GroupMessageAnonymous>,
55 flag: Option<String>,
56 duration: Option<i32>,
57 ) -> anyhow::Result<()>;
58 async fn set_group_whole_ban(&self, group_id: i32, enable: Option<bool>) -> anyhow::Result<()>;
59 async fn set_group_admin(
60 &self,
61 group_id: i32,
62 user_id: i32,
63 enable: Option<bool>,
64 ) -> anyhow::Result<()>;
65 async fn set_group_anonymous(&self, group_id: i32, enable: Option<bool>) -> anyhow::Result<()>;
66 async fn set_group_card(
67 &self,
68 group_id: i32,
69 user_id: i32,
70 card: Option<String>,
71 ) -> anyhow::Result<()>;
72 async fn set_group_name(&self, group_id: i32, group_name: String) -> anyhow::Result<()>;
73 async fn set_group_leave(&self, group_id: i32, is_dismiss: Option<bool>) -> anyhow::Result<()>;
74 async fn set_group_special_title(
75 &self,
76 group_id: i32,
77 user_id: i32,
78 special_title: Option<String>,
79 duration: Option<i32>,
80 ) -> anyhow::Result<()>;
81 async fn set_friend_add_request(
82 &self,
83 flag: String,
84 approve: Option<bool>,
85 remark: Option<String>,
86 ) -> anyhow::Result<()>;
87 async fn set_group_add_request(
88 &self,
89 flag: String,
90 sub_type: String,
91 approve: Option<bool>,
92 reason: Option<String>,
93 ) -> anyhow::Result<()>;
94 async fn get_login_info(&self) -> anyhow::Result<GetLoginInfoResponse>;
95 async fn get_stranger_info(
96 &self,
97 user_id: i32,
98 no_cache: Option<bool>,
99 ) -> anyhow::Result<GetStrangerInfoResponse>;
100 async fn get_friend_list(&self) -> anyhow::Result<Vec<GetFriendListResponse>>;
101 async fn get_group_info(
102 &self,
103 group_id: i32,
104 no_cache: Option<bool>,
105 ) -> anyhow::Result<GetGroupInfoResponse>;
106 async fn get_group_list(&self) -> anyhow::Result<Vec<GetGroupInfoResponse>>;
107 async fn get_group_member_info(
108 &self,
109 group_id: i32,
110 user_id: i32,
111 no_cache: Option<bool>,
112 ) -> anyhow::Result<GetGroupMemberInfoResponse>;
113 async fn get_group_member_list(
114 &self,
115 group_id: i32,
116 ) -> anyhow::Result<Vec<GetGroupMemberInfoResponse>>;
117 async fn get_group_honor_info(
118 &self,
119 group_id: i64,
120 honor_type: String,
121 ) -> anyhow::Result<GetGroupMemberInfoResponse>;
122 async fn get_cookies(&self, domain: Option<String>) -> anyhow::Result<String>;
123 async fn get_csrf_token(&self) -> anyhow::Result<i32>;
124 async fn get_credentials(&self, domain: Option<String>)
125 -> anyhow::Result<GetCredentialsResponse>;
126 async fn get_record(&self, file: String, out_format: String) -> anyhow::Result<String>;
127 async fn get_image(&self, file: String) -> anyhow::Result<String>;
128 async fn can_send_image(&self) -> anyhow::Result<bool>;
129 async fn can_send_record(&self) -> anyhow::Result<bool>;
130 async fn get_status(&self) -> anyhow::Result<GetStatusResponse>;
131 async fn get_version_info(&self) -> anyhow::Result<GetVersionInfoResponse>;
132 async fn set_restart(&self, delay: Option<i32>) -> anyhow::Result<()>;
133 async fn clean_cache(&self) -> anyhow::Result<()>;
134}