Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
62 lines (52 sloc) 1.54 KB
use strict;
use warnings;
use AnyEvent;
use AnyEvent::IRC::Client;
use Net::AppNotifications;
use Carp;
## A basic script that connects to irc and send notifications
## each time a message matching a regexp is send to the chan
## the regexp triggering a notification
my $re = qr/(appnotification|iphone|omg|alert|ddos|dos)/i;
my $nick = 'appnotifications';
my $key = shift or croak "usage: $0 <key> <irc server> <chan>";
my $server = shift || "localhost";
my $chan = shift || "#test";
unless ($chan =~ /^#/) {
warn "Channel must have a #";
$chan = "\#$chan";
}
my ($host, $port) = ($server =~ /^(.+):(\d+)$/);
$host ||= $server;
$port ||= 6667;
my $con = AnyEvent::IRC::Client->new;
my $c = AnyEvent->condvar;
my $timer;
my $notifier = Net::AppNotifications->new(key => $key);
$con->reg_cb(registered => sub { print "Hit ^C to interrupt\n"; });
$con->reg_cb(disconnect => sub { print "I'm out!\n"; $c->broadcast });
#use YAML;
#$con->reg_cb(read => sub { warn Dump $_[1] });
$con->reg_cb(
publicmsg => sub {
my $msg = $_[2]->{params}[1];
return unless $msg;
if ($msg =~ $re) {
$notifier->send(
message => "IRC $chan: $msg",
on_success => sub { print "delivered\n" },
on_error => sub { print "NOT delivered\n" },
);
}
},
);
$con->send_srv("JOIN", $chan);
#$con->send_chan(
# $chan,
# "PRIVMSG",
# $chan,
# "Hi, i'm a bot sending iPhone notifications!",
#);
$con->connect($host, $port, { nick => $nick });
$c->wait;
$con->disconnect;