Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Add another interesting example

That would probably require some tweaking before being close to
useful...
  • Loading branch information...
commit 8080b0635f1146ce97f08da9bef971ba1223bc2e 1 parent eae6c61
@yannk authored
Showing with 61 additions and 0 deletions.
  1. +61 −0 eg/irc_alert.pl
View
61 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;
Please sign in to comment.
Something went wrong with that request. Please try again.