1
0
Fork 0
mirror of https://github.com/perlbot/perlbuut synced 2025-06-06 14:05:40 -04:00

Updates i hadnt done for a while

This commit is contained in:
Ryan Voots 2023-09-27 10:22:31 -04:00
parent 5d9ff37873
commit b9d1ee614e
7 changed files with 109 additions and 13 deletions

View file

@ -359,6 +359,7 @@ sub _create_plugin_chain {
my $commands = $pre_built_chains->{commands};
warn "in chain create parse: $said->{body}\n";
my $command_list = $self->_parse_for_commands( $said, $commands );
warn "got command list: [".join(',', $command_list->@*)."]";
warn "in chain create post-parse: $said->{body}\n";
return [ $pre, $command_list, $handlers, $post ];
@ -407,6 +408,8 @@ sub _parse_for_commands {
sub _filter_plugin_list {
my( $self, $said, $plugins ) = @_;
warn "Checking plugin filter: [".join(", ", map {$_->{name}} $plugins->@*)."]";
my @chain;
for( @$plugins ) {
my $conf = $self->plugin_conf( $_->{name}, $said->{server}, $said->{channel} );

View file

@ -50,7 +50,7 @@ sub _start {
# TODO setup TCP server.
$self->{server} = POE::Component::Server::TCP->new(
Port => 1784,
Address =>'192.168.196.2',
Address =>'192.168.64.2',
ClientFilter => "POE::Filter::Line",
ClientInput => \&receive_paste,
);

12
plugins/dumpsaid.pm Normal file
View file

@ -0,0 +1,12 @@
use Data::Dumper;
no warnings 'void';
sub {
my( $said ) = @_;
print Dumper($said);
return "FOO";
};
__DATA__
Prints the full said object out, used for debugging

View file

@ -57,6 +57,7 @@ my %commandhash = (
"substitute" => \&get_fact_substitute,
"nchain" => \&get_fact_namespace_chain,
"factgrep" => \&get_fact_grep,
"factseo" => \&get_fact_seo,
);
my $commands_re = join '|', keys %commandhash;
@ -796,6 +797,57 @@ SELECT DISTINCT ON(original_subject) original_subject, predicate FROM get_latest
}
sub get_fact_seo ($self, $body, $name, $said) {
my ($aliasserver, $aliasnamespace) = $self->get_alias_namespace($said);
my ($server, $namespace) = $self->get_namespace($said);
my $results;
my $value_only = $body =~ s/\s*--val\s+//;
$results = $self->dbh->selectall_arrayref("
WITH RECURSIVE factoid_lookup_order_inner (depth, namespace, server, alias_namespace, alias_server, parent_namespace, parent_server, recursive, gen_server, gen_namespace) AS (
SELECT 0 AS depth, namespace, server, alias_namespace, alias_server, parent_namespace, parent_server, recursive, generated_server, generated_namespace
FROM factoid_config
WHERE namespace = ? AND server = ?
UNION ALL
SELECT p.depth+1 AS depth, m.namespace, m.server, m.alias_namespace, m.alias_server, m.parent_namespace, m.parent_server, m.recursive, m.generated_server, m.generated_namespace
FROM factoid_config m
INNER JOIN factoid_lookup_order_inner p
ON m.namespace = p.parent_namespace AND m.server = p.parent_server AND p.recursive
),
factoid_lookup_order (depth, namespace, server, alias_namespace, alias_server, parent_namespace, parent_server, recursive, gen_server, gen_namespace) AS (
SELECT * FROM factoid_lookup_order_inner
UNION ALL
SELECT 0, '', '', NULL, NULL, NULL, NULL, false, '', '' WHERE NOT EXISTS (table factoid_lookup_order_inner)
),
get_latest_factoid (depth, factoid_id, subject, copula, predicate, author, modified_time, compose_macro, protected, original_subject, deleted, server, namespace) AS (
SELECT lo.depth, factoid_id, subject, copula, predicate, author, modified_time, compose_macro, protected, original_subject, f.deleted, f.server, f.namespace
FROM factoid f
INNER JOIN factoid_lookup_order lo
ON f.generated_server = lo.gen_server
AND f.generated_namespace = lo.gen_namespace
WHERE original_subject ~* ?
ORDER BY depth ASC, factoid_id DESC
)
SELECT DISTINCT ON(original_subject) original_subject, predicate FROM get_latest_factoid WHERE NOT deleted ORDER BY original_subject ASC, depth ASC, factoid_id DESC",
{ Slice => {} },
$namespace, $server,
$body,
);
print STDERR "Got results: ".Dumper($results);
if ($results and @$results) {
my $ret_string = encode_json([map {$value_only ? $_->{predicate} : $_->{original_subject}} @$results]);
return $ret_string;
} else {
return "[]";
}
}
sub get_fact_oldsearch ($self, $body, $name, $said) {
my ($aliasserver, $aliasnamespace) = $self->get_alias_namespace($said);
my ($server, $namespace) = $self->get_namespace($said);

View file

@ -1,3 +1,5 @@
package Bot::BB3::Plugin::Get;
use LWP::UserAgent;
use HTML::TreeBuilder::XPath;
@ -13,30 +15,49 @@ package
}
};
sub new {
my ($class) = @_;
sub {
my( $said ) = @_;
my $self = bless {}, $class;
$self->{name} = "get";
$self->{opts} = {
command => 1,
};
return $self;
}
sub command {
my( $self, $said, $pm ) = @_;
print STDERR "in get command plugin\n";
my $ua = LWP::UserAgent->new( agent => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko, really Perlbot) Chrome/45.0.2454.85 Safari/537.36" );
my $url;
print STDERR "Checking ".$said->{body}." for urls\n";
if( $said->{body} =~ s{(https?://\S+)\s*}{} ) {
print STDERR "First check found, $1\n";
$url = $1;
}
elsif( $said->{body} =~ s/(\S+)\s*// ) {
print STDERR "Found bare domain/url $1\n";
$url = "http://$1";
}
else {
print "That doesn't look like a url..";
return;
print STDERR "Got broken url\n";
return ('handled', "That doesn't look like a url to me.");
}
print STDERR "GOT URL: $url\n";
my $resp = $ua->get( $url );
if( not $resp ) {
print "Couldn't fetch [$url] you failure";
return;
print STDERR "Couldn't fetch [$url] you failure";
return('handled', "Couldn't fetch [$url] $resp");
}
my @text;
@ -59,8 +80,14 @@ sub {
}
local $, = ', ';
print map { local $_ = "$_"; s/\s+/ /g;s/^ +//; s/ +$//; $_} @text
my @values = map { local $_ = "$_"; s/\s+/ /g;s/^ +//; s/ +$//; $_} @text;
print STDERR "text? @text\n";
return ('handled', join("", @values));
}
"Bot::BB3::Plugin::Get";
__DATA__
get http://url/ //xpath - get page from interents, extract the xpath, show it to people. (Xpath defaults to '//title' + '//body' ) spaces squashed too

View file

@ -80,7 +80,8 @@ sub command {
}
elsif ($said->{body} =~ /-v\s+(\S+)\s*/i) #functions, only use the first part of a multiword expression
{
my $var = uri_encode($1, {"encode_reserved" => 1});
my $raw = $1;
my $var = uri_encode($raw =~ s/\\([^\\])/$1/gr, {"encode_reserved" => 1});
$url = "https://perldoc.perl.org/variables/".$var
}

View file

@ -62,7 +62,7 @@ sub make_pastebin_all {
}
}
my @versions = ('', 't', qw(1 2 3 4 5.0 5.1 5.2 5.3 5.4 5.5 tall all rall yall), map {$_, $_."t"} sort qw/5.6 5.8 5.8.4 5.8.8 5.10 5.10.0 5.12 5.14 5.16 5.18 5.20 5.22 5.24 5.26 5.28 5.32 5.32.1 5.32.0 5.34.1 5.34.0 5.34 5.30 5.30.3 5.30.2 5.30.1 5.30.0 5.28.2 5.28.1 5.28.0 5.26.3 5.26.2 5.26.1 5.26.0 5.24.4 5.24.3 5.24.2 5.24.1 5.24.0 5.22.4 5.22.3 5.22.2 5.22.1 5.22.0 5.20.3 5.20.2 5.20.1 5.20.0 5.18.4 5.18.3 5.18.2 5.18.1 5.18.0 5.16.3 5.16.2 5.16.1 5.16.0 5.14.4 5.14.3 5.14.2 5.14.1 5.14.0 5.12.5 5.12.4 5.12.3 5.12.2 5.12.1 5.12.0 5.10.1 5.10.0 5.8.9 5.8.8 5.8.7 5.8.6 5.8.5 5.8.4 5.8.3 5.8.2 5.8.1 5.8.0 5.6.2 5.6.1 5.6.0 5.34 5.36 5.36.0/);
my @versions = ('', 't', qw(1 2 3 4 5.0 5.1 5.2 5.3 5.4 5.5 tall all rall yall), map {$_, $_."t"} sort qw/5.6 5.8 5.8.4 5.8.8 5.10 5.10.0 5.12 5.14 5.16 5.18 5.20 5.22 5.24 5.26 5.28 5.32 5.32.1 5.32.0 5.34.1 5.34.0 5.34 5.30 5.30.3 5.30.2 5.30.1 5.30.0 5.28.2 5.28.1 5.28.0 5.26.3 5.26.2 5.26.1 5.26.0 5.24.4 5.24.3 5.24.2 5.24.1 5.24.0 5.22.4 5.22.3 5.22.2 5.22.1 5.22.0 5.20.3 5.20.2 5.20.1 5.20.0 5.18.4 5.18.3 5.18.2 5.18.1 5.18.0 5.16.3 5.16.2 5.16.1 5.16.0 5.14.4 5.14.3 5.14.2 5.14.1 5.14.0 5.12.5 5.12.4 5.12.3 5.12.2 5.12.1 5.12.0 5.10.1 5.10.0 5.8.9 5.8.8 5.8.7 5.8.6 5.8.5 5.8.4 5.8.3 5.8.2 5.8.1 5.8.0 5.6.2 5.6.1 5.6.0 5.34 5.36 5.36.0 5.38 5.38.0/);
sub new {
my( $class ) = @_;
@ -130,6 +130,7 @@ sub command {
wsdeparse => 'deparse',
wdeparse => 'deparse',
sdeparse => 'deparse',
deparse => 'deparse',
'k20' => 'k20',
'k' => 'k20',
'rb' => 'ruby',
@ -173,7 +174,7 @@ sub command {
# 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"
$type = "perl5.38"
}
if ($command eq 'r' && (!$said->{addressed} && !$said->{nested} && ($said->{channel} ne "#perl6" && $said->{channel} eq '#raku'))) {
@ -206,7 +207,7 @@ sub command {
$code = "use ojo; ".$code if ($c =~ /m/);
}
$code = "use utf8; ". $code if ($type =~ /^perl(5.(8|10|12|14|16|18|20|22|24|26|28|30))?$/);
$code = "use utf8; ". $code if ($type =~ /^perl(5.(8|10|12|14|16|18|20|22|24|26|28|30|32|34|36))?$/);
$code =~ s/␤/\n/g;
@ -240,7 +241,7 @@ sub command {
(!$nlflag && ($type eq 'perl6' || $type eq 'bash' || $type eq 'concise' || $type eq 'deparse2'));
if ($usenl) {
$resultstr =~ s/\n/\x{2424}/g;
$resultstr =~ s/\n/\x{21b5}/g;
}
$resultstr =~ s/^(\x00)+//g;