From f03f511778e2a7f7226426d40ad2c3b1ddcfe7fe Mon Sep 17 00:00:00 2001 From: doryan Date: Fri, 11 Apr 2025 12:14:59 +0400 Subject: [PATCH] feat(username): add opportunity to get full name instead of username if user doesn't have one --- src/types/enums/target_user.rs | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/src/types/enums/target_user.rs b/src/types/enums/target_user.rs index 242b25a..f19fa14 100644 --- a/src/types/enums/target_user.rs +++ b/src/types/enums/target_user.rs @@ -1,6 +1,9 @@ +use std::ops::Deref; + use telers::{ errors::SessionErrorKind, methods::GetChatMember, + types::User, types::{ChatMember, Message}, Bot, }; @@ -53,6 +56,14 @@ impl TargetUser { } } + fn _inner_get_user_name(&self, user: User) -> Option> { + if let Some(user_name) = user.username.as_ref() { + return Some(user_name.clone()); + } else { + return Some(Box::from(user.full_name())); + } + } + pub async fn get_user_name(&self, bot: &Bot, msg: &Message) -> Option> { match self { Self::Id(id) => { @@ -60,13 +71,13 @@ impl TargetUser { bot.send(GetChatMember::new(msg.chat().id(), *id)).await; if let Ok(member_kind) = get_chat_member_result { - return match member_kind { - ChatMember::Owner(member) => member.user.username, - ChatMember::Administrator(member) => member.user.username, - ChatMember::Member(member) => member.user.username, - ChatMember::Restricted(member) => member.user.username, - ChatMember::Left(member) => member.user.username, - ChatMember::Banned(member) => member.user.username, + match member_kind { + ChatMember::Owner(member) => self._inner_get_user_name(member.user), + ChatMember::Administrator(member) => self._inner_get_user_name(member.user), + ChatMember::Member(member) => self._inner_get_user_name(member.user), + ChatMember::Restricted(member) => self._inner_get_user_name(member.user), + ChatMember::Left(member) => self._inner_get_user_name(member.user), + ChatMember::Banned(member) => self._inner_get_user_name(member.user), }; } None