dirkobot/lib/Bot/BasicBot/Pluggable/Module/RssPromote.pm
2011-07-02 16:25:27 -04:00

58 lines
1.5 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 $command = ".c group %s Resident";
my $adminchan = "#dirkocraft-alert";
my $welcomemsg = "Welcome to &9Dirkocraft&4, &6%s";
my $ua = LWP::UserAgent->new();
sub help {return ""}
our %seenusers;
our $counter = 0;
my $first = 1;
sub tick { # called every 5 seconds
my $self = shift; # get ourself, duh
if ($first) {
$self->say({who => "nickserv", body => "identify sindarin", channel => "msg"})
$first = 0;
}
unless ($counter++ % 3) {# every 15 seconds, 3 * 5 seconds, check the feed
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 (!exists($seenusers{$user})) {
$seenusers{$user} = 1;
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();
}
};
}
1;