File: privmsg.mpi

package info (click to toggle)
madoka 4.2.3-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 960 kB
  • ctags: 45
  • sloc: perl: 1,006; makefile: 45; sh: 4
file content (49 lines) | stat: -rw-r--r-- 1,495 bytes parent folder | download | duplicates (2)
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);
}