dirkobot/lib/Bot/BasicBot/Pluggable/Module/RssPromote.pm
2011-07-14 01:28:09 -04:00

116 lines
2.8 KiB
Perl

package Bot::BasicBot::Pluggable::Module::RssPromote;
use strict;
use warnings;
use Data::Dumper;
use base qw(Bot::BasicBot::Pluggable::Module);
use HTML::TreeBuilder;
use LWP::UserAgent;
my $regurl = "http://www.dirkocraft.com/regbackend";
my $donatorurl = "http://www.dirkocraft.com/donationsview";
my $command = ".c group %s Resident";
my $doncommand = ".c group %s Citizen";
my $adminchan = "#denonline";
my $welcomemsg = "Welcome to &9Dirkocraft&4, &6%s";
my $ua = LWP::UserAgent->new();
sub help {return ""}
sub is_resident {
my $self = shift;
my $resident = shift;
$self->get("resident_". lc $resident);
}
sub make_resident {
my $self = shift;
my $resident = shift;
$self->set("resident_". lc $resident, 1);
}
sub is_donator {
my $self = shift;
my $resident = shift;
$self->get("donator_". lc $resident);
}
sub make_donator {
my $self = shift;
my $resident = shift;
$self->set("donator_". lc $resident, 1);
}
sub check_resident {
my $self = shift;
my $res = $ua->get($regurl);
if ($res->is_success()) {
my $cont = $res->content();
my $root = HTML::TreeBuilder->new_from_content($cont);
my $users_elem = $root->look_down(_tag => "div", class => qr/view-registrationbackendstupid/);
my $ulist = $users_elem->format();
my @users = ($ulist =~ m/\*\s*(\w+)/g);
for my $user (@users) {
if (!$self->is_resident($user)) {
$self->make_resident($user);
my $cmd = sprintf($command, $user);
my $welcome = sprintf($welcomemsg, $user);
$self->say({body => $cmd, channel => $adminchan });
$self->say({body => $welcome, channel => $adminchan });
}
}
} else {
printf "Damn: %s\n",$res->status_line();
}
}
sub check_donator {
my $self = shift;
my $res = $ua->get($donatorurl);
print "DONATOR\n";
if ($res->is_success()) {
my $cont = $res->content();
my $root = HTML::TreeBuilder->new_from_content($cont);
my $users_elem = $root->look_down(_tag => "div", class => qr/view-id-donationsview/);
my $ulist = $users_elem->format();
my @users = ($ulist =~ m/Completed\s+(\w+)/g);
print Dumper(\@users, $ulist);
for my $user (@users) {
print "$user\n";
if (!$self->is_donator($user)) {
print "$user 2\n";
$self->make_donator($user);
my $cmd = sprintf($doncommand, $user);
$self->say({body => $cmd, channel => $adminchan });
}
}
} else {
printf "Damn: %s\n",$res->status_line();
}
}
our $counter = 0;
sub tick { # called every 5 seconds
my $self = shift; # get ourself, duh
$counter++;
# every 15 seconds, 3 * 5 seconds, check the feed
$self->check_resident() unless ($counter % 3)
# every 3 minutes, 36 * 5 seconds, check the feed
$self->check_donator() unless ($counter % 36);
}
1;