use serde::Deserializer; use serde::Deserialize; use tdlib_rs::Client; #[allow(unused)] pub fn deserialize_i64_0<'de, D: Deserializer<'de>>(deserializer: D) -> std::result::Result { String::deserialize(deserializer)?.parse::().map_err(serde::de::Error::custom) } #[allow(unused)] pub fn deserialize_i64_1<'de, D: Deserializer<'de>>(deserializer: D) -> std::result::Result, D::Error> { use std::str::FromStr; Vec::<&'de str>::deserialize(deserializer)? .into_iter() .map(i64::from_str) .collect::, _>>() .map_err(serde::de::Error::custom) } pub mod core; pub use crate::core::*; //pub mod messaging; //pub use crate::messaging::*; impl ClientExt for Client {} impl std::fmt::Display for UserStatus { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { UserStatus::UserStatusEmpty => write!(f, "never"), UserStatus::UserStatusOnline(online) => write!(f, "online until {}", fmt_date(online.expires)), UserStatus::UserStatusOffline(offline) => write!(f, "online until {}", fmt_date(offline.was_online)), UserStatus::UserStatusRecently => write!(f, "recently"), UserStatus::UserStatusLastWeek => write!(f, "last week"), UserStatus::UserStatusLastMonth => write!(f, "last month"), } } } fn fmt_date(date: i32) -> String { use chrono::TimeZone; let dt: chrono::DateTime = chrono::Local.timestamp(date as i64, 0); format!("{}", dt) }