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