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