From 1f821453cb4f94d42e4c41c6652ddc1b36e74ddc Mon Sep 17 00:00:00 2001 From: eleksir Date: Sun, 27 Mar 2022 20:31:19 +0300 Subject: [PATCH] =?UTF-8?q?=D0=91=D0=BE=D0=BB=D0=B5=D0=B5=20=D0=B0=D0=BA?= =?UTF-8?q?=D0=BA=D1=83=D1=80=D0=B0=D1=82=D0=BD=D0=BE=20=D0=B8=D1=81=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D1=8C=D0=B7=D1=83=D0=B5=D0=BC=20substr(),=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=B4=D0=BF=D0=B8=D1=80=D0=B0=D0=B5=D0=BC=20=D0=BE=D1=82?= =?UTF-8?q?=D0=B2=D0=B5=D1=82=20=D0=BD=D0=B0=20=D0=B8=D0=B7=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=B0=D1=80=D0=BC=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/Misc.pm | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/lib/Misc.pm b/lib/Misc.pm index 9b418d6..4fb647a 100644 --- a/lib/Misc.pm +++ b/lib/Misc.pm @@ -65,8 +65,8 @@ my $parse_message = sub { $log->debug ('[DEBUG] Incoming message ' . Dumper ($m)); # Пробуем найти команды. Сообщения, начинающиеся с $answer->{misc}->{csign} - if (substr ($m->{message}, 0, 1) eq $answer->{misc}->{csign}) { - my $cmd = substr $m->{message}, 1; + if (substr ($m->{message}, 0, length ($answer->{misc}->{csign})) eq $answer->{misc}->{csign}) { + my $cmd = substr $m->{message}, length ($answer->{misc}->{csign}); my $done = 0; # Вначале поищем команды модуля Phrases @@ -110,24 +110,36 @@ my $parse_message = sub { # И наконец остальные, более сложные команды, с аргументами unless ($done) { - if (substr ($m->{message}, 1, 2) eq 'w ' || substr ($m->{message}, 1, 2) eq 'п ') { - $send_to = 'webapp'; - $done = 1; - } elsif (substr ($m->{message}, 1, 8) eq 'weather ' || substr ($m->{message}, 1, 8) eq 'погодка ') { - $send_to = 'webapp'; - $done = 1; - } elsif (substr ($m->{message}, 1, 7) eq 'погода ' || substr ($m->{message}, 1, 8) eq 'погадка ') { - $send_to = 'webapp'; - $done = 1; + my @cmds = ('w ', 'п ', 'weather ', 'погодка ', 'погадка ', 'погода '); + + while (my $check = pop @cmds) { + if (length ($cmd) > length ($check) && substr ($m->{message}, length ($answer->{misc}->{csign}), length ($check)) eq $check) { + $send_to = 'webapp'; + $done = 1; + last; + } + } + + $#cmds = -1; + @cmds = ('karma ', 'карма '); + + while (my $check = pop @cmds) { + if (length ($cmd) > length ($check) && substr ($m->{message}, length ($answer->{misc}->{csign}), length ($check)) eq $check) { + $send_to = 'phrases'; + $done = 1; + last; + } } } # Попробуем найти изменение кармы - } elsif (substr ($m->{message}, -2) eq '++' || substr ($m->{message}, -2) eq '--') { + } elsif (substr ($m->{message}, 0 - length ('++')) eq '++' || substr ($m->{message}, 0 - length ('--')) eq '--') { my @arr = split /\n/, $m->{message}; # Предполагается, что фраза - это только одна строка if ($#arr < 1) { + # Подпираем это дело - независимо от того, что пришло нам от chat-плагина + $answer->{misc}->{answer} = 1; $send_to = 'phrases'; } }