- 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,$c);
- return 1;
- }
+ my ($msg, $server, $nick, $address, $channel, $disp,$model) = @_;
+
+ return if $channel !~ /^#/ && $msg =~ /^~/;
+ $msg = ".$msg" if $channel !~ /^#/ && $msg =~ /^[^.!]/;
+
+ my ($p,$command,$args) = ($msg =~ /^([.!~])(\S+)(?: (.+))?/) or return 0;
+
+ return 0 unless $disp->has_command($command,$channel);
+
+ my $reply_string;
+ given ($p){
+ when ('!'){
+ $reply_string = "msg $nick";
+ }
+ when ('~'){
+ $reply_string = "msg $channel";
+ }
+ default {
+ $reply_string = "notice $nick";