mega-merge of major parts of mojo
[spider.git] / cmd / chat.pl
index 2aa629436e2800af77791e9743ad23600732fa0e..13018765d9c43caad44fe8b7ec78f74e0a7b756d 100644 (file)
@@ -5,39 +5,53 @@
 #
 # Copyright (c) 2003 Dirk Koopman G1TLH
 #
-# $Id$
 #
 
 my ($self, $line) = @_;
+#$DB::single = 1;
+
 my @f = split /\s+/, $line, 2;
 return (1, $self->msg('e5')) if $self->remotecmd || $self->inscript;
-return (1, $self->msg('e34')) unless @f == 2;
-return (1, $self->msg('e28')) unless $self->registered;
+return (1, $self->msg('e34')) unless @f >= 1;
+return (1, $self->msg('e28')) unless $self->isregistered;
 
 my $target = uc $f[0];
 
 return (1, $self->msg('e35', $target)) unless grep uc $_ eq $target, @{$self->user->group};
 
+$f[1] ||= '';
+
 my $from = $self->call;
-my $text = unpad $f[1];
+my $text = $f[1] ;
 my $t = ztime(time);
 my $toflag = '*';
+my @out;
 
 # change ^ into : for transmission
 $line =~ s/\^/:/og;
 
-my @bad;
-if (@bad = BadWords::check($line)) {
-       $self->badcount(($self->badcount||0) + @bad);
-       LogDbg('DXCommand', "$self->{call} swore: $line (with words:" . join(',', @bad) . ")");
-       Log('chat', $target, $from, "[to $from only] $line");
-       return (1, "$target de $from <$t>: $line");
+if ($text) {
+       my @bad;
+       if (@bad = BadWords::check($line)) {
+               $self->badcount(($self->badcount||0) + @bad);
+               LogDbg('DXCommand', "$self->{call} swore: $line (with words:" . join(',', @bad) . ")");
+               Log('chat', $target, $from, "[to $from only] $line");
+               return (1, "$target de $from <$t>: $line");
+       }
+
+       $self->send_chats($target, $text);
+} else {
+       my $ref = $self->talklist;
+       if ($ref) {
+               push @out, $self->msg('chattoomany', $target, $self->talklist->[0]);
+       } else {
+               $self->talklist([ $target ]);
+               push @out, $self->msg('chatinst', $target);
+               $self->state('chat');
+       }
+       Log('chat', $target, $from, "Started chat mode on $target");
+       push @out, $self->chat_prompt;
 }
 
-#PC12^IZ4DYU^*^PSE QSL INFO TO A71AW TNX IN ADV 73's^<group>^IK5PWJ-6^0^H21^~
-my $msgid = DXProt::nextchatmsgid();
-$text = "#$msgid $text";
-
-$main::me->normal(DXProt::pc93($target, $from, undef, $text));
 
-return (1, ());
+return (1, @out);