X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXCommandmode.pm;h=fe5a484295f7bc9c0a9948946dfa362559e11506;hb=8237d79097110a33c20e31ed5e8a42b1dce328fc;hp=d562437a6460d3ca380803db27784b3d2417ba15;hpb=aac4d7dbc1d3c34bf73147a679673d346894984f;p=spider.git diff --git a/perl/DXCommandmode.pm b/perl/DXCommandmode.pm index d562437a..fe5a4842 100644 --- a/perl/DXCommandmode.pm +++ b/perl/DXCommandmode.pm @@ -265,9 +265,24 @@ sub normal } $self->state('prompt'); delete $self->{talklist}; - } elsif ($cmdline =~ m(^/\w+)) { - $cmdline =~ s(^/)(); - $self->send_ans(run_cmd($self, $cmdline)); + } elsif ($cmdline =~ m|^/+\w+|) { + $cmdline =~ s|^/||; + my $sendit = $cmdline =~ s|^/+||; + my @in = $self->run_cmd($cmdline); + $self->send_ans(@in); + if ($sendit && $self->{talklist} && @{$self->{talklist}}) { + foreach my $l (@in) { + my @bad; + if (@bad = BadWords::check($l)) { + $self->badcount(($self->badcount||0) + @bad); + Log('DXCommand', "$self->{call} swore: $l"); + } else { + for (@{$self->{talklist}}) { + $self->send_talks($_, $l); + } + } + } + } $self->send($self->talk_prompt); } elsif ($self->{talklist} && @{$self->{talklist}}) { # send what has been said to whoever is in this person's talk list @@ -631,7 +646,7 @@ sub clear_cmd_cache no strict 'refs'; for (keys %Cache) { - undef *{$_}; + undef *{$_} unless /cmd_cache/; dbg("Undefining cmd $_") if isdbg('command'); } %cmd_cache = ();