1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use crate::api::structs::chat_member_administrator::ChatMemberAdministrator;
use crate::api::structs::chat_member_banned::ChatMemberBanned;
use crate::api::structs::chat_member_left::ChatMemberLeft;
use crate::api::structs::chat_member_member::ChatMemberMember;
use crate::api::structs::chat_member_owner::ChatMemberOwner;
use crate::api::structs::chat_member_restricted::ChatMemberRestricted;
use serde::{Deserialize, Serialize};

/// <https://core.telegram.org/bots/api#chatmember>
/// This object contains information about one member of a chat. Currently, the following 6 structs of chat members are supported:
/// ChatMemberOwner
/// ChatMemberAdministrator
/// ChatMemberMember
/// ChatMemberRestricted
/// ChatMemberLeft
/// ChatMemberBanned
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(untagged)]
pub enum ChatMember {
    Owner(ChatMemberOwner),
    Administrator(ChatMemberAdministrator),
    Member(ChatMemberMember),
    Restricted(ChatMemberRestricted),
    Left(ChatMemberLeft),
    Banned(ChatMemberBanned),
}