diff --git a/etc/bb3.conf b/etc/bb3.conf index e51b846..f88095a 100644 --- a/etc/bb3.conf +++ b/etc/bb3.conf @@ -33,7 +33,7 @@ http_plugin_port 1092 # Change this to be bot specific? - default_plugin factoids + default_plugin default diff --git a/etc/plugins.conf b/etc/plugins.conf index 174c6b2..31f9b59 100644 --- a/etc/plugins.conf +++ b/etc/plugins.conf @@ -24,14 +24,12 @@ server "*" { plugin "eval" {addressed: false; } plugin "deparse" {addressed: false; } plugin "badfacts" {addressed: false; } + plugin "default" {plugin: "nfacts"} } channel "#buubot" { plugin "eval" {addressed: false; } plugin "deparse" {addressed: false; } } - channel "#regex" { - plugin "badfacts" {addressed: false; } - } } server "*.freenode.net" { channel "#perlbot" { @@ -53,5 +51,6 @@ server "*.freenode.net" { plugins: false; filtersep: true; } + plugin "default" {plugin: "nfacts"; } } } diff --git a/plugins/default.pm b/plugins/default.pm new file mode 100644 index 0000000..52e6a36 --- /dev/null +++ b/plugins/default.pm @@ -0,0 +1,51 @@ +package Bot::BB3::Plugin::Default; +use strict; +no warnings 'void'; + +use Data::Dumper; + +our $pname = "default"; + +sub get_conf_for_channel { + my ($self, $pm, $server, $channel) = @_; + my $conf = $pm->plugin_conf($pname, $server, $channel); + return $conf; +} + +sub new { + my( $class ) = @_; + my $self = bless {}, $class; + $self->{name} = $pname; + $self->{opts} = { + command => 1, + }; + + return $self; +} + +sub command { + my ($self, $_said, $pm) = @_; + my $said = {%$_said}; # copy it so we can mutate it later + my $conf = $self->get_conf_for_channel($pm, $said->{server}, $said->{channel}); + + if ($said->{addressed}) { + my $plug_name = $conf->{plugin} // 'fact'; + my $plugin = $pm->get_plugin( $plug_name ); + + $said->{body} =~ s/^default //g; + $said->{recommended_args} = [ split /\s+/, $said->{body} ]; + + local $@; + my( $status, $results ) = eval { $plugin->command( $said, $pm ) }; + my $err = $@; + + return ($status, $results); + } + + return; +} + +"Bot::BB3::Plugin::Default"; + +__DATA__ +default plugin handler that supports per channel configurations diff --git a/plugins/nfacts.pm b/plugins/nfacts.pm index 6eb96f2..b3ef319 100644 --- a/plugins/nfacts.pm +++ b/plugins/nfacts.pm @@ -95,9 +95,9 @@ sub handle { my $prefix = $conf->{prefix} || "!"; - my $regex = qr/^\Q$prefix\E(?[^@].*?)(?:\s@\s*(?\S*))?$/; + my $regex = qr/^\Q$prefix\E(?[^@].*?)(?:\s@\s*(?\S*)\s*)?$/; - if ($said->{body} =~ /^\Q$prefix\E(?[^@].*?)(?:\s@\s*(?\S*))?$/ || + if ($said->{body} =~ /^\Q$prefix\E(?[^@].*?)(?:\s@\s*(?\S*)\s*)?$/ || $said->{body} =~ /^\Q$prefix\E!@(?\S+)\s+(?.+)$/) { my $fact = $+{fact}; my $user = $+{user};