Skip to main content

mirai/
member_list.rs

1//! This mod only provides a way to get a list of member (or group)
2//!
3
4use crate::session::Session;
5use crate::error::Result;
6use serde::de::DeserializeOwned;
7use crate::message::element::{FriendMember, Group, GroupMember};
8
9impl Session {
10    async fn get_list<D>(&self, name: &'static str) -> Result<Vec<D>> where
11        D: DeserializeOwned {
12        let resp = self.client.get(&self.url(&format!("/{}List?sessionKey={}", name, self.key)))
13            .send().await?
14            .json().await?;
15
16        Ok(resp)
17    }
18
19    pub async fn friend_list(&self) -> Result<Vec<FriendMember>> {
20        self.get_list("friend").await
21    }
22
23    pub async fn group_list(&self) -> Result<Vec<Group>> {
24        self.get_list("group").await
25    }
26
27    pub async fn group_member_list(&self) -> Result<Vec<GroupMember>> {
28        self.get_list("member").await
29    }
30}