Добавлено поле misc->good_morning, глубже lint-уем входящий json
* Добавлено описание поля misc->good_morning в README * Проверяем входной JSON на наличие всех полей и фиксим дефолтами * Более аккуратная работа с substr - больше перестраховок * Правка коментариев
This commit is contained in:
5
README
5
README
@@ -38,10 +38,13 @@ misc->csign - command sign - значок, которым предваря
|
|||||||
такой настройки нету. Изначально настройка задаётся в конфиге чат-модуля (aleesa-telegram,
|
такой настройки нету. Изначально настройка задаётся в конфиге чат-модуля (aleesa-telegram,
|
||||||
например).
|
например).
|
||||||
|
|
||||||
misc->fwd_cnt - количество пересылок сообщения. Значение по-умолчанию 5. Предполагается, что при пересылке
|
misc->fwd_cnt - количество пересылок сообщения. Значение по-умолчанию 1. Предполагается, что при пересылке
|
||||||
сообщения, модуль будет инкрементировать это значение и заодно проверять, что оно не превышает
|
сообщения, модуль будет инкрементировать это значение и заодно проверять, что оно не превышает
|
||||||
настройку forwards_max в конфиге или 5, если в конфиге такой настройки нету.
|
настройку forwards_max в конфиге или 5, если в конфиге такой настройки нету.
|
||||||
|
|
||||||
|
misc->good_morning - флажок признака сообщения-фразы дня, которая по идее осылается в ~8 часов по мск. Используется в
|
||||||
|
модуле phrases.
|
||||||
|
|
||||||
misc->msg_format - Использовать форматирование в сообщении. На текущий момент этот флажок выставляется в модуле
|
misc->msg_format - Использовать форматирование в сообщении. На текущий момент этот флажок выставляется в модуле
|
||||||
telegram и благополучно проходит через модуль misc, далее попадает в модуль phrases, и, наконец,
|
telegram и благополучно проходит через модуль misc, далее попадает в модуль phrases, и, наконец,
|
||||||
возвращается в модуль telegram, чтобы выходное сообщение было отослано как отформатированное.
|
возвращается в модуль telegram, чтобы выходное сообщение было отослано как отформатированное.
|
||||||
|
|||||||
33
lib/Misc.pm
33
lib/Misc.pm
@@ -50,13 +50,33 @@ my $parse_message = sub {
|
|||||||
$answer->{misc}->{answer} = 1;
|
$answer->{misc}->{answer} = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unless (defined $answer->{misc}->{bot_nick}) {
|
||||||
|
$answer->{misc}->{bot_nick} = '';
|
||||||
|
}
|
||||||
|
|
||||||
unless (defined $answer->{misc}->{csign}) {
|
unless (defined $answer->{misc}->{csign}) {
|
||||||
$answer->{misc}->{csign} = '!';
|
$answer->{misc}->{csign} = '!';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unless (defined $answer->{misc}->{good_morning}) {
|
||||||
|
$answer->{misc}->{good_morning} = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
unless (defined $answer->{misc}->{msg_format}) {
|
||||||
|
$answer->{misc}->{msg_format} = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
unless (defined $answer->{misc}->{username}) {
|
||||||
|
$answer->{misc}->{username} = '';
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$answer->{misc}->{answer} = 1;
|
$answer->{misc}->{answer} = 1;
|
||||||
|
$answer->{misc}->{bot_nick} = '';
|
||||||
$answer->{misc}->{csign} = '!';
|
$answer->{misc}->{csign} = '!';
|
||||||
|
$answer->{misc}->{fwd_cnt} = 1;
|
||||||
|
$answer->{misc}->{good_morning} = 0;
|
||||||
$answer->{misc}->{msg_format} = 0;
|
$answer->{misc}->{msg_format} = 0;
|
||||||
|
$answer->{misc}->{username} = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
# Если сообщение не попало ни под один шаблон, оно отправляется к craniac-у
|
# Если сообщение не попало ни под один шаблон, оно отправляется к craniac-у
|
||||||
@@ -64,9 +84,11 @@ my $parse_message = sub {
|
|||||||
|
|
||||||
$log->debug ('[DEBUG] Incoming message ' . Dumper ($m));
|
$log->debug ('[DEBUG] Incoming message ' . Dumper ($m));
|
||||||
|
|
||||||
|
my $csign = $answer->{misc}->{csign};
|
||||||
|
|
||||||
# Пробуем найти команды. Сообщения, начинающиеся с $answer->{misc}->{csign}
|
# Пробуем найти команды. Сообщения, начинающиеся с $answer->{misc}->{csign}
|
||||||
if (substr ($m->{message}, 0, length ($answer->{misc}->{csign})) eq $answer->{misc}->{csign}) {
|
if ((length $m->{message} > length $csign) && (substr ($m->{message}, 0, length $csign) eq $csign)) {
|
||||||
my $cmd = substr $m->{message}, length ($answer->{misc}->{csign});
|
my $cmd = substr $m->{message}, length $csign;
|
||||||
my $done = 0;
|
my $done = 0;
|
||||||
|
|
||||||
# Вначале поищем команды модуля Phrases
|
# Вначале поищем команды модуля Phrases
|
||||||
@@ -108,12 +130,12 @@ my $parse_message = sub {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# И наконец остальные, более сложные команды, с аргументами
|
# И, наконец, остальные, более сложные команды, с аргументами
|
||||||
unless ($done) {
|
unless ($done) {
|
||||||
my @cmds = ('w ', 'п ', 'weather ', 'погодка ', 'погадка ', 'погода ');
|
my @cmds = ('w ', 'п ', 'weather ', 'погодка ', 'погадка ', 'погода ');
|
||||||
|
|
||||||
while (my $check = pop @cmds) {
|
while (my $check = pop @cmds) {
|
||||||
if (length ($cmd) > length ($check) && substr ($m->{message}, length ($answer->{misc}->{csign}), length ($check)) eq $check) {
|
if ((length $cmd > length $check) && substr ($cmd, 0, length $check) eq $check) {
|
||||||
$send_to = 'webapp';
|
$send_to = 'webapp';
|
||||||
$done = 1;
|
$done = 1;
|
||||||
last;
|
last;
|
||||||
@@ -124,14 +146,13 @@ my $parse_message = sub {
|
|||||||
@cmds = ('karma ', 'карма ');
|
@cmds = ('karma ', 'карма ');
|
||||||
|
|
||||||
while (my $check = pop @cmds) {
|
while (my $check = pop @cmds) {
|
||||||
if (length ($cmd) > length ($check) && substr ($m->{message}, length ($answer->{misc}->{csign}), length ($check)) eq $check) {
|
if ((length $cmd > length $check) && substr ($cmd, 0, length $check) eq $check) {
|
||||||
$send_to = 'phrases';
|
$send_to = 'phrases';
|
||||||
$done = 1;
|
$done = 1;
|
||||||
last;
|
last;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Попробуем найти изменение кармы
|
# Попробуем найти изменение кармы
|
||||||
} elsif (substr ($m->{message}, 0 - length ('++')) eq '++' || substr ($m->{message}, 0 - length ('--')) 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};
|
||||||
|
|||||||
Reference in New Issue
Block a user