From ba14f6e61920e171ae7856133bd9a77940b50f71 Mon Sep 17 00:00:00 2001 From: eleksir Date: Fri, 28 Jan 2022 17:21:16 +0300 Subject: [PATCH] Use all types of greet phrases to omit answer if newcommer respond to our greet with quotation --- lib/TelegramBot.pm | 57 ++++++++++++++++++++++++++++------------------ 1 file changed, 35 insertions(+), 22 deletions(-) diff --git a/lib/TelegramBot.pm b/lib/TelegramBot.pm index 496803e..96c4697 100644 --- a/lib/TelegramBot.pm +++ b/lib/TelegramBot.pm @@ -259,31 +259,44 @@ sub __on_msg { # Если новый участник чата ответил на наше приветствие, проигнорируем его ответ (и попробуем сойти за # человека :) - # TODO: учитывать и остальные варианты приветствия - if ((substr ($msg->reply_to_message->text, 0, 9) eq 'Дратути, ') && - (substr ($msg->reply_to_message->text, -61) eq 'Представьтес, пожалуйста, и расскажите, что вас сюда привело.')) { - return; - } else { - # На всякий случай, попробуем убрать наше имя из фразы. - my $pat1 = quotemeta ('@' . $myusername); - my $pat2 = quotemeta $myfullname; - $phrase = $text; - $phrase =~ s/$pat1//g; - $phrase =~ s/$pat2//g; - - # Попробуем сгенерить ответ - my $rmsg = clone ($redismsg); - $rmsg->{mode} = 'public'; - $rmsg->{message} = $phrase; - $rmsg->{userid} = $userid; - $rmsg->{chatid} = $chatid; - my $pubsub = $main::REDIS->pubsub; - $pubsub->json ($c->{'redis_router_channel'})->notify ( - $c->{'redis_router_channel'} => $rmsg + if (substr ($msg->reply_to_message->text, -61) eq 'Представьтес, пожалуйста, и расскажите, что вас сюда привело.') { + my $match = 0; + my @hello = ( + 'Дратути, ', + 'Дарована, ', + 'Доброе утро, день или вечер, ', + 'Добро пожаловать в наше скромное коммунити, ', + 'Наше вам с кисточкой тут, на канальчике, ' ); - return; + foreach my $hi (@hello) { + if (substr ($msg->reply_to_message->text, 0, length $hi) eq $hi) { + return; + } + } } + + # На всякий случай, попробуем убрать наше имя из фразы. + my $pat1 = quotemeta ('@' . $myusername); + my $pat2 = quotemeta $myfullname; + $phrase = $text; + $phrase =~ s/$pat1//g; + $phrase =~ s/$pat2//g; + + # Попробуем сгенерить ответ + my $rmsg = clone ($redismsg); + $rmsg->{mode} = 'public'; + $rmsg->{message} = $phrase; + $rmsg->{userid} = $userid; + $rmsg->{chatid} = $chatid; + + my $pubsub = $main::REDIS->pubsub; + + $pubsub->json ($c->{'redis_router_channel'})->notify ( + $c->{'redis_router_channel'} => $rmsg + ); + + return; # Если текст похож на команду, усылаем его в BotLib.pm } elsif (substr ($text, 0, 1) eq $csign) { $reply = Command ($self, $msg, $text, $chatid);