our @ISA = qw/Exporter/;
-our @EXPORT = qw/valuecolor/;
+our @EXPORT = qw/valuecolor addCommand parseCommand/;
+
+our %channels;
+our %commands;
+
+$channels{'#def-ndawn'} = ['all','member','def'];
+$channels{'#nd'} = ['all','member'];
+$channels{'#ndef'} = ['all','member','scan'];
+$channels{'#nd-day'} = ['all','member'];
+$channels{'#ndintel'} = ['all','member'];
+$channels{'#nd-officers'} = ['all','member'];
+$channels{'#ndawn'} = ['all'];
+$channels{'pm'} = ['pm'];
$ND::defchan = "#def-ndawn";
$ND::memchan = "#nd";
$ND::officerchan = "#nd-officers";
$ND::communitychan = "#ndawn";
$ND::pubchan = "#newdawn";
-$ND::xanchan = "#ViolatorS";
sub valuecolor {
my $s = $_;
return $s;
}
+sub addCommand {
+ my ($command, $list, $func) = @_;
+ $commands{$command} = {fun => $func, acc => $list};
+}
+
+sub parseCommand {
+ my ($msg,$channel) = @_;
+ if ($msg =~ /^(\w+)(?: (.+))?$/){
+ my $c = $1;
+ my $args = $2;
+ my @k = keys %commands;
+ if (exists $commands{$c}){
+ my $a = $commands{$c}->{acc};
+ my $b = (exists $channels{lc $channel} ? $channels{lc $channel} : ['all']);
+ if (intersect($a,$b) > 0){
+ $commands{$c}->{fun}->($args);
+ return 1;
+ }
+ }
+ }
+ return 0;
+}
+
+sub intersect {
+ my ($a, $b) = @_;
+ my %union;
+ foreach my $e (@{$a}) { $union{$e} = 1 }
+
+ my %isect;
+ foreach my $e (@{$b}) {
+ $isect{$e} = 1 if ( exists $union{$e} )
+ }
+ return keys %isect;
+}
+
1;