From 8ce226f755de3df629fc5a34cb921d794c52a4c5 Mon Sep 17 00:00:00 2001 From: eleksir Date: Sun, 27 Mar 2022 20:08:57 +0300 Subject: [PATCH] =?UTF-8?q?=D0=91=D0=BE=D0=BB=D0=B5=D0=B5=20=D0=BA=D0=BE?= =?UTF-8?q?=D1=80=D1=80=D0=B5=D0=BA=D1=82=D0=BD=D0=BE=20=D1=80=D0=B0=D0=B1?= =?UTF-8?q?=D0=BE=D1=82=D0=B0=D0=B5=D0=BC=20=D1=81=20substr()=20=D0=B8=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B4=D0=B0=D1=91=D0=BC=20misc->answer=20=D1=8F?= =?UTF-8?q?=D0=B2=D0=BD=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/BotLib.pm | 10 ++++++---- lib/TelegramBot.pm | 50 ++++++++++++++++++++++++++-------------------- 2 files changed, 34 insertions(+), 26 deletions(-) diff --git a/lib/BotLib.pm b/lib/BotLib.pm index b2c5594..ac759ce 100644 --- a/lib/BotLib.pm +++ b/lib/BotLib.pm @@ -40,9 +40,11 @@ sub Command { my $reply; my ($userid, $username, $fullname, $highlight, $visavi) = Highlight ($msg); - my $rmsg = clone ($redismsg); - $rmsg->{userid} = 0 + $userid; - $rmsg->{chatid} = 0 + $chatid; + + my $rmsg = clone ($redismsg); + $rmsg->{userid} = 0 + $userid; + $rmsg->{chatid} = 0 + $chatid; + $rmsg->{misc}->{answer} = 1; if ($chatid >= 0) { $rmsg->{mode} = 'private'; @@ -50,7 +52,7 @@ sub Command { $rmsg->{mode} = 'public'; } - my $cmd = substr $text, 1; + my $cmd = substr $text, length ($csign); # Проверка #1 на админское разрешение некоторых команд my @cmds = qw (tits boobs tities boobies сиси сисечки); diff --git a/lib/TelegramBot.pm b/lib/TelegramBot.pm index 4f9c860..028815a 100644 --- a/lib/TelegramBot.pm +++ b/lib/TelegramBot.pm @@ -41,12 +41,12 @@ $redismsg->{misc}->{fwd_cnt} = 1; sub __cron { my $self = shift; - my $rmsg = clone ($redismsg); - $rmsg->{mode} = 'public'; + my $rmsg = clone ($redismsg); + $rmsg->{mode} = 'public'; # Press 'F' to pay respect - $rmsg->{message} = sprintf '%sf', $c->{telegrambot}->{csign}; - $rmsg->{misc}->{good_morning} = 1; - $rmsg->{misc}->{msg_format} = 1; + $rmsg->{message} = sprintf '%sf', $c->{telegrambot}->{csign}; + $rmsg->{misc}->{msg_format} = 1; + $rmsg->{misc}->{answer} = 1; my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime (time); @@ -232,16 +232,19 @@ sub __on_msg { # Ответ по-умолчанию my $reply = 'Давайте ещё пообщаемся, а то я ещё не научилась от вас плохому.'; - if (substr ($text, 0, 1) eq $csign) { + if (substr ($text, 0, length ($csign)) eq $csign) { # Если текст похож на команду, усылаем его в BotLib.pm $reply = Command ($self, $msg, $text, $userid); } else { - my $rmsg = clone ($redismsg); - $rmsg->{mode} = 'private'; - $rmsg->{message} = $text; - $rmsg->{userid} = 0 + $userid; - $rmsg->{chatid} = 0 + $userid; + my $rmsg = clone ($redismsg); + $rmsg->{mode} = 'private'; + $rmsg->{message} = $text; + $rmsg->{userid} = 0 + $userid; + $rmsg->{chatid} = 0 + $userid; + $rmsg->{misc}->{answer} = 1; + my $pubsub = $main::REDIS->pubsub; + $pubsub->json ($c->{'redis_router_channel'})->notify ( $c->{'redis_router_channel'} => $rmsg, ); @@ -301,7 +304,8 @@ sub __on_msg { # Если новый участник чата ответил на наше приветствие, проигнорируем его ответ (и попробуем сойти за # человека :) - if (substr ($msg->reply_to_message->text, -61) eq 'Представьтес, пожалуйста, и расскажите, что вас сюда привело.') { + my $greetphrase = 'Представьтес, пожалуйста, и расскажите, что вас сюда привело.'; + if (substr ($msg->reply_to_message->text, length ($greetphrase)) eq $greetphrase) { my $match = 0; my @hello = ( 'Дратути, ', @@ -326,11 +330,12 @@ sub __on_msg { $phrase =~ s/$pat2//g; # Попробуем сгенерить ответ - my $rmsg = clone ($redismsg); - $rmsg->{mode} = 'public'; - $rmsg->{message} = $phrase; - $rmsg->{userid} = 0 + $userid; - $rmsg->{chatid} = 0 + $chatid; + my $rmsg = clone ($redismsg); + $rmsg->{mode} = 'public'; + $rmsg->{message} = $phrase; + $rmsg->{userid} = 0 + $userid; + $rmsg->{chatid} = 0 + $chatid; + $rmsg->{misc}->{answer} = 1; my $pubsub = $main::REDIS->pubsub; @@ -340,7 +345,7 @@ sub __on_msg { return; # Если текст похож на команду, усылаем его в BotLib.pm - } elsif (substr ($text, 0, 1) eq $csign) { + } elsif (substr ($text, 0, length ($csign)) eq $csign) { $reply = Command ($self, $msg, $text, $chatid); # Похоже кто-то написал наше имя в чятике, но ничего не захотел дописывать к нему } elsif ( @@ -356,10 +361,11 @@ sub __on_msg { my $qname = quotemeta ('@' . $myusername); my $qtname = quotemeta $myfullname; - my $rmsg = clone ($redismsg); - $rmsg->{mode} = 'public'; - $rmsg->{userid} = 0 + $userid; - $rmsg->{chatid} = 0 + $chatid; + my $rmsg = clone ($redismsg); + $rmsg->{mode} = 'public'; + $rmsg->{userid} = 0 + $userid; + $rmsg->{chatid} = 0 + $chatid; + $rmsg->{misc}->{answer} = 1; # Сообщение обращено к боту if ((lc ($text) =~ /^${qname}[\,|\:]? (.+)/) or (lc ($text) =~ /^${qtname}[\,|\:]? (.+)/)){