Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
45ece86a28 |
5
README
5
README
@@ -13,7 +13,7 @@ aleesa-games
|
||||
|
||||
Ответ направляется в redis-канал, указанный в поле plugin входящего сообщения.
|
||||
|
||||
Формат протокола - см README от aleesa-misc.
|
||||
Формат протокола - см README от aleesa-misc-go.
|
||||
|
||||
|
||||
Как это запустить?
|
||||
@@ -33,5 +33,6 @@ development tools - gcc, gcc-g++, perl-devel, make, cmake и так далее.
|
||||
В каталоге contrib находится скрипт для alpine linux, системы инициализации openrc. Этот скрипт достаточно положить В
|
||||
/etc/init.d/aleesa-games сконфигурить сервис по инструкции выше и после этого сервис запускается командой:
|
||||
service aleesa-games start
|
||||
в автозагрузку его можно прописать через команду
|
||||
|
||||
в автозагрузку его можно прописать через команду:
|
||||
rc-update add aleesa-games default
|
||||
|
||||
3
cpanfile
3
cpanfile
@@ -17,13 +17,12 @@ requires 'Log::Any', '==1.710';
|
||||
requires 'Log::Any::Adapter', '==1.710';
|
||||
requires 'Log::Any::For::Std', '==0.05';
|
||||
requires 'Math::Random::Secure', '==0.080001';
|
||||
requires 'Mojolicious', '==9.22';
|
||||
requires 'Mojolicious', '==9.24';
|
||||
requires 'Mojo::IOLoop', '0';
|
||||
requires 'Mojo::IOLoop::Signal', '==0.003';
|
||||
requires 'Mojo::Redis', '==3.27';
|
||||
requires 'Mojo::Util', '0';
|
||||
requires 'POSIX', '0';
|
||||
requires 'Protocol::Redis::XS', '0';
|
||||
requires 'String::Random', '==0.32';
|
||||
requires 'open', '0';
|
||||
requires 'utf8', '0';
|
||||
|
||||
52
lib/Games.pm
52
lib/Games.pm
@@ -11,8 +11,6 @@ use open qw (:std :utf8);
|
||||
use Clone qw (clone);
|
||||
use Data::Dumper qw (Dumper);
|
||||
use Log::Any qw ($log);
|
||||
# Чтобы "уж точно" использовать hiredis-биндинги, загрузим этот модуль перед Mojo::Redis
|
||||
use Protocol::Redis::XS ();
|
||||
use Mojo::Redis ();
|
||||
use Mojo::IOLoop ();
|
||||
use Mojo::IOLoop::Signal ();
|
||||
@@ -26,7 +24,11 @@ use Exporter qw (import);
|
||||
our @EXPORT_OK = qw (RunGames);
|
||||
|
||||
my $c = LoadConf ();
|
||||
my $fwd_cnt = $c->{'forward_max'} // 5;
|
||||
my $fwd_cnt = 5;
|
||||
|
||||
if (defined $c->{'forward_max'}) {
|
||||
$fwd_cnt = $c->{'forward_max'};
|
||||
}
|
||||
|
||||
# Основной парсер
|
||||
my $parse_message = sub {
|
||||
@@ -37,6 +39,18 @@ my $parse_message = sub {
|
||||
$answer->{message} = undef;
|
||||
|
||||
if (defined $answer->{misc}) {
|
||||
unless (defined $answer->{misc}->{answer}) {
|
||||
$answer->{misc}->{answer} = 1;
|
||||
}
|
||||
|
||||
unless (defined $answer->{misc}->{bot_nick}) {
|
||||
$answer->{misc}->{bot_nick} = '';
|
||||
}
|
||||
|
||||
unless (defined $answer->{misc}->{csign}) {
|
||||
$answer->{misc}->{csign} = $c->{csign};
|
||||
}
|
||||
|
||||
unless (defined $answer->{misc}->{fwd_cnt}) {
|
||||
$answer->{misc}->{fwd_cnt} = 1;
|
||||
} else {
|
||||
@@ -49,17 +63,25 @@ my $parse_message = sub {
|
||||
}
|
||||
}
|
||||
|
||||
unless (defined $answer->{misc}->{answer}) {
|
||||
$answer->{misc}->{answer} = 1;
|
||||
unless (defined $answer->{misc}->{good_morning}) {
|
||||
$answer->{misc}->{good_morning} = 0;
|
||||
}
|
||||
|
||||
unless (defined $answer->{misc}->{csign}) {
|
||||
$answer->{misc}->{csign} = '!';
|
||||
unless (defined $answer->{misc}->{msg_format}) {
|
||||
$answer->{misc}->{msg_format} = 0;
|
||||
}
|
||||
|
||||
unless (defined $answer->{misc}->{username}) {
|
||||
$answer->{misc}->{username} = '';
|
||||
}
|
||||
} else {
|
||||
$answer->{misc}->{answer} = 1;
|
||||
$answer->{misc}->{csign} = '!';
|
||||
$answer->{misc}->{msg_format} = 0;
|
||||
$answer->{misc}->{answer} = 1;
|
||||
$answer->{misc}->{bot_nick} = '';
|
||||
$answer->{misc}->{csign} = $c->{csign};
|
||||
$answer->{misc}->{fwd_cnt} = 1;
|
||||
$answer->{misc}->{good_morning} = 0;
|
||||
$answer->{misc}->{msg_format} = 0;
|
||||
$answer->{misc}->{username} = '';
|
||||
}
|
||||
|
||||
my $send_to = $m->{plugin};
|
||||
@@ -67,8 +89,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 @cmds = qw (fish fishing рыба рыбка рыбалка);
|
||||
my $bingo = 0;
|
||||
|
||||
@@ -158,10 +180,8 @@ sub RunGames {
|
||||
);
|
||||
}
|
||||
|
||||
Mojo::IOLoop::Signal->on (
|
||||
TERM => $__signal_handler,
|
||||
INT => $__signal_handler,
|
||||
);
|
||||
Mojo::IOLoop::Signal->on (TERM => $__signal_handler);
|
||||
Mojo::IOLoop::Signal->on (INT => $__signal_handler);
|
||||
|
||||
do { Mojo::IOLoop->start } until Mojo::IOLoop->is_running;
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user