Skip to content

Commit

Permalink
Add another interesting example
Browse files Browse the repository at this point in the history
That would probably require some tweaking before being close to
useful...
  • Loading branch information
yannk committed Sep 16, 2009
1 parent eae6c61 commit 8080b06
Showing 1 changed file with 61 additions and 0 deletions.
61 changes: 61 additions & 0 deletions 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 <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;

0 comments on commit 8080b06

Please sign in to comment.