1 #**************************************************************************
2 # Copyright (C) 2006 by Michael Andreen <harvATruinDOTnu> *
4 # This program is free software; you can redistribute it and/or modify *
5 # it under the terms of the GNU General Public License as published by *
6 # the Free Software Foundation; either version 2 of the License, or *
7 # (at your option) any later version. *
9 # This program is distributed in the hope that it will be useful, *
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of *
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
12 # GNU General Public License for more details. *
14 # You should have received a copy of the GNU General Public License *
15 # along with this program; if not, write to the *
16 # Free Software Foundation, Inc., *
17 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
18 #**************************************************************************/
24 our @ISA = qw/Exporter/;
26 our @EXPORT = qw/valuecolor addCommand parseCommand commands/;
31 $channels{'#def-ndawn'} = ['all','member','def'];
32 $channels{'#nd'} = ['all','member'];
33 $channels{'#ndef'} = ['all','member','scan'];
34 $channels{'#nd-day'} = ['all','member'];
35 $channels{'#ndintel'} = ['all','member'];
36 $channels{'#nd-officers'} = ['all','member'];
37 $channels{'#ndawn'} = ['all'];
38 $channels{'pm'} = ['pm'];
40 $ND::defchan = "#def-ndawn";
42 $ND::scanchan = "#ndef";
43 $ND::bcchan = "#nd-day";
44 $ND::intelchan = "#ndintel";
45 $ND::officerchan = "#nd-officers";
46 $ND::communitychan = "#ndawn";
47 $ND::pubchan = "#newdawn";
51 $s = $_[1] if $#_ >= 1;
52 $s = "" unless defined $s;
53 return chr(3)."5$s".chr(15) if $s eq 'Hostile';
54 return chr(3)."3$s".chr(15) if $s eq 'Friendly';
55 return chr(3)."3$s".chr(15) if $s eq 'Nap' or $s eq 'NAP';
56 return chr(2)."$s".chr(15) if $_[0];
61 my ($command, $list, $func) = @_;
62 $commands{$command} = {fun => $func, acc => $list};
66 my ($msg,$channel) = @_;
67 if ($msg =~ /^(\w+)(?: (.+))?$/){
70 my @k = keys %commands;
71 if (exists $commands{$c}){
72 my $a = $commands{$c}->{acc};
73 my $b = (exists $channels{lc $channel} ? $channels{lc $channel} : ['all']);
74 if (intersect($a,$b) > 0){
75 $commands{$c}->{fun}->($args,$c);
86 my $b = (exists $channels{lc $channel} ? $channels{lc $channel} : ['all']);
87 for my $c (sort keys %commands){
88 my $a = $commands{$c}->{acc};
89 if (intersect($a,$b) > 0){
93 return join ', ', @commands;
99 foreach my $e (@{$a}) { $union{$e} = 1 }
102 foreach my $e (@{$b}) {
103 $isect{$e} = 1 if ( exists $union{$e} )