-sub parseCommand {
- my ($msg, $server, $nick, $address, $channel, $disp,$model) = @_;
-
- return if $channel !~ /^#/ && $msg =~ /^~/;
- $msg = ".$msg" if $channel !~ /^#/ && $msg =~ /^[^.!]/;
-
- my ($p,$command,$args) = ($msg =~ /^([.!~])(\S+)(?: (.+))?/);
-
- if ($msg =~ m{http://[\w.]+/.+?scan(_id|_grp)?=(\w+)}){
- unless ($command){
- ($p,$command,$args) = ('.','addscan',$msg);
- }elsif($command ne 'addscan'){
- parseCommand (".addscan $msg", $server, $nick, $address, $channel, $disp,$model)
- }
- }
-
- 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";
- }
- }
-
- $address =~ s/.*@(.*)/$1/;
- my $c = NDIRC::Context->new({
- host => $address,
- nick => $nick,
- channel => $channel,
- disp => $disp,
- model => $model,
- server => $server,
- reply_string => $reply_string,
- });
-
- return $disp->run_command($c,$command,$args);
-}