From ea634710f12f9dfe50636e18954ebffd93540976 Mon Sep 17 00:00:00 2001 From: eleksir Date: Sat, 29 Jan 2022 17:32:25 +0300 Subject: [PATCH] In newcommer greeting treat space-char-only first_name or last_name as non-existing --- lib/TelegramBot.pm | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/TelegramBot.pm b/lib/TelegramBot.pm index 8b1c574..ee28c57 100644 --- a/lib/TelegramBot.pm +++ b/lib/TelegramBot.pm @@ -126,17 +126,22 @@ sub __on_msg { foreach my $member (@{$msg->new_chat_members}) { my $member_str = ''; - if ($member->can ('first_name') && defined ($member->first_name)) { + # avoid naming people by spacing symbols, or empty names + if ($member->can ('first_name') && defined ($member->first_name) && $member->first_name !~ /^\s+$/ui) { $member_str .= $member->first_name; - if ($member->can ('last_name') && defined ($member->last_name)) { + if ($member->can ('last_name') && defined ($member->last_name) && $member->last_name !~ /^\s+$/ui) { $member_str .= ' ' . $member->last_name; } } else { - if ($member->can ('last_name') && defined ($member->last_name)) { + if ($member->can ('last_name') && defined ($member->last_name) && $member->last_name !~ /^\s+$/ui) { $member_str .= ' ' . $member->last_name; - } else { + # username must be uniq and should contain only english letters and numbers, so... + } elsif ($member->can ('username') && defined ($member->username)) { $member_str .= '@' . $member->username; + # fallback to id if uose trying to be smartass and use only spacing chars in it's firstname and/or lastname + } else { + $member_str .= $member->id; } }