echo track messages
[MQR.git] / scripts / mqr-track.pl
1 #!/usr/bin/perl
2 use warnings;
3 use strict;
4 use AnyEvent::Redis;
5 use Data::Dump qw(dump);
6
7 use lib 'lib';
8 use MQR::Redis;
9
10 my $track;
11 my $regex;
12
13 MQR::Redis->redis->psubscribe('*', sub {
14         my($message, $channel) = @_;
15         if ( $channel =~ m/^MSG / ) {
16                 if ( $message =~ m/^!track\s*(.+)/ ) {
17                         $track->{$1} = $channel;
18                         $regex = join('|', keys %$track);
19                         warn "# track regex: $regex\n";
20                 } elsif ( $regex && $message =~ m/($regex)/ ) {
21                         my $found = $1;
22                         my $body = "TRACK [$found] $channel | $message";
23                         print "$body\n";
24                         my $to = $track->{$found} || die "no $1 in ",dump($track);
25                         $to =~ s/^MSG /SEND /g;
26                         MQR::Redis->publish( $to, $body );
27                 }
28         } else {
29                 warn "$channel | $message\n";
30         }
31 });
32
33 AnyEvent->condvar->recv;
34