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};