Skip to main content

tele/types/
bot.rs

1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4use serde_json::Value;
5
6use crate::types::common::UserId;
7use crate::types::message::PhotoSize;
8
9/// Telegram user object.
10#[derive(Clone, Debug, Deserialize, Serialize)]
11#[non_exhaustive]
12pub struct User {
13    pub id: UserId,
14    pub is_bot: bool,
15    pub first_name: String,
16    #[serde(default, skip_serializing_if = "Option::is_none")]
17    pub last_name: Option<String>,
18    #[serde(default, skip_serializing_if = "Option::is_none")]
19    pub username: Option<String>,
20    #[serde(default, skip_serializing_if = "Option::is_none")]
21    pub language_code: Option<String>,
22    #[serde(flatten)]
23    pub extra: BTreeMap<String, Value>,
24}
25
26/// Telegram user profile photos object.
27#[derive(Clone, Debug, Deserialize, Serialize)]
28#[non_exhaustive]
29pub struct UserProfilePhotos {
30    pub total_count: u64,
31    pub photos: Vec<Vec<PhotoSize>>,
32}
33
34/// `getUserProfilePhotos` request.
35#[derive(Clone, Debug, Serialize)]
36pub struct GetUserProfilePhotosRequest {
37    pub user_id: UserId,
38    #[serde(default, skip_serializing_if = "Option::is_none")]
39    pub offset: Option<u32>,
40    #[serde(default, skip_serializing_if = "Option::is_none")]
41    pub limit: Option<u8>,
42}
43
44impl GetUserProfilePhotosRequest {
45    pub fn new(user_id: UserId) -> Self {
46        Self {
47            user_id,
48            offset: None,
49            limit: None,
50        }
51    }
52}