From 6554879b196e9d203e8fc25c69606bf2bfaddbde Mon Sep 17 00:00:00 2001 From: eleksir Date: Fri, 28 Jan 2022 16:25:10 +0300 Subject: [PATCH] In newcommer greeting treat space-char-only first_name or last_name as non-existing --- lib/TelegramBot.pm | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/TelegramBot.pm b/lib/TelegramBot.pm index 13619de..fa0a788 100644 --- a/lib/TelegramBot.pm +++ b/lib/TelegramBot.pm @@ -145,17 +145,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; } } @@ -254,6 +259,7 @@ sub __on_msg { # Если новый участник чата ответил на наше приветствие, проигнорируем его ответ (и попробуем сойти за # человека :) + # TODO: учитывать и остальные варианты приветствия if ((substr ($msg->reply_to_message->text, 0, 9) eq 'Дратути, ') && (substr ($msg->reply_to_message->text, -61) eq 'Представьтес, пожалуйста, и расскажите, что вас сюда привело.')) { return;