From 8080b0635f1146ce97f08da9bef971ba1223bc2e Mon Sep 17 00:00:00 2001 From: Yann Kerherve Date: Wed, 16 Sep 2009 13:12:31 -0700 Subject: [PATCH] Add another interesting example That would probably require some tweaking before being close to useful... --- eg/irc_alert.pl | 61 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 eg/irc_alert.pl diff --git a/eg/irc_alert.pl b/eg/irc_alert.pl new file mode 100644 index 0000000..2916fb9 --- /dev/null +++ b/eg/irc_alert.pl @@ -0,0 +1,61 @@ +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 "; +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;