Skip to main content

onebot_api/
api.rs

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// pub(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
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}