Add initial redis support
This commit is contained in:
1
cpanfile
1
cpanfile
@@ -26,6 +26,7 @@ requires 'Log::Any::For::Std';
|
|||||||
requires 'Math::Random::Secure';
|
requires 'Math::Random::Secure';
|
||||||
requires 'Mojo::Base';
|
requires 'Mojo::Base';
|
||||||
requires 'Mojo::IOLoop';
|
requires 'Mojo::IOLoop';
|
||||||
|
requires 'Mojo::Redis'
|
||||||
requires 'Mojo::UserAgent';
|
requires 'Mojo::UserAgent';
|
||||||
requires 'Mojo::UserAgent::Cached';
|
requires 'Mojo::UserAgent::Cached';
|
||||||
requires 'String::Random';
|
requires 'String::Random';
|
||||||
|
|||||||
@@ -52,7 +52,7 @@
|
|||||||
|
|
||||||
# Openwatermap plugin.
|
# Openwatermap plugin.
|
||||||
"openweathermap" : {
|
"openweathermap" : {
|
||||||
"appid" : "md5sum-like_string",
|
"appid" : "md5sum-like_string"
|
||||||
},
|
},
|
||||||
|
|
||||||
# Stuff for telegram itself.
|
# Stuff for telegram itself.
|
||||||
@@ -70,4 +70,10 @@
|
|||||||
|
|
||||||
# Unprivileged user to run this bot from.
|
# Unprivileged user to run this bot from.
|
||||||
"user" : "unit",
|
"user" : "unit",
|
||||||
|
|
||||||
|
"redis_server": "127.0.0.1",
|
||||||
|
"redis_port" : "6379",
|
||||||
|
"redis_channels" : [
|
||||||
|
"telegram"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
28
lib/RedisLib.pm
Normal file
28
lib/RedisLib.pm
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
package RedisLib;
|
||||||
|
|
||||||
|
use 5.018;
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use utf8;
|
||||||
|
use open qw (:std :utf8);
|
||||||
|
use Log::Any qw ($log);
|
||||||
|
use Data::Dumper;
|
||||||
|
|
||||||
|
use version; our $VERSION = qw (1.0);
|
||||||
|
use Exporter qw (import);
|
||||||
|
our @EXPORT_OK = qw (redisListener);
|
||||||
|
|
||||||
|
sub parse_message {
|
||||||
|
my $self = shift;
|
||||||
|
my $m = shift;
|
||||||
|
my $answer = $m;
|
||||||
|
my $send_to = $answer->{from};
|
||||||
|
|
||||||
|
$log->error (Dumper $self);
|
||||||
|
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
1;
|
||||||
|
|
||||||
|
# vim: set ft=perl noet ai ts=4 sw=4 sts=4:
|
||||||
@@ -19,6 +19,7 @@ use BotLib::Conf qw (LoadConf);
|
|||||||
use BotLib::Fortune qw (Fortune);
|
use BotLib::Fortune qw (Fortune);
|
||||||
use BotLib::Karma qw (KarmaSet);
|
use BotLib::Karma qw (KarmaSet);
|
||||||
use BotLib::Util qw (trim fmatch);
|
use BotLib::Util qw (trim fmatch);
|
||||||
|
use RedisLib qw (redisListener);
|
||||||
|
|
||||||
use version; our $VERSION = qw (1.0);
|
use version; our $VERSION = qw (1.0);
|
||||||
use Exporter qw (import);
|
use Exporter qw (import);
|
||||||
@@ -31,6 +32,7 @@ my $myusername;
|
|||||||
my $myfirst_name;
|
my $myfirst_name;
|
||||||
my $mylast_name;
|
my $mylast_name;
|
||||||
my $myfullname;
|
my $myfullname;
|
||||||
|
my $redis_mutex;
|
||||||
|
|
||||||
has token => $c->{telegrambot}->{token};
|
has token => $c->{telegrambot}->{token};
|
||||||
|
|
||||||
@@ -356,6 +358,28 @@ sub __on_msg {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub __redisListener {
|
||||||
|
return if ($redis_mutex);
|
||||||
|
|
||||||
|
my $redis = Mojo::Redis->new (
|
||||||
|
sprintf 'redis://%s:%s/1', $c->{redis_server}, $c->{redis_port}
|
||||||
|
);
|
||||||
|
|
||||||
|
my $pubsub = $redis->pubsub;
|
||||||
|
my $sub;
|
||||||
|
|
||||||
|
foreach my $channel (@{$c->{redis_channels}}) {
|
||||||
|
$log->info ("Subscribing to $channel");
|
||||||
|
|
||||||
|
$sub->{$channel} = $pubsub->json ($channel)->listen (
|
||||||
|
$channel => sub { \&redis_parse_message->(@_); }
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$redis_mutex = 1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
# setup our bot
|
# setup our bot
|
||||||
sub init {
|
sub init {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
@@ -369,6 +393,7 @@ sub init {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$self->add_listener (\&__on_msg);
|
$self->add_listener (\&__on_msg);
|
||||||
|
$self->add_listener (\&__redisListener);
|
||||||
$self->add_repeating_task (900, \&__cron);
|
$self->add_repeating_task (900, \&__cron);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user