#!/usr/bin/perl -w
use Net::IRC;
use strict;
use LWP;
# create the IRC object
my $irc = new Net::IRC;
my $nick = 'donbot';
# Create a connection object. You can have more than one "connection" per
# IRC object, but we'll just be working with one.
my $conn = $irc->newconn(
Server => shift || 'irc.ronpaul.name',
Nick => $nick,
Ircname => 'How Much',
Username => 'donatebot'
);
# We're going to add this to the conn hash so we know what channel we
# want to operate in.
#$conn->{channel} = shift || '##';
$conn->{channel} = "#ronpaulradio";
# some miscellaneous variables
my $last_donations=0;
my $current_donations=0;
sub on_connect {
# shift in our connection object that is passed automatically
my $conn = shift;
# when we connect, join our channel and greet it
$conn->join($conn->{channel});
$conn->{connected} = 1;
}
sub on_join {
# get our connection object and the event object, which is passed
# with this event automatically
my ($conn, $event) = @_;
# this is the nick that just joined
my $nick = $event->{nick};
# say hello to the nick in public
$conn->privmsg($conn->{channel}, "Hello, $nick!");
}
$conn->privmsg($conn->{channel}, "Hello, $nick!");
sub on_part {
art {
# pretty much the same as above
my ($conn, $event) = @_;
my $nick = $event->{nick};
$conn->privmsg($conn->{channel}, "Goodbye, $nick!");
}
sub get_donate {
# Create a user agent object
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
$ua->agent("MyApp/0.1 ");
# Create a request
my $req = HTTP::Request->new(GET => 'http://www.ronpaul2008.com/webservices/REST/donation-total?format=nvp');
# Pass request to the user agent and get a response back
my $res = $ua->request($req);
# Check the outcome of the response
if ($res->is_success) {
my $line = $res->content;
if ($line =~ /sum/){
$line =~ /sum=(.*?)&/;
my $amount =$1;
$last_donations=$current_donations;
$current_donations=$amount;
return $amount;
} else {
return "No sum found";
}
}
else {
return "Some error occurred";
}
}
sub on_public {
# on an event, we get connection object and event hash
my ($conn, $event) = @_;
# this is what was said in the event
my $text = $event->{args}[0];
my $text = $event->{args}[0];
# regex the text to see if it begins with !roker
if ( ( $text =~ /^\!\$/ || $text =~ /$nick/ ) && $text !~ /Donations are at/) {
my $message;
get_donate;
my $difference=$current_donations-$last_donations;
if($current_donations>$last_donations)
{
$message= "Donations are at $current_donations.";
}
if($difference==0)
{
$message.=" Nothing has changed!";
}
if($difference<=25)
{
$message.=" Chill out.";
}
$conn->privmsg($conn->{channel}, $message);
}
}
$conn->add_handler('public', \&on_public);
# The end of MOTD (message of the day), numbered 376 signifies we've connect
$conn->add_handler('376', \&on_connect);
# start IRC
$irc->start();