1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
# madoka 4.2 cl_privmsg
#
# client/privmsg.mpi
# Copyright(c)1998- cookie / The madoka project
#
sub cl_privmsg {
my($pr, $cl_no) = @_;
my($chan, $mes) = ($pr =~ /^([^ ]+) *:?(.*)$/);
my(@ch, $ch, $mesl) = ();
return if $mes eq '';
if ($chan =~ /,/) {
@ch = &chl_split($chan);
} else {
$ch[0] = $chan;
}
foreach (@ch) {
($_, $chanv) = &alias_chan($_);
if (!&check_chan($_) && /^[$chl_header]/) {
&send('cch', "NOTICE $us_nick :" .
&mio('CLIENT_PRIVMSG', "PRIVMSG: wrong channel name($_)") . "\n",
$cl_no);
next;
}
if ($mes =~ /\001ACTION([^\001]*)\001/) {
&mes(">$chanv:$us_nick< *ACTION* $us_nick$1\n", $_);
} elsif ($mes =~ /\001DCC SEND (.*)\001/) {
my @n = split(/ /, $1, 3);
if (($n[1] > 167772160 && $n[1] < 184549375) ||
($n[1] > 2886729728 && $n[1] < 2887778303) ||
($n[1] > 3232235520 && $n[1] < 3232301055)) {
$mes = "$`\001DCC SEND $n[0] $cl_ip[$cl_no] $n[2]\001$'";
}
&mes(">$chanv< $mes\n", 'P');
} elsif (/^[$chl_header]/) {
&mes(">$chanv:$us_nick< $mes\n", $_);
} else {
&mes(">$chanv< $mes\n", 'P');
}
$cl_chan = $cl_chan{$_};
}
$ctcp_finger = time if defined(&ctcp_finger);
$mesl = $mes;
$mesl =~ s/\001[^\001]*\001//g;
&send('cco', ":$us_nick PRIVMSG " . join(',', @ch) . " :$mesl\n", $cl_no)
if $mesl;
&send('sv', ":$us_nick PRIVMSG " . join(',', @ch) . " :$mes\n");
&plugin('PRIVMSG', join(',', @ch), $us_nick, $mes);
}
|