added autopromote
This commit is contained in:
parent
766c73f32c
commit
34e94e1f91
5 changed files with 154 additions and 1 deletions
26
dbdump.pl
Normal file
26
dbdump.pl
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
|
||||||
|
use DBI;
|
||||||
|
|
||||||
|
my $dbh = DBI->connect("dbi:SQLite:dbname=bot-basicbot.sqlite","","");
|
||||||
|
|
||||||
|
|
||||||
|
=for comment
|
||||||
|
CREATE TABLE "basicbot" (
|
||||||
|
id INT PRIMARY KEY,
|
||||||
|
namespace TEXT,
|
||||||
|
store_key TEXT,
|
||||||
|
store_value LONGBLOB );
|
||||||
|
=cut
|
||||||
|
|
||||||
|
my $sth = $dbh->prepare("SELECT * FROM basicbot;");
|
||||||
|
$sth->execute();
|
||||||
|
|
||||||
|
while(my $row = $sth->fetchrow_hashref) {
|
||||||
|
$row->{store_value} =~ s/text\s*.*\s*alternat.*factoids$//ig;
|
||||||
|
$row->{store_value} =~ s/isis_\w*//ig;
|
||||||
|
print $row->{store_key}, "\n\t\t", $row->{store_value}, "\n" if ($row->{store_key} =~ s/infobot_//)
|
||||||
|
}
|
54
lib/Bot/BasicBot/Pluggable/Module/RssPromote.pm
Normal file
54
lib/Bot/BasicBot/Pluggable/Module/RssPromote.pm
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
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 $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"})
|
||||||
|
}
|
||||||
|
|
||||||
|
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);
|
||||||
|
$self->say({body => $cmd, channel => $adminchan });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
printf "Damn: %s\n",$res->status_line();
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
1;
|
4
main.pl
4
main.pl
|
@ -8,7 +8,7 @@ use lib './lib';
|
||||||
use Bot::BasicBot::Pluggable;
|
use Bot::BasicBot::Pluggable;
|
||||||
|
|
||||||
my $bot = Bot::BasicBot::Pluggable->new(
|
my $bot = Bot::BasicBot::Pluggable->new(
|
||||||
channels => ["#dirkocraft", "#dirkocraft-admin", "#dirkocraft-alert", "#dirkocraft-wanderer"],
|
channels => ["#dirkocraft", "#dirkocraft-admin", "#dirkocraft-alert", "#dirkocraft-wanderer", "#dirkocraft-local"],
|
||||||
server => "irc.freenode.net",
|
server => "irc.freenode.net",
|
||||||
port => "6667",
|
port => "6667",
|
||||||
|
|
||||||
|
@ -22,6 +22,8 @@ my $bot = Bot::BasicBot::Pluggable->new(
|
||||||
|
|
||||||
my $info = $bot->load("DirkMod");
|
my $info = $bot->load("DirkMod");
|
||||||
my $seen = $bot->load("Seen");
|
my $seen = $bot->load("Seen");
|
||||||
|
my $rss = $bot->load("RssPromote");
|
||||||
|
|
||||||
$info->set(user_require_question => 0);
|
$info->set(user_require_question => 0);
|
||||||
$info->set(user_passive_answer => 1);
|
$info->set(user_passive_answer => 1);
|
||||||
$info->set(user_allow_searching =>1);
|
$info->set(user_allow_searching =>1);
|
||||||
|
|
45
res.pl
Normal file
45
res.pl
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
use YAML qw/LoadFile/;
|
||||||
|
|
||||||
|
our $resdb;
|
||||||
|
|
||||||
|
sub checkres {
|
||||||
|
my ($res, $x, $y, $z) = @_;
|
||||||
|
my $areas = $res->{Areas};
|
||||||
|
|
||||||
|
for my $area (keys %$areas) {
|
||||||
|
my ($mx, $my, $mz, $nx, $ny, $nz) = @{$res->{Areas}{$area}}{qw(X2 Y2 Z2 X1 Y1 Z1)};
|
||||||
|
|
||||||
|
if ($x >= $mx && $y >= $my && $z >= $mz && $x < $nx && $y < $ny && $z < $nz) { # check the rectangle
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub getsubzone
|
||||||
|
{
|
||||||
|
my ($zones, $x, $y, $z) = @_;
|
||||||
|
|
||||||
|
for my $zone (keys %$zones) {
|
||||||
|
my $zhr = $zones->{$zone};
|
||||||
|
if (checkres($zhr, $x, $y, $z)) {
|
||||||
|
return ($zone, getsubzone($zhr->{Subzones}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ();
|
||||||
|
}
|
||||||
|
|
||||||
|
sub findres {
|
||||||
|
my ($x, $y, $z) = @_;
|
||||||
|
|
||||||
|
my @names = getsubzone($resdb->{Residences}, $x, $y, $z);
|
||||||
|
|
||||||
|
return join ".", @names;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub loadres
|
||||||
|
{
|
||||||
|
$resdb = LoadFile("var/res.yml");
|
||||||
|
}
|
||||||
|
|
||||||
|
loadres();
|
26
rsstest.pl
Normal file
26
rsstest.pl
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
|
||||||
|
|
||||||
|
use lib './lib';
|
||||||
|
|
||||||
|
use Bot::BasicBot::Pluggable;
|
||||||
|
|
||||||
|
my $bot = Bot::BasicBot::Pluggable->new(
|
||||||
|
channels => ["#DCTV"],
|
||||||
|
server => "irc.rizon.net",
|
||||||
|
port => "6667",
|
||||||
|
|
||||||
|
nick => "dirkobot-rss",
|
||||||
|
altnicks => ["pbot", "pluggable"],
|
||||||
|
username => "simcop2387",
|
||||||
|
name => "Yet Another Pluggable Bot, for dirkocraft",
|
||||||
|
|
||||||
|
ignore_list => [qw()],
|
||||||
|
);
|
||||||
|
|
||||||
|
my $info = $bot->load("RssPromote");
|
||||||
|
|
||||||
|
$bot->run();
|
Loading…
Add table
Reference in a new issue