home *** CD-ROM | disk | FTP | other *** search
/ ftp.madoka.org / 2014.12.ftp.madoka.org.tar / ftp.madoka.org / pub / plum / plum2_33_1.lzh / module / auto / message.plm < prev    next >
Text File  |  1999-03-24  |  20KB  |  644 lines

  1. <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"><!-- $_ if 0; # -*- perl -*-
  2. # $Id: message.plm,v 2.74 1999/02/20 02:17:01 hasegawa Exp $
  3. # copyright (c)1998-1999 Yoshinori Hasegawa <hasegawa@madoka.org>
  4.  
  5. package auto_message;
  6.  
  7. $INTERVAL = 3600;
  8. $DATE = '%m/%d %H:%M';
  9. $FORMAT = '#(date) #(from.name|from.nick|from.nick.now) >> #(message)';
  10.  
  11. $_ = 'auto_message';
  12.  
  13. sub module_disable {
  14.   local($userno) = @_;
  15.   local($no, $nick);
  16.   foreach $key (keys(%lasttime)) {
  17.     ($no, $nick) = split(/$;/, $key, 2);
  18.     next unless $'userno[$no] == $userno;
  19.     delete $lasttime{$key};
  20.   }
  21. }
  22.  
  23. sub server_close {
  24.   local($serverno) = @_;
  25.   local($no, $nick);
  26.   foreach $key (keys(%lasttime)) {
  27.     ($no, $nick) = split(/$;/, $key, 2);
  28.     next unless $no == $serverno;
  29.     delete $lasttime{$key};
  30.   }
  31. }
  32.  
  33. sub ss_join {
  34.   local($serverno, $prefix, $cmd, @params) = @_;
  35.   &receive($serverno, $prefix);
  36.   return ($prefix, $cmd, @params);
  37. }
  38.  
  39. sub ss_nick {
  40.   local($serverno, $prefix, $cmd, @params) = @_;
  41.   local($nick);
  42.   $nick = &'prefix($prefix);
  43.   $lasttime{$serverno, $params[0]} = $lasttime{$serverno, $nick};
  44.   delete $lasttime{$serverno, $nick};
  45.   $user = $params[0] . substr($prefix, index($prefix, '!'));
  46.   &receive($serverno, $user);
  47.   return ($prefix, $cmd, @params);
  48. }
  49.  
  50. sub ss_part {
  51.   local($serverno, $prefix, $cmd, @params) = @_;
  52.   &receive($serverno, $prefix);
  53.   return ($prefix, $cmd, @params);
  54. }
  55.  
  56. sub ss_topic {
  57.   local($serverno, $prefix, $cmd, @params) = @_;
  58.   &receive($serverno, $prefix);
  59.   return ($prefix, $cmd, @params);
  60. }
  61.  
  62. sub ss_kick {
  63.   local($serverno, $prefix, $cmd, @params) = @_;
  64.   &receive($serverno, $prefix);
  65.   return ($prefix, $cmd, @params);
  66. }
  67.  
  68. sub ss_mode {
  69.   local($serverno, $prefix, $cmd, @params) = @_;
  70.   &receive($serverno, $prefix);
  71.   return ($prefix, $cmd, @params);
  72. }
  73.  
  74. sub ss_privmsg {
  75.   local($serverno, $prefix, $cmd, @params) = @_;
  76.   local($userno, $str, $who, $text);
  77.   $userno = $'userno[$serverno];
  78.   if ($params[1]) {
  79.     foreach $get (&'property($userno, 'get')) {
  80.       next unless $params[1] eq $get;
  81.       &get($serverno, $prefix, $params[0]);
  82.       return ($prefix, $cmd, @params);
  83.     }
  84.     foreach $check (&'property($userno, 'check')) {
  85.       next unless $params[1] eq $check;
  86.       &check($serverno, $prefix, $params[0]);
  87.       return ($prefix, $cmd, @params);
  88.     }
  89.     ($str, $who, $text) = split(/\s+/, $params[1], 3);
  90.     if ($text) {
  91.       foreach $send (&'property($userno, 'send')) {
  92.         next unless $str eq $send;
  93.         &send($serverno, $prefix, $params[0], $who, $text);
  94.         return ($prefix, $cmd, @params);
  95.       }
  96.     }
  97.   }
  98.   &receive($serverno, $prefix);
  99.   return ($prefix, $cmd, @params);
  100. }
  101.  
  102. sub receive {
  103.   local($serverno, $prefix) = @_;
  104.   local($userno, $nick, $time, $int, @msg, %alias);
  105.   $userno = $'userno[$serverno];
  106.   $nick = &'prefix($prefix);
  107.   @msg = &get_msg($userno, $prefix);
  108.   if (@msg) {
  109.     %alias = &get_alias_user($userno, $prefix);
  110.     $alias{'nick.now'} = $nick;
  111.     $time = time();
  112.     $alias{'number'} = @msg;
  113.     $lasttime{$serverno, $nick} = 0 unless $lasttime{$serverno, $nick};
  114.     $int = &'property($userno, 'interval') || $INTERVAL;
  115.     if ($time - $lasttime{$serverno, $nick} > $int) {
  116.       foreach $reply (&'property($userno, 'receive')) {
  117.         &privmsg($serverno, $nick, &'format($reply, %alias));
  118.       }
  119.     }
  120.     $lasttime{$serverno, $nick} = $time;
  121.   } else {
  122.     $lasttime{$serverno, $nick} = 0;
  123.   }
  124. }
  125.  
  126. sub get {
  127.   local($serverno, $prefix, $chan) = @_;
  128.   local($userno, $nick, @msg, $to, @data, %alias, %from, $date, @format);
  129.   $userno = $'userno[$serverno];
  130.   $nick = &'prefix($prefix);
  131.   %alias = &get_alias_user($userno, $prefix);
  132.   $alias{'nick.now'} = $nick;
  133.   if (&'channel($chan)) {
  134.     $alias{'channel'} = $chan;
  135.     $to = $chan;
  136.   } else {
  137.     $to = $nick;
  138.   }
  139.   @msg = &get_msg($userno, $prefix);
  140.   if (@msg) {
  141.     foreach $line (@msg) {
  142.       @data = split(/\s+/, $line, 5);
  143.       %from = &get_alias_user($userno, $data[2], 'from');
  144.       $from{'from.nick.now'} = &'prefix($data[2]);
  145.       if (&'channel($data[3])) {
  146.         $from{'from.channel'} = $data[3];
  147.       }
  148.       $from{'message'} = $data[4];
  149.       $date = &'property($userno, 'date') || $DATE;
  150.       $from{'date'} = &'date($date, $data[0]);
  151.       @format = &'property($userno, 'format');
  152.       if (@format) {
  153.         foreach $reply (@format) {
  154.           &privmsg($serverno, $nick, &'format($reply, %alias, %from));
  155.         }
  156.       } else {      
  157.         &privmsg($serverno, $nick, &'format($FORMAT, %alias, %from));
  158.       }
  159.     }
  160.     &delete_msg($userno, @msg);
  161.   } else {
  162.     foreach $reply (&'property($userno, 'nothing')) {
  163.       &privmsg($serverno, $to, &'format($reply, %alias));
  164.     }
  165.   }
  166.   $lasttime{$serverno, $nick} = 0;
  167. }
  168.  
  169. sub check {
  170.   local($serverno, $prefix, $chan) = @_;
  171.   local($userno, $nick, $time, @msg, %alias);
  172.   $userno = $'userno[$serverno];
  173.   $nick = &'prefix($prefix);
  174.   %alias = &get_alias_user($userno, $prefix);
  175.   $alias{'nick.now'} = $nick;
  176.   if (&'channel($chan)) {
  177.     $alias{'channel'} = $chan;
  178.     $to = $chan;
  179.   } else {
  180.     $to = $nick;
  181.   }
  182.   @msg = &get_msg($userno, $prefix);
  183.   if (@msg) {
  184.     $alias{'number'} = @msg;
  185.     foreach $reply (&'property($userno, 'exists')) {
  186.       &privmsg($serverno, $to, &'format($reply, %alias));
  187.     }
  188.     $lasttime{$serverno, $nick} = time();
  189.   } else {
  190.     foreach $reply (&'property($userno, 'nothing')) {
  191.       &privmsg($serverno, $to, &'format($reply, %alias));
  192.     }
  193.     $lasttime{$serverno, $nick} = 0;
  194.   }
  195. }
  196.  
  197. sub send {
  198.   local($serverno, $prefix, $chan, $who, $text) = @_; 
  199.   local($userno, $nick, %alias, %to, $to);
  200.   $userno = $'userno[$serverno];
  201.   $nick = &'prefix($prefix);
  202.   %alias = &get_alias_user($userno, $prefix);
  203.   $alias{'nick.now'} = $nick;
  204.   $alias{'to'} = $who;
  205.   if (&'channel($chan)) {
  206.     $alias{'channel'} = $chan;
  207.     $to = $chan;
  208.   } else {
  209.     $to = $nick;
  210.   }
  211.   %to = &get_alias_name_nick($userno, $who, 'to');
  212.   if (%to || $who =~ /^[A-\}][\-\dA-\}]*$/ && length($who) <= 9) {
  213.     &add_msg($userno, join(' ', time(), $who, $prefix, $chan, $text));
  214.     foreach $reply (&'property($userno, 'accept')) {
  215.       &privmsg($serverno, $to, &'format($reply, %alias, %to));
  216.     }
  217.   } else {
  218.     foreach $reply (&'property($userno, 'unknown')) {
  219.       &privmsg($serverno, $to, &'format($reply, %alias));
  220.     }
  221.   }
  222. }
  223.  
  224. sub privmsg {
  225.   local($serverno, $to, $msg) = @_;
  226.   &'s_print($serverno, '', 'PRIVMSG', $to, $msg);
  227.   foreach $cno (&'array($'clientlist)) {
  228.     next unless $'avail[$cno];
  229.     next unless $'server[$cno] == $serverno;
  230.     &'c_print($cno, &'user($cno), 'PRIVMSG', $to, $msg);
  231.   }
  232. }
  233.  
  234. sub get_msg {
  235.   local($userno, $prefix) = @_;
  236.   local($nick, @list, $name, $code, $line, @data, %alias, $regex);
  237.   @list = ();
  238.   $nick = &'prefix($prefix);
  239.   ($name, $code) = &filename(&'property($userno, 'file'));
  240.   if (open(FILE, $name)) {
  241.     while (defined($line = <FILE>)) {
  242.       $line =~ tr/\r\n//d;
  243.       next unless $line;
  244.       $line = &code_jis($line, $code) if $code;
  245.       @data = split(/\s+/, $line, 5);
  246.       if (&check_alias($userno, $prefix, $data[1])) {
  247.         push(@list, $line);
  248.       }
  249.     }
  250.     close(FILE);
  251.   }
  252.   return @list;
  253. }
  254.  
  255. sub add_msg {
  256.   local($userno, $msg) = @_;
  257.   local($name, $code);
  258.   ($name, $code) = &filename(&'property($userno, 'file'));
  259.   $msg = &jis_code($msg, $code) if $code;
  260.   if (open(FILE, ">>$name")) {
  261.     print FILE $msg, "\n";
  262.     close(FILE);
  263.   }
  264. }
  265.  
  266. sub delete_msg {
  267.   local($userno, @list) = @_;
  268.   local($name, $code, $list, @msg);
  269.   @msg = ();
  270.   ($name, $code) = &filename(&'property($userno, 'file'));
  271.   if (open(FILE, $name)) {
  272.     $list = &'list(@list);
  273.     while (defined($line = <FILE>)) {
  274.       $line =~ tr/\r\n//d;
  275.       next unless $line;
  276.       $line = &code_jis($line, $code) if $code;
  277.       next if &'exist($list, $line);
  278.       push(@msg, $line);
  279.     }
  280.     close(FILE);
  281.     if (open(FILE, ">$name")) {
  282.       foreach $line (@msg) {
  283.         $line = &jis_code($line, $code) if $code;
  284.         print FILE $line, "\n";
  285.       }
  286.       close(FILE);
  287.     }
  288.   }
  289. }
  290.  
  291. sub get_alias_user {
  292.   local($userno, $from, $prefix) = @_;
  293.   local($file, @list);
  294.   $file = &'property($userno, 'alias');
  295.   foreach $list (&split_list('nick', &read_file($file))) {
  296.     @list = &'array($list);
  297.     if (&match_alias_user($from, @list)) {
  298.       return &parse_alias($prefix, @list);
  299.     }
  300.   }
  301.   return ();
  302. }
  303.  
  304. sub get_alias_name_nick {
  305.   local($userno, $from, $prefix) = @_;
  306.   local($file, @list);
  307.   $file = &'property($userno, 'alias');
  308.   foreach $list (&split_list('nick', &read_file($file))) {
  309.     @list = &'array($list);
  310.     if (&match_alias_name_nick($from, @list)) {
  311.       return &parse_alias($prefix, @list);
  312.     }
  313.   }
  314.   return ();
  315. }
  316.  
  317. sub check_alias {
  318.   local($userno, $from, $name) = @_;
  319.   local($file, @list, $nick);
  320.   $file = &'property($userno, 'alias');
  321.   foreach $list (&split_list('nick', &read_file($file))) {
  322.     @list = &'array($list);
  323.     if (&match_alias_name_nick($name, @list)) {
  324.       if (&match_alias_user($from, @list)) {
  325.         return 1;
  326.       } else {
  327.         return 0;
  328.       }
  329.     }
  330.   }
  331.   $nick = &'prefix($from);
  332.   if ("\L$name\E" eq "\L$nick\E") {
  333.     return 1;
  334.   } else {
  335.     return 0;
  336.   }
  337. }
  338.  
  339. sub match_alias_user {
  340.   local($from, @list) = @_;
  341.   local($var, $arg, $regex);
  342.   foreach $line (@list) {
  343.     ($var, $arg) = split(/\s+/, $line, 2);
  344.     next unless "\L$var\E" eq 'user';
  345.     $regex = &'regex($arg);
  346.     next unless $from =~ /$regex/i;
  347.     return 1;
  348.   }
  349.   return 0;
  350. }
  351.  
  352. sub match_alias_name_nick {
  353.   local($from, @list) = @_;
  354.   local($var, $arg);
  355.   foreach $line (@list) {
  356.     ($var, $arg) = split(/\s+/, $line, 2);
  357.     if ("\L$var\E" eq 'name') {
  358.       foreach $name (split(/\s+/, $arg)) {
  359.         next unless $from eq $name;
  360.         return 1;
  361.       }
  362.     } elsif ("\L$var\E" eq 'nick') {
  363.       next unless &'exist(&'list(split(/\s+/, $arg)), $from);
  364.       return 1;
  365.     }
  366.   }
  367.   return 0;
  368. }
  369.  
  370. sub parse_alias {
  371.   local($prefix, @list) = @_;
  372.   local(%alias, $var, $arg, $key);
  373.   %alias = ();
  374.   foreach $line (@list) {
  375.     ($var, $arg) = split(/\s+/, $line, 2);
  376.     $var = "\L$var\E";
  377.     if ($prefix) {
  378.       $key = $prefix . '.' . $var;
  379.     } else {
  380.       $key = $var;
  381.     }
  382.     next if defined($alias{$key});
  383.     if ($var eq 'nick') {
  384.       $alias{$key} = (split(/\,/, $arg))[0];
  385.     } elsif ($var eq 'name') {
  386.       $alias{$key} = (split(/\s+/, $arg))[0];
  387.     } else {
  388.       $alias{$key} = $arg;
  389.     }
  390.   }
  391.   return %alias;
  392. }
  393.  
  394. sub split_list {
  395.   local($field, @list) = @_;
  396.   local($var, $arg, @array, @entry);
  397.   $field = "\L$field\E";
  398.   @array = ();
  399.   @entry = ();
  400.   foreach $line (@list) {
  401.     ($var, $arg) = split(/\s*\:\s*/, $line, 2);
  402.     if ($field eq "\L$var\E") {
  403.       push(@array, &'list(@entry)) if @entry;
  404.       @entry = ();
  405.     }
  406.     push(@entry, $var . ' ' . $arg);
  407.   }
  408.   push(@array, &'list(@entry)) if @entry;
  409.   return @array;
  410. }
  411.  
  412. sub read_file {
  413.   local($file) = @_;
  414.   local($name, $code, $mtime, @data, $line);
  415.   ($name, $code) = &filename($file);
  416.   $mtime = (stat($name))[9];
  417.   if (defined($mtime)) {
  418.     $modify{$name} = -1 unless defined($modify{$name});
  419.     if ($modify{$name} != $mtime) {
  420.       if (open(TMP, $name)) {
  421.         @data = ();
  422.         while (defined($line = <TMP>)) {
  423.           $line =~ s/^\s+//;
  424.           next if $line =~ /^[\#\;]/;
  425.           $line =~ tr/\r\n//d;
  426.           next unless $line;
  427.           $line =~ s/\s+$//;
  428.           $line = &code_jis($line, $code) if $code;
  429.           push(@data, $line);
  430.         }
  431.         close(TMP);
  432.         $modify{$name} = $mtime;
  433.         $cache{$name} = &'list(@data);
  434.         return @data;
  435.       }
  436.     } else {
  437.       return &'array($cache{$name});
  438.     }
  439.   }
  440.   return ();
  441. }
  442.  
  443. sub filename {
  444.   local($file) = @_;
  445.   local($idx, $name, $code);
  446.   return ('', '') unless $file;
  447.   if (($idx = rindex($file, ';')) != -1) {
  448.     $name = substr($file, 0, $idx);
  449.     $code = substr($file, $idx + 1);
  450.   } else {
  451.     $name = $file;
  452.     $code = '';
  453.   }
  454.   return (&'expand($name), $code);
  455. }
  456.  
  457. sub code_jis {
  458.   local($line, $list) = @_;
  459.   foreach $code (split(/\,/, "\L$list\E")) {
  460.     if ($code eq 'euc') {
  461.       $line = &'euc_jis($line);
  462.     } elsif ($code eq 'jis') {
  463.       $line = &'jis_jis($line);
  464.     } elsif ($code eq 'sjis') {
  465.       $line = &'sjis_jis($line);
  466.     }
  467.   }
  468.   return $line;
  469. }
  470.  
  471. sub jis_code {
  472.   local($line, $list) = @_;
  473.   local($code);
  474.   $code = (split(/\,/, "\L$list\E"))[0];
  475.   if ($code eq 'euc') {
  476.     $line = &'jis_euc($line);
  477.   } elsif ($code eq 'jis') {
  478.     $line = &'jis_jis($line);
  479.   } elsif ($code eq 'sjis') {
  480.     $line = &'jis_sjis($line);
  481.   }
  482.   return $line;
  483. }
  484.  
  485. __END__
  486. --><HTML><HEAD>
  487. <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-2022-JP">
  488. <LINK REV="made" HREF="mailto:hasegawa@madoka.org">
  489. <TITLE>auto/message.plm</TITLE></HEAD><BODY>
  490.  
  491. $B%*%s%i%$%s%I%-%e%a%s%H(B
  492.  
  493.  
  494. <HR><H3>$BL>A0(B</H3>
  495.  
  496. auto/message.plm - $B%f!<%64V$G%a%C%;!<%8$NAw<u?.$r9T$($k$h$&$K$9$k(B
  497.  
  498.  
  499. <HR><H3>$B@bL@(B</H3>
  500.  
  501. $B%f!<%64V$GAj8_$K%a%C%;!<%8$N$d$j$H$j$,$G$-$k$h$&$K$7$^$9!#(B
  502. $B%a%C%;!<%8$rAw$k$?$a$NH/8@$,$"$k$H!"$=$NAw$j@h$H%a%C%;!<%8$NFbMF$r(B
  503. $B%U%!%$%k$KJ]B8$7$^$9!#%f!<%6$,%A%c%s%M%k$KF~$C$F$-$?$j!"%K%C%/%M!<%`$r(B
  504. $BJQ99$7$?$H$-$J$I$K!"$=$N%f!<%608$N%a%C%;!<%8$,$J$$$+$I$&$+3NG'$7!"(B
  505. $B%a%C%;!<%8$,$"$l$P!"%a%C%;!<%8$,$"$k$3$H$rEA$($^$9!#(B
  506. $B%a%C%;!<%8$NAw$j@h$O4pK\E*$K%K%C%/%M!<%`$G;XDj$9$kI,MW$,$"$j$^$9$,!"(B
  507. $B%(%$%j%"%9$r;2>H$9$k$3$H$G4A;z$r4^$s$@L>A0$r;H$&$3$H$b$G$-$^$9!#(B
  508. $B%a%C%;!<%8$r<u$1$H$k$?$a$NH/8@$,$"$k$H!"%U%!%$%k$NCf$+$i$=$N%f!<%6$K(B
  509. $BBP$7$FAw$i$l$?%a%C%;!<%8$rH/8@$7!"%U%!%$%k$KJ]B8$5$l$?%a%C%;!<%8$r(B
  510. $B:o=|$7$^$9!#Aw$C$?%a%C%;!<%8$rAj<j$,<u$1$H$C$?$+$I$&$+3NG'$9$kJ}K!$O(B
  511. $B$"$j$^$;$s!#$^$?!"0lEYAw$C$?%a%C%;!<%8$OJQ99$d:o=|$9$k$3$H$O$G$-$^$;$s!#(B
  512.  
  513.  
  514. <HR><H3>$B%W%m%Q%F%#(B</H3>
  515.  
  516. <DL>
  517. <DT>  auto.message.file $B%U%!%$%kL>(B[;({jis|euc|sjis})]
  518. </DT>
  519. <DD>    $B%a%C%;!<%8$r3JG<$9$k%U%!%$%k$r;XDj$7$^$9!#$3$N%U%!%$%k$OIaDL$N(B
  520.         $B%F%-%9%H%U%!%$%k$G!"0l9T$K$D$-0l$D$N%a%C%;!<%8$,J]B8$5$l$^$9!#(B
  521.         $B4A;z%3!<%I$O%G%U%)%k%H$G$O(Bjis$B$GJ]B8$5$l$^$9$,!"$=$l0J30$N(B
  522.         $B4A;z%3!<%I$GJ]B8$7$?$$>l9g$O!"%U%!%$%kL>$N8e$K%;%_%3%m%s$G(B
  523.         $B6h@Z$C$F4A;z%3!<%I$r;XDj$7$^$9!#(B
  524. </DD>
  525. <DT>  auto.message.alias $B%U%!%$%kL>(B[;({jis|euc|sjis})]
  526. </DT>
  527. <DD>    $B%(%$%j%"%9$r;2>H$9$k%U%!%$%k$r;XDj$7$^$9!#(B
  528.         $BE,@Z$K%(%$%j%"%9$r@_Dj$7$F$*$/$3$H$G!"Aw$j@h$K%K%C%/%M!<%`$@$1(B
  529.         $B$G$O$J$/!"G$0U$NL>A0$r;XDj$9$k$3$H$,$G$-$^$9!#(B
  530.         $B$^$?!"Aw$j85$NL>A0$b%K%C%/%M!<%`$G$O$J$/!"%(%$%j%"%9$H$7$F(B
  531.         $BDj5A$5$l$F$$$kL>A0$r;H$$$^$9!#(B
  532.         $B$3$N%U%!%$%k$O(Bauto/alias.plm$B$G07$($k%U%!%$%k$HF1$87A<0$G$9!#(B
  533.         $B%U%!%$%k$N4A;z%3!<%I$,(Bjis$B0J30$N>l9g$O!"$=$N4A;z%3!<%I$r(B
  534.         $B;XDj$9$kI,MW$,$"$j$^$9!#(B
  535. </DD>
  536. <DT>  auto.message.get* $BJ8;zNs(B
  537. </DT>
  538. <DD>    $B%a%C%;!<%8$r<u$1$H$k$?$a$NJ8;zNs$r;XDj$7$^$9!#(B
  539.         $B$3$3$G;XDj$7$?J8;zNs$HF1$8J8;zNs$,H/8@$5$l$k$H!"(B
  540.         $B$=$N?M$KBP$7$FAw$i$l$?%a%C%;!<%8$r%U%!%$%kCf$+$i(B
  541.         $B8!:w$7$FH/8@$7$^$9!#(B
  542. </DD>
  543. <DT>  auto.message.send* $BJ8;zNs(B
  544. </DT>
  545. <DD>    $B%a%C%;!<%8$rAw$k$?$a$NJ8;zNs$r;XDj$7$^$9!#(B
  546.         $B$3$3$G;XDj$7$?J8;zNs$KB3$1$FAw$j@h$N%K%C%/%M!<%`$+L>A0$H(B
  547.         $B%a%C%;!<%8$NFbMF$r6uGr$G6h@Z$C$FH/8@$9$k$3$H$K$h$j!"(B
  548.         $B$=$N%a%C%;!<%8$r%U%!%$%k$KJ]B8$7$^$9!#(B
  549. </DD>
  550. <DT>  auto.message.check* $BJ8;zNs(B
  551. </DT>
  552. <DD>    $B%a%C%;!<%8$,FO$$$F$$$k$+$I$&$+3NG'$9$k$?$a$NJ8;zNs$r;XDj$7$^$9!#(B
  553.         $B$3$3$G;XDj$7$?J8;zNs$HF1$8J8;zNs$,H/8@$5$l$k$H!"(B
  554.         $B$=$N?M$KBP$7$FAw$i$l$?%a%C%;!<%8$,$"$k$+$I$&$+3NG'$7!"(B
  555.         $B$=$N7k2L$rH/8@$7$^$9!#(B
  556. </DD>
  557. <DT>  auto.message.date $BJ8;zNs(B
  558. </DT>
  559. <DD>    auto.message.format$B$G;XDj$9$k$3$H$N$G$-$kCM$N$&$A!"(B
  560.         #(date)$B$GCV49$5$l$kF|IU$N%U%)!<%^%C%H$r;XDj$7$^$9!#(B
  561.         $B%G%U%)%k%H$G$O!V(B%m/%d %H:%M$B!W$H$J$C$F$$$^$9!#(B
  562. </DD>
  563. <DT>  auto.message.format* $B%U%)!<%^%C%H(B
  564. </DT>
  565. <DD>    $BAw$j@h$K%a%C%;!<%8$rAw$k$H$-$K!"$I$N$h$&$J7A<0$GH/8@$9$k$+$r(B
  566.         $B;XDj$7$^$9!#%U%)!<%^%C%H$K(B#(nick)$B$N$h$&$K=q$/$3$H$G!"(B
  567.         $B%a%C%;!<%8$r<u$1$H$k?M$N%(%$%j%"%9$NBP1~$9$kCM$GCV$-49$($^$9!#(B
  568.         $B$^$?!"%a%C%;!<%8$rAw$C$??M$N%(%$%j%"%9$O(B#(from.nick)$B$N$h$&$J7A<0(B
  569.         $B$GCV49$9$k$3$H$,$G$-$^$9!#%(%$%j%"%90J30$N>pJs$H$7$F$O!"(B
  570.         #(date)$B$G%a%C%;!<%8$rAw$C$?F|IU$H;~9o$r!"(B#(message)$B$G(B
  571.         $B%a%C%;!<%8$NFbMF$r$=$l$>$lCV$-49$($^$9!#(B
  572.         $B$^$?!"3g8LFb$r!V(B|$B!W$G6h@Z$C$FJ#?t;XDj$7$?>l9g!"(B
  573.         $B:G=i$KDj5A$5$l$F$$$kCM$GCV$-49$($^$9!#(B
  574. </DD>
  575. <DT>  auto.message.accept* $B%U%)!<%^%C%H(B
  576. </DT>
  577. <DD>    $B%a%C%;!<%8$r@5$7$/<u$1<h$C$?$H$-$K!"$3$3$G;XDj$7$?$b$N$r(B
  578.         $BH/8@$7$^$9!#%U%)!<%^%C%H$K(B#(nick)$B$N$h$&$K;XDj$9$k$3$H$G!"(B
  579.         $B%a%C%;!<%8$NAw$j85$N%(%$%j%"%9$NBP1~$9$kCM$GCV$-49$($^$9!#(B
  580.         $B$^$?!"(B#(to)$B$G%a%C%;!<%8$NAw$j@h$H$7$F;XDj$7$?L>A0$r!"(B
  581.         #(to.nick)$B$N$h$&$K!V(Bto.$B!W$rIU$1$k$3$H$G!"%a%C%;!<%8$NAw$j@h$N(B
  582.         $B%(%$%j%"%9$NBP1~$9$kCM$GCV$-49$($^$9!#(B
  583. </DD>
  584. <DT>  auto.message.unknown* $B%U%)!<%^%C%H(B
  585. </DT>
  586. <DD>    $B%a%C%;!<%8$rAw$kAj<j$,$o$+$i$J$$$H$-$K!"$3$3$G;XDj$7$?$b$N$r(B
  587.         $BH/8@$7$^$9!#%U%)!<%^%C%H$K(B#(nick)$B$N$h$&$K;XDj$9$k$3$H$G!"(B
  588.         $B%a%C%;!<%8$NAw$j85$N%(%$%j%"%9$NBP1~$9$kCM$GCV$-49$($^$9!#(B
  589.         $B$^$?!"(B#(to)$B$G%a%C%;!<%8$rAw$m$&$H$7$?Aj<j$NL>A0$KCV$-49$($^$9!#(B
  590. </DD>
  591. <DT>  auto.message.receive* $B%U%)!<%^%C%H(B
  592. </DT>
  593. <DD>    $B%A%c%s%M%k$KF~$C$F$-$?;~$d!"%K%C%/%M!<%`$rJQ99$7$?;~$K!"(B
  594.         $B$=$N?M$KBP$9$k%a%C%;!<%8$,FO$$$F$$$l$P!"$3$3$G;XDj$7$?$b$N$r(B
  595.         $BH/8@$7$^$9!#%U%)!<%^%C%H$K(B#(nick)$B$N$h$&$K;XDj$9$k$3$H$G!"(B
  596.         $B%a%C%;!<%8$NAw$j85$N%(%$%j%"%9$NBP1~$9$kCM$GCV$-49$($^$9!#(B
  597.         $B$^$?!"(B#(number)$B$GFO$$$F$$$k%a%C%;!<%8$N?t$KCV$-49$($^$9!#(B
  598. </DD>
  599. <DT>  auto.message.nothing* $B%U%)!<%^%C%H(B
  600. </DT>
  601. <DD>    $B%a%C%;!<%8$r<u$1<h$m$&$H$7$?$,!"%a%C%;!<%8$,(B
  602.         $BFO$$$F$$$J$+$C$?$H$-!"$3$3$G;XDj$7$?$b$N$rH/8@$7$^$9!#(B
  603.         $B%U%)!<%^%C%H$K(B#(nick)$B$N$h$&$K;XDj$9$k$3$H$G!"(B
  604.         $B%(%$%j%"%9$NBP1~$9$kCM$GCV$-49$($^$9!#(B
  605. </DD>
  606. <DT>  auto.message.exists* $B%U%)!<%^%C%H(B
  607. </DT>
  608. <DD>    $B%a%C%;!<%8$,FO$$$F$$$k$+$I$&$+3NG'$7$?$H$-$K!"(B
  609.         $BFO$$$F$$$k%a%C%;!<%8$,$"$l$P!"$3$3$G;XDj$7$?$b$N$rH/8@$7$^$9!#(B
  610. </DD>
  611. </DL>
  612.  
  613.  
  614. <HR><H3>$B@_DjNc(B</H3>
  615.  
  616. <PRE>
  617. + auto/message.plm
  618. auto.message.file: message.txt;jis
  619. auto.message.alias: alias.txt;jis,euc
  620. auto.message.get: $BEA8@65$($F(B
  621. auto.message.send: $BEA8@(B
  622. auto.message.check: $BEA8@$"$k(B?
  623. auto.message.format: #(from.name|from.nick.now)$B$5$s$+$i!"!V(B#(message)$B!W(B
  624. auto.message.accept: #(to)$B$5$s$X$NEA8@$r3P$($^$7$?(B
  625. auto.message.unknown: #(to)$B$5$s$H$$$&$N$OC/$G$9$+(B?
  626. auto.message.receive: #(number)$B8D$NEA8@$,FO$$$F$$$^$9!#!VEA8@65$($F!W$G$*EA$($7$^$9!#(B
  627. auto.message.nothing: #(name|nick.now)$B$5$s$X$NEA8@$O$"$j$^$;$s(B
  628. auto.message.exists: #(name|nick.now): #(number)$B8D$NEA8@$,$"$j$^$9!#(B
  629. </PRE>
  630.  
  631. $B!VEA8@(B pupu_j $B$[$($[$(!W$N$h$&$KH/8@$9$k$H!"(B
  632. $B!V(Bpupu_j$B!W$H$$$&%K%C%/%M!<%`$N?M$K!V$[$($[$(!W$H$$$&%a%C%;!<%8$rEA$($^$9!#(B
  633. $B$^$?!V(Balias.txt$B!W$K;XDj$5$l$F$$$kL>A0$r;H$C$F!"(B
  634. $B!VEA8@(B $B$W$W(B $B$[$($[$(!W$N$h$&$K$7$F%a%C%;!<%8$rEA$($k$3$H$b$G$-$^$9!#(B
  635.  
  636. <BR><BR>
  637.  
  638. $B%a%C%;!<%8$,FO$$$F$$$k$H$-$K!"%A%c%s%M%k$KF~$C$?$j!"(B
  639. $B%K%C%/%M!<%`$rJQ99$9$k$H!"!VEA8@$,FO$$$F$$$^$9!#!VEA8@65$($F!W$G8+$i$l$^$9!W(B
  640. $B$H8@$C$FCN$i$;$^$9!#%a%C%;!<%8$,FO$$$F$$$k$H$-$K!"(B
  641. $B!VEA8@65$($F!W$HH/8@$9$k$H!"FO$$$F$$$k%a%C%;!<%8$rJ9$/$3$H$,$G$-$^$9!#(B
  642.  
  643. </BODY></HTML>
  644.