display presence in web browser
[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 $m = $message;
22                         while ( $m =~ s/($regex)// ) {
23                                 my $found = $1;
24                                 my $body = "TRACK [$found] $channel | $message";
25                                 print "$body\n";
26                                 my $to = $track->{$found} || die "no $1 in ",dump($track);
27                                 $to =~ s/^MSG /SEND /g;
28                                 MQR::Redis->publish( $to, $body );
29                         }
30                 } else {
31                         warn "$channel | $message\n";
32                 }
33         } else {
34                 warn "$channel | $message\n";
35         }
36 });
37
38 AnyEvent->condvar->recv;
39