b65ca928769b163b43c7d7305d0135e672df6f71
[spider.git] / cmd / chat.pl
1 #
2 # do a chat message
3 #
4 # this is my version of conferencing....
5 #
6 # Copyright (c) 2003 Dirk Koopman G1TLH
7 #
8 #
9
10 my ($self, $line) = @_;
11 #$DB::single = 1;
12
13 my @f = split /\s+/, $line, 2;
14 return (1, $self->msg('e5')) if $self->remotecmd || $self->inscript;
15 return (1, $self->msg('e34')) unless @f >= 1;
16 return (1, $self->msg('e28')) unless $self->registered;
17
18 my $target = uc $f[0];
19
20 return (1, $self->msg('e35', $target)) unless grep uc $_ eq $target, @{$self->user->group};
21
22 $f[1] ||= '';
23
24 my $from = $self->call;
25 my $text = $f[1] ;
26 my $t = ztime(time);
27 my $toflag = '*';
28 my @out;
29
30 # change ^ into : for transmission
31 $line =~ s/\^/:/og;
32
33 if ($text) {
34         my @bad;
35         if (@bad = BadWords::check($line)) {
36                 $self->badcount(($self->badcount||0) + @bad);
37                 LogDbg('DXCommand', "$self->{call} swore: $line (with words:" . join(',', @bad) . ")");
38                 Log('chat', $target, $from, "[to $from only] $line");
39                 return (1, "$target de $from <$t>: $line");
40         }
41
42         $self->send_chats($target, $text);
43 } else {
44         my $ref = $self->talklist;
45         if ($ref) {
46                 push @out, $self->msg('chattoomany', $target, $self->talklist->[0]);
47         } else {
48                 $self->talklist([ $target ]);
49                 push @out, $self->msg('chatinst', $target);
50                 $self->state('chat');
51         }
52         Log('chat', $target, $from, "Started chat mode on $target");
53         push @out, $self->chat_prompt;
54 }
55
56
57 return (1, @out);