line_bot_messaging_api/api/
richmenu_user.rs1use crate::{LineApiResponse, LineClient};
2use serde_derive::{Deserialize, Serialize};
3use serde_json::json;
4
5impl LineClient {
6 pub async fn rich_menu_user_link_menu(
9 &self,
10 rich_menu_id: &str,
11 user_id: &str,
12 ) -> LineApiResponse<LineApiRichMenuUserEmptyResponse> {
13 self.http_post(
14 format!(
15 "https://api.line.me/v2/bot/user/{}/richmenu/{}",
16 user_id, rich_menu_id
17 )
18 .as_str(),
19 &json!({}),
20 )
21 .await
22 }
23 pub async fn rich_menu_user_link_rich_menu_bulk(
26 &self,
27 rich_menu_id: &str,
28 user_id: Vec<String>,
29 ) -> LineApiResponse<LineApiRichMenuUserEmptyResponse> {
30 self.http_post(
31 "https://api.line.me/v2/bot/richmenu/bulk/link",
32 &json!({
33 "richMenuId": rich_menu_id,
34 "userIds": user_id,
35 }),
36 )
37 .await
38 }
39 pub async fn rich_menu_user_get_user_rich_menu_id(
43 &self,
44 user_id: &str,
45 ) -> LineApiResponse<LineApiRichMenuUserGetUserRichMenuId> {
46 self.http_get(
47 format!("https://api.line.me/v2/bot/user/{}/richmenu", user_id).as_str(),
48 &json!({}),
49 )
50 .await
51 }
52 pub async fn rich_menu_user_unlink_user_rich_menu(
54 &self,
55 user_id: &str,
56 ) -> LineApiResponse<LineApiRichMenuUserEmptyResponse> {
57 self.http_delete(
58 format!("https://api.line.me/v2/bot/user/{}/richmenu", user_id).as_str(),
59 &json!({}),
60 )
61 .await
62 }
63 pub async fn rich_menu_user_unlink_menu_bulk(
65 &self,
66 user_id: Vec<String>,
67 ) -> LineApiResponse<LineApiRichMenuUserEmptyResponse> {
68 self.http_post(
69 "https://api.line.me/v2/bot/richmenu/bulk/unlink",
70 &json!({
71 "userIds": user_id,
72 }),
73 )
74 .await
75 }
76 }
80
81#[derive(Debug, Default, Deserialize, Serialize, Clone)]
82pub struct LineApiRichMenuUserEmptyResponse {}
83
84#[derive(Debug, Default, Deserialize, Serialize, Clone)]
85pub struct LineApiRichMenuUserGetUserRichMenuId {
86 #[serde(rename = "richMenuId")]
87 pub rich_menu_id: String,
88}