wechat_api_rs/
official.rs1use crate::{Client, types::*};
4
5#[derive(Clone)]
7pub struct OfficialClient {
8 core: Client,
9}
10
11impl OfficialClient {
12 pub fn new(core: Client) -> Self {
13 Self { core }
14 }
15
16 pub fn message(&self) -> MessageApi {
18 MessageApi::new(self.core.clone())
19 }
20}
21
22pub struct MessageApi {
24 core: Client,
25 to_user: Option<String>,
26 msg_type: Option<String>,
27 content: Option<String>,
28}
29
30impl MessageApi {
31 pub fn new(core: Client) -> Self {
32 Self {
33 core,
34 to_user: None,
35 msg_type: None,
36 content: None,
37 }
38 }
39
40 pub fn to<S: Into<String>>(mut self, openid: S) -> Self {
41 self.to_user = Some(openid.into());
42 self
43 }
44
45 pub fn text<S: Into<String>>(mut self, text: S) -> Self {
46 self.msg_type = Some("text".to_string());
47 self.content = Some(text.into());
48 self
49 }
50
51 pub async fn send(self) -> crate::Result<()> {
52 tracing::info!("Sending message to {:?}: {:?}", self.to_user, self.content);
54 Ok(())
55 }
56}