mirror of
https://github.com/teloxide/teloxide.git
synced 2024-12-23 15:01:45 +01:00
Add User::is_anonymous
and User::is_channel
functions
Also add documentation for `User::{full_name, mention, url}`
This commit is contained in:
parent
a07c9b0431
commit
2bd19a598e
2 changed files with 45 additions and 1 deletions
|
@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||||
- `Limits::messages_per_min_channel` ([#121][pr121])
|
- `Limits::messages_per_min_channel` ([#121][pr121])
|
||||||
- `media_group_id` field to `MediaDocument` and `MediaAudio` ([#139][pr139])
|
- `media_group_id` field to `MediaDocument` and `MediaAudio` ([#139][pr139])
|
||||||
- `caption_entities` method to `InputMediaPhoto` ([#140][pr140])
|
- `caption_entities` method to `InputMediaPhoto` ([#140][pr140])
|
||||||
|
- `User::is_anonymous` and `User::is_channel` functions ([#151][pr151])
|
||||||
|
|
||||||
[pr109]: https://github.com/teloxide/teloxide-core/pull/109
|
[pr109]: https://github.com/teloxide/teloxide-core/pull/109
|
||||||
[pr116]: https://github.com/teloxide/teloxide-core/pull/116
|
[pr116]: https://github.com/teloxide/teloxide-core/pull/116
|
||||||
|
@ -25,6 +26,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||||
[pr139]: https://github.com/teloxide/teloxide-core/pull/139
|
[pr139]: https://github.com/teloxide/teloxide-core/pull/139
|
||||||
[pr140]: https://github.com/teloxide/teloxide-core/pull/140
|
[pr140]: https://github.com/teloxide/teloxide-core/pull/140
|
||||||
[pr143]: https://github.com/teloxide/teloxide-core/pull/143
|
[pr143]: https://github.com/teloxide/teloxide-core/pull/143
|
||||||
|
[pr151]: https://github.com/teloxide/teloxide-core/pull/151
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,8 @@ pub struct User {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl User {
|
impl User {
|
||||||
|
/// Returns full name of this user, ie first and last names joined with a
|
||||||
|
/// space.
|
||||||
pub fn full_name(&self) -> String {
|
pub fn full_name(&self) -> String {
|
||||||
match &self.last_name {
|
match &self.last_name {
|
||||||
Some(last_name) => (format!("{0} {1}", self.first_name, last_name)),
|
Some(last_name) => (format!("{0} {1}", self.first_name, last_name)),
|
||||||
|
@ -35,12 +37,52 @@ impl User {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns a username mention of this user. Returns `None` if
|
||||||
|
/// `self.username.is_none()`.
|
||||||
pub fn mention(&self) -> Option<String> {
|
pub fn mention(&self) -> Option<String> {
|
||||||
Some(format!("@{}", self.username.as_ref()?))
|
Some(format!("@{}", self.username.as_ref()?))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns an URL that links to this user in the form of
|
||||||
|
/// `tg://user/?id=<...>`
|
||||||
pub fn url(&self) -> reqwest::Url {
|
pub fn url(&self) -> reqwest::Url {
|
||||||
reqwest::Url::parse(format!("tg://user/?id={}", self.id).as_str()).unwrap()
|
reqwest::Url::parse(&format!("tg://user/?id={}", self.id)).unwrap()
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Returns `true` if this is special user used by telegram bot API to
|
||||||
|
/// denote an annonymous user that sends messages on behalf of a group.
|
||||||
|
pub fn is_anonymous(&self) -> bool {
|
||||||
|
// https://github.com/tdlib/td/blob/4791fb6a2af0257f6cad8396e10424a79ee5f768/td/telegram/ContactsManager.cpp#L4941-L4943
|
||||||
|
const ANON_ID: i64 = 1087968824;
|
||||||
|
|
||||||
|
// Sanity check
|
||||||
|
debug_assert!(
|
||||||
|
(self.id != ANON_ID)
|
||||||
|
|| (self.is_bot
|
||||||
|
&& self.first_name == "Group"
|
||||||
|
&& self.last_name.is_none()
|
||||||
|
&& self.username.as_deref() == Some("GroupAnonymousBot"))
|
||||||
|
);
|
||||||
|
|
||||||
|
self.id == ANON_ID
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Returns `true` if this is special user used by telegram bot API to
|
||||||
|
/// denote an annonymous user that sends messages on behalf of a channel.
|
||||||
|
pub fn is_channel(&self) -> bool {
|
||||||
|
// https://github.com/tdlib/td/blob/4791fb6a2af0257f6cad8396e10424a79ee5f768/td/telegram/ContactsManager.cpp#L4945-L4947
|
||||||
|
const ANON_CHANNEL_ID: i64 = 136817688;
|
||||||
|
|
||||||
|
// Sanity check
|
||||||
|
debug_assert!(
|
||||||
|
(self.id != ANON_CHANNEL_ID)
|
||||||
|
|| (self.is_bot
|
||||||
|
&& self.first_name == "Group"
|
||||||
|
&& self.last_name.is_none()
|
||||||
|
&& self.username.as_deref() == Some("GroupAnonymousBot"))
|
||||||
|
);
|
||||||
|
|
||||||
|
self.id == ANON_CHANNEL_ID
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue