Более аккуратно используем substr(), подпираем ответ на изменение кармы
This commit is contained in:
36
lib/Misc.pm
36
lib/Misc.pm
@@ -65,8 +65,8 @@ my $parse_message = sub {
|
|||||||
$log->debug ('[DEBUG] Incoming message ' . Dumper ($m));
|
$log->debug ('[DEBUG] Incoming message ' . Dumper ($m));
|
||||||
|
|
||||||
# Пробуем найти команды. Сообщения, начинающиеся с $answer->{misc}->{csign}
|
# Пробуем найти команды. Сообщения, начинающиеся с $answer->{misc}->{csign}
|
||||||
if (substr ($m->{message}, 0, 1) eq $answer->{misc}->{csign}) {
|
if (substr ($m->{message}, 0, length ($answer->{misc}->{csign})) eq $answer->{misc}->{csign}) {
|
||||||
my $cmd = substr $m->{message}, 1;
|
my $cmd = substr $m->{message}, length ($answer->{misc}->{csign});
|
||||||
my $done = 0;
|
my $done = 0;
|
||||||
|
|
||||||
# Вначале поищем команды модуля Phrases
|
# Вначале поищем команды модуля Phrases
|
||||||
@@ -110,24 +110,36 @@ my $parse_message = sub {
|
|||||||
|
|
||||||
# И наконец остальные, более сложные команды, с аргументами
|
# И наконец остальные, более сложные команды, с аргументами
|
||||||
unless ($done) {
|
unless ($done) {
|
||||||
if (substr ($m->{message}, 1, 2) eq 'w ' || substr ($m->{message}, 1, 2) eq 'п ') {
|
my @cmds = ('w ', 'п ', 'weather ', 'погодка ', 'погадка ', 'погода ');
|
||||||
$send_to = 'webapp';
|
|
||||||
$done = 1;
|
while (my $check = pop @cmds) {
|
||||||
} elsif (substr ($m->{message}, 1, 8) eq 'weather ' || substr ($m->{message}, 1, 8) eq 'погодка ') {
|
if (length ($cmd) > length ($check) && substr ($m->{message}, length ($answer->{misc}->{csign}), length ($check)) eq $check) {
|
||||||
$send_to = 'webapp';
|
$send_to = 'webapp';
|
||||||
$done = 1;
|
$done = 1;
|
||||||
} elsif (substr ($m->{message}, 1, 7) eq 'погода ' || substr ($m->{message}, 1, 8) eq 'погадка ') {
|
last;
|
||||||
$send_to = 'webapp';
|
}
|
||||||
$done = 1;
|
}
|
||||||
|
|
||||||
|
$#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};
|
my @arr = split /\n/, $m->{message};
|
||||||
|
|
||||||
# Предполагается, что фраза - это только одна строка
|
# Предполагается, что фраза - это только одна строка
|
||||||
if ($#arr < 1) {
|
if ($#arr < 1) {
|
||||||
|
# Подпираем это дело - независимо от того, что пришло нам от chat-плагина
|
||||||
|
$answer->{misc}->{answer} = 1;
|
||||||
$send_to = 'phrases';
|
$send_to = 'phrases';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user