diff --git a/README.pod b/README.pod
index 84fc767..afd351c 100644
--- a/README.pod
+++ b/README.pod
@@ -13,8 +13,6 @@ This is the source code for perlbot, the resident infobot on Freenode’s
=over 4
-=item * L
-
=item * L
=back
diff --git a/etc/bb3.conf b/etc/bb3.conf
index 46e75a5..7af26b2 100644
--- a/etc/bb3.conf
+++ b/etc/bb3.conf
@@ -37,46 +37,11 @@ http_plugin_port 1092
- channel \#buubot
- channel \#\#turtles
- channel \#perlcafe
- channel \#webgui
- channel \#citadel
- channel \#modperl
- channel \#perl
- channel \#ipv6
- channel \#perlbot
- channel \#mrtg
- channel \#ipv6-fr
- channel \#freebsd-fr
- channel \#botpark
- channel \#css
- channel \#modus
- channel \#perl-cats
- channel \#cout.dev
- channel \#web-locals
- channel \#regex
- channel \#regexen
-
- ignore buubot
- ignore avarbot
- ignore jeval
- ignore gumbybrain
- ignore perlbot
- ignore buubot3
- ignore loudbot
- ignore serfbot
- ignore farnsworth
- ignore frogbot
- ignore EvanCarroll
- ignore EvanCarrol
- ignore EvanCaroll
- ignore EvanCarol
- ignore EC
+ channel \#\#perl
server 192.168.32.1
username perlbot
- password sindarin
+ password UjecyickehumBevGixrejparpheyndoc
port 65432
root_mask p3m/member/simcop2387
@@ -84,6 +49,8 @@ http_plugin_port 1092
channel \#freenode-perl-cabal
channel \#perl-help
+ channel \#perl
+ channel \#pdl
ignore purl
ignore perlbot
@@ -119,3 +86,20 @@ http_plugin_port 1092
port 65432
root_mask ~simcop238@simcop2387.info
+
+
+ channel \#buubot
+ channel \#perl
+ channel \#perlbot
+ channel \#botpark
+ channel \#perl-cats
+
+ server 192.168.32.1
+ username perlbot-libera
+ password AtlyeSlognakjabDatCujatyijFeach9
+ port 65432
+ root_mask perlbot/patrician/simcop2387
+
+ ignore lambdabot
+ ignore lambdabot2
+
diff --git a/etc/plugins.conf b/etc/plugins.conf
index 64874de..814ab6f 100644
--- a/etc/plugins.conf
+++ b/etc/plugins.conf
@@ -1,7 +1,7 @@
server "*" {
channel "*" {
plugin "*" { addressed: true }
- plugin "join" { access: op; addressed: true }
+ plugin "join" { access: root; addressed: true }
plugin "allowpaste" { access: op; addressed: true }
plugin "pastebinadmin" { access: op; addressed: true }
plugin "part" { access: op }
@@ -13,6 +13,20 @@ server "*" {
plugin "karma_modify" { addressed: false; }
plugin "seen" {addressed: false; }
}
+ channel "##perl" {
+ plugin "factoids" {
+ addressed: false;
+ }
+ plugin "eval" {addressed: true; }
+ plugin "deparse" {addressed: true; }
+ plugin "perldoc" {addressed: true; }
+ plugin "corelist" {addressed: true; }
+ plugin "default" {plugin: "factoids";}
+ }
+ channel "#pdl" {
+ plugin "eval" {addressed: false; }
+ plugin "deparse" {addressed: false; }
+ }
channel "#perl" {
plugin "eval" {addressed: false; }
plugin "deparse" {addressed: false; }
@@ -50,6 +64,24 @@ server "*" {
plugin "eval" {addressed: false; }
plugin "deparse" {addressed: false; }
}
+ channel "#regex" {
+ plugin "factoids" {
+ addressed: false;
+ }
+ plugin "default" {plugin: "factoids"; }
+ }
+ channel "#regexen" {
+ plugin "factoids" {
+ addressed: false;
+ }
+ plugin "default" {plugin: "factoids"; }
+ }
+ channel "#reg3x" {
+ plugin "factoids" {
+ addressed: false;
+ }
+ plugin "default" {plugin: "factoids"; }
+ }
}
server "discord.gg" {
channel "*" {
@@ -65,12 +97,34 @@ server "matrix.org" {
}
}
server "*.freenode.net" {
+ channel {
+ plugin "*" { addressed: true }
+ plugin "join" { access: root; addressed: true }
+ plugin "allowpaste" { access: op; addressed: true }
+ plugin "pastebinadmin" { access: op; addressed: true }
+ plugin "part" { access: op }
+ plugin "reload_plugins" { access: root }
+ plugin "restart" { access: root }
+ plugin "conf_dump" { access: root; }
+ plugin "save_config" { access: root; }
+ plugin "conf" { access: root; }
+ plugin "karma_modify" { addressed: false; }
+ plugin "seen" {addressed: false; }
+ }
+ channel "##perl" {
+ plugin "factoids" {
+ addressed: false;
+ }
+ plugin "default" {plugin: "factoids";}
+ plugin "eval" {addressed: true; }
+ plugin "deparse" {addressed: true; }
+ plugin "perldoc" {addressed: true; }
+ plugin "corelist" {addressed: true; }
+ }
+}
+server "*.libera.chat" {
channel "#perlbot" {
plugin "factoids" {
- namespaced: true;
- prefix_command: "!";
- chanspace: "#perlbot";
- serverspace: "freenode.net";
filtersep: true;
addressed: false;
}
@@ -79,31 +133,19 @@ server "*.freenode.net" {
channel "#regex" {
plugin "factoids" {
addressed: false;
- namespaced: true;
- chanspace: "#regex";
- serverspace: "freenode.net";
- prefix_command: "!";
- filtersep: true;
}
plugin "default" {plugin: "factoids"; }
}
channel "#regexen" {
plugin "factoids" {
addressed: false;
- namespaced: true;
- chanspace: "#regex";
- serverspace: "freenode.net";
- prefix_command: "!";
- filtersep: true;
}
plugin "default" {plugin: "factoids"; }
}
- channel "#lpmc" {
- plugin "eval" {addressed: false; }
- plugin "deparse" {addressed: false; }
+ channel "#reg3x" {
+ plugin "factoids" {
+ addressed: false;
+ }
+ plugin "default" {plugin: "factoids"; }
}
- channel "#learnprogramming" {
- plugin "eval" {addressed: false; }
- plugin "deparse" {addressed: false; }
- }
-}
+}
diff --git a/lib/Bot/BB3/PluginManager.pm b/lib/Bot/BB3/PluginManager.pm
index 90ece25..91e2d2e 100644
--- a/lib/Bot/BB3/PluginManager.pm
+++ b/lib/Bot/BB3/PluginManager.pm
@@ -7,6 +7,7 @@ use Data::Dumper;
use Text::Glob qw/match_glob/;
use Memoize;
use Regexp::Assemble;
+use Scalar::Util qw/blessed/;
use strict;
sub new {
@@ -453,6 +454,13 @@ sub _execute_plugin_chain {
for my $command ( @$commands ) {
local $@;
+
+ unless (blessed($command)) {
+ use Data::Dumper;
+ warn "Unblessed command! ".Dumper($command);
+ next;
+ };
+
my( $return, $output ) = eval { $command->command( $said, $self ) };
use Data::Dumper;
diff --git a/lib/Bot/BB3/Roles/Evalpastebin.pm b/lib/Bot/BB3/Roles/Evalpastebin.pm
index 7a2d692..0b0fd2a 100644
--- a/lib/Bot/BB3/Roles/Evalpastebin.pm
+++ b/lib/Bot/BB3/Roles/Evalpastebin.pm
@@ -50,7 +50,7 @@ sub _start {
# TODO setup TCP server.
$self->{server} = POE::Component::Server::TCP->new(
Port => 1784,
- Address =>'192.168.32.1',
+ Address =>'192.168.196.2',
ClientFilter => "POE::Filter::Line",
ClientInput => \&receive_paste,
);
diff --git a/plugins/factoids.pm b/plugins/factoids.pm
index 87361ca..bf78d9c 100644
--- a/plugins/factoids.pm
+++ b/plugins/factoids.pm
@@ -224,7 +224,10 @@ sub handle ($self, $said, $pm) {
$said->{body} =~ s/^\s*(what|who|where|how|when|why)\s+($COPULA_RE)\s+(?.*?)\??\s*$/$+{fact}/i;
+
my $prefix = $conf->{command_prefix};
+
+ warn "Checking for prefix: $prefix in ".Dumper($conf);
return unless $prefix;
$said->{nosuggest} = 1;
diff --git a/plugins/pastebinadmin.pm b/plugins/pastebinadmin.pm
index 61f7ca8..5257c7c 100644
--- a/plugins/pastebinadmin.pm
+++ b/plugins/pastebinadmin.pm
@@ -22,11 +22,12 @@ sub dbh {
return $self->{$env . "dbh"};
}
- if ($env =~ /^www|dev$/) {
- $self->{$env . "dbh"} = DBI->connect( "dbi:SQLite:dbname=/var/www/domains/perl.bot/".$env."/pastes.db", "", "", { PrintError => 0, RaiseError => 1 } );
- } elsif ($env eq 'asn') {
- $self->{$env . "dbh"} = DBI->connect( "dbi:SQLite:dbname=var/asn.db", "", "", { PrintError => 0, RaiseError => 1 } );
- }
+ my $dbnames = {
+ www => "perlbot_pastes",
+ dev => "perlbot_pastes_dev",
+ };
+
+ $self->{$env . "dbh"} = DBI->connect( "dbi:Pg:dbname=".$dbnames->{$env}, "perlbot_pastebin", "ignored", { PrintError => 2, RaiseError => 1 } );
return $self->{$env."dbh"};
}
@@ -35,7 +36,6 @@ sub postload {
delete $self->{wwwdbh}; # UGLY HAX GO.
delete $self->{devdbh};
- delete $self->{asndbh};
# Basically we delete the dbh we cached so we don't fork
# with one active
}
@@ -43,13 +43,13 @@ sub postload {
sub add_ban_word {
my ($self, $env, $who, $where, $word) = @_;
- $self->dbh($env)->do("INSERT INTO banned_words (word, who, 'where') VALUES (?, ?, ?)", {}, $word, $who, $where);
+ $self->dbh($env)->do(q{INSERT INTO banned_words (word, who, "where") VALUES (?, ?, ?)}, {}, $word, $who, $where);
}
sub get_ip_for_paste {
my ($self, $env, $id) = @_;
- my ($ip) = @{$self->dbh($env)->selectrow_arrayref("SELECT ip FROM posts p JOIN slugs s ON s.post_id = p.id WHERE s.slug = ? or p.id = ?", {}, $id, $id) || ['0.0.0.0']};
+ my ($ip) = @{$self->dbh($env)->selectrow_arrayref("SELECT ip FROM posts p JOIN slugs s ON s.post_id = p.id WHERE s.slug = ?", {}, $id) || ['0.0.0.0']};
return sprintf("%03d.%03d.%03d.%03d", split(/\./,$ip));
}
@@ -59,7 +59,7 @@ sub get_asn_for_paste {
my $ip = $self->get_ip_for_paste($env, $id);
- my ($asn) = @{$self->dbh('asn')->selectrow_arrayref("SELECT asn FROM asn WHERE ? >= start AND ? <= end", {}, $ip, $ip) || []}[0];
+ my ($asn) = @{$self->dbh('www')->selectrow_arrayref('SELECT asn FROM asn WHERE ? >= start AND ? <= "end"', {}, $ip, $ip) || []}[0];
return $asn;
}
@@ -69,7 +69,7 @@ sub ban_user_paste {
my $ip = $self->get_ip_for_paste($env, $id);
if ($ip) {
- $self->dbh($env)->do("INSERT INTO banned_ips (ip, who, 'where') VALUES (?, ?, ?);", {}, $ip, $who, $where);
+ $self->dbh($env)->do(q{INSERT INTO banned_ips (ip, who, "where") VALUES (?, ?, ?);}, {}, $ip, $who, $where);
return "USER WAS BANNED FOR THIS POST";
} else {
return "Failed to find IP for paste in db";
@@ -83,7 +83,7 @@ sub ban_asn_paste {
my $asn = $self->get_asn_for_paste($env, $id);
if ($asn) {
- $self->dbh($env)->do("INSERT INTO banned_asns (asn, who, 'where') VALUES (?, ?, ?);", {}, $asn, $who, $where);
+ $self->dbh($env)->do(q{INSERT INTO banned_asns (asn, who, "where") VALUES (?, ?, ?);}, {}, $asn, $who, $where);
return "ISP WAS BANNED FOR THIS POST";
} else {
return "Failed to find ISP for paste in db. yell at simcop2387; ".encrypt("[$id][$ip][$asn]");
diff --git a/plugins/supereval.pm b/plugins/supereval.pm
index 2058298..88e01dd 100644
--- a/plugins/supereval.pm
+++ b/plugins/supereval.pm
@@ -170,6 +170,11 @@ sub command {
if (($said->{channel} eq "#perl6" || $said->{channel} eq "#raku") && $said->{addressed} && !$said->{nested} && $orig_type =~ /^[ws]*$/) {
$type = "perl6"
}
+
+ # we were addressed, but not nested, in #perl6. Switch to perl6, otherwise use perl5
+ if ($said->{channel} eq "#pdl" && !$said->{nested} && $orig_type =~ /^[ws]*$/) {
+ $type = "perl5.34"
+ }
if ($command eq 'r' && (!$said->{addressed} && !$said->{nested} && ($said->{channel} ne "#perl6" && $said->{channel} eq '#raku'))) {
return ("handled", "");
@@ -264,7 +269,7 @@ sub command {
"Columbus Day" => {prob => 0.00, chars => []},
"Confederate Memorial Day" => {prob => 0.00, chars => []},
"Earth Day" => {prob => 0.50, chars => ["\x{1F30E}", "\x{1F30D}", "\x{1F30F}"]},
- "Election Day" => {prob => 1.00, chars => ["\x{1F5F3}"]},
+ "Election Day" => {prob => 1.00, chars => ["\x{1F5F3}\x{FE0F}"]},
"Emancipation Day" => {prob => 0.00, chars => []},
"Fathers Day" => {prob => 0.00, chars => []},
"Flag Day" => {prob => 0.00, chars => []}, # TODO all country flags
diff --git a/plugins/translate.pm b/plugins/translate.pm
index 62760f1..ffe360e 100644
--- a/plugins/translate.pm
+++ b/plugins/translate.pm
@@ -1,23 +1,30 @@
use strict;
use warnings;
-#use Bing::Translate;
+use LWP::UserAgent;
+use JSON::MaybeXS qw/decode_json encode_json/;
+use Data::Dumper;
+my $ua = LWP::UserAgent->new();
return sub {
my( $said ) = @_;
-open(my $fh, ";
-chomp $secret;
-close($fh);
-
-my $tro = Bing::Translate->new($cid, $secret);
if ($said->{body} =~ /^\s*(?\S+)\s+(?\S+)\s+(?.*)$/) {
-# print $secret;
- print $tro->translate($+{text}, $+{from}, $+{to});
+ my $json = {
+ source_language => $+{from},
+ target_language => $+{to},
+ text => $+{text}
+ };
+
+ my $resp = $ua->post("http://192.168.1.229:10000/translate_text", Content => encode_json($json));
+
+ my $cont = $resp->decoded_content();
+ my $output = decode_json($cont);
+
+ print Dumper $output;
+
} else {
print "help text";
}