]> gb7djk.dxcluster.net Git - spider.git/blob - cmd/chat.pl
use IO::Socket blocking wherever possible
[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 # $Id$
9 #
10
11 my ($self, $line) = @_;
12 my @f = split /\s+/, $line, 2;
13 return (1, $self->msg('e5')) if $self->remotecmd || $self->inscript;
14 return (1, $self->msg('e34')) unless @f == 2;
15 return (1, $self->msg('e28')) unless $self->registered;
16
17 my $target = uc $f[0];
18
19 return (1, $self->msg('e35', $target)) unless grep uc $_ eq $target, @{$self->user->group};
20
21 my $from = $self->call;
22 my $text = unpad $f[1];
23 my $t = ztime(time);
24 my $toflag = '*';
25
26 # change ^ into : for transmission
27 $line =~ s/\^/:/og;
28
29 my @bad;
30 if (@bad = BadWords::check($line)) {
31         $self->badcount(($self->badcount||0) + @bad);
32         LogDbg('DXCommand', "$self->{call} swore: $line (with words:" . join(',', @bad) . ")");
33         Log('chat', $target, $from, "[to $from only] $line");
34         return (1, "$target de $from <$t>: $line");
35 }
36
37 #PC12^IZ4DYU^*^PSE QSL INFO TO A71AW TNX IN ADV 73's^<group>^IK5PWJ-6^0^H21^~
38 my $msgid = DXProt::nextchatmsgid();
39 $text = "#$msgid $text";
40
41 DXProt::send_chat($self, DXProt::pc12($from, $text, '*', $target), $from, '*', $text, $target, $main::mycall, '0');
42
43 return (1, ());