home *** CD-ROM | disk | FTP | other *** search
/ ftp.madoka.org / 2014.12.ftp.madoka.org.tar / ftp.madoka.org / pub / plum / 1.x / plum10.lzh / plum10 / yuurii.plm < prev   
Text File  |  1997-08-13  |  4KB  |  179 lines

  1. package yuurii;
  2.  
  3. require 'jcode.pl';
  4.  
  5. $PLUGINRC = '.pluginrc';
  6. $LOGHEADER = '%h:%m';
  7. $timer_count_def = 2000;
  8. $lasttime = time;
  9. $bot_cache_mes = 50;
  10. @cache_mes = ();
  11. $autojoinchanlist = $;;
  12. $chanlist = $;;
  13. $logmode = (&'property($'userno, 'filemode') || (umask ^ 0666)) | 0200;
  14.  
  15. $_ = 'yuurii';
  16.  
  17. sub main_loop {
  18.   local($userno) = @_;
  19.   local($nowtime, $i);
  20.   $nowtime = time;
  21.   &setuser($userno);
  22.   for ($i = $lasttime; $i < $nowtime; $i++) {
  23.     foreach $chan (&'array($autojoinchanlist)) {
  24.       $time_count{$chan}-- if $time_count{$chan} > 0;
  25.       $time_count{$chan}++ if $time_count{$chan} < 0;
  26.     }
  27.     &plugin($userno, 'bot_timer');
  28.   }
  29.   $lasttime = $nowtime;
  30. }
  31.  
  32. sub ss_join {
  33.   local($serverno, $prefix, $cmd, $chan) = @_;
  34.   local($nick, $vchan);
  35.   $nick = &'prefix($prefix);
  36.   $vchan = &'vchan($chan);
  37.   &setuser($'userno[$serverno]);
  38.   if ($nick eq $'nick[$serverno]) {
  39.     $time_count{$vchan} = $timer_count_def;
  40.     $autojoinchanlist = &'add($autojoinchanlist, $vchan);
  41.     $chanlist = &'add($chanlist, $vchan);
  42.   } else {
  43.     &plugin($'userno[$serverno], $cmd, $chan, $nick, '');
  44.   }
  45.   return ($prefix, $cmd, $chan);
  46. }
  47.  
  48. sub ss_kick {
  49.   local($serverno, $prefix, $cmd, $chan, $who, $msg) = @_;
  50.   local($vchan) = &'vchan($chan);
  51.   if ($who eq $'nick[$serverno]) {
  52.     $chanlist = &'remove($chanlist, $vchan);
  53.   }
  54.   &setuser($'userno[$serverno]);
  55.   return ($prefix, $cmd, $chan, $who, $msg);
  56. }
  57.  
  58. sub ss_nick {
  59.   local($serverno, $prefix, $cmd, $newnick) = @_;
  60.   local($nick) = &'prefix($prefix);
  61.   &setuser($'userno[$serverno]);
  62.   if ($nick eq $'nick[$serverno]) {
  63.     $my_nick = $newnick;
  64.   } else {
  65.     &plugin($'userno[$serverno], $cmd, 'ALL', $newnick, $nick);
  66.   }
  67.   return ($prefix, $cmd, $newnick);
  68. }
  69.  
  70. sub ss_part {
  71.   local($serverno, $prefix, $cmd, $chan, $msg) = @_;
  72.   local($nick, $vchan);
  73.   $nick = &'prefix($prefix);
  74.   local($vchan) = &'vchan($chan);
  75.   if ($nick eq $'nick[$serverno]) {
  76.     $autojoinchanlist = &'remove($autojoinchanlist, $vchan);
  77.     $chanlist = &'remove($chanlist, $vchan);
  78.   }
  79.   &setuser($'userno[$serverno]);
  80.   &plugin($'userno[$serverno], $cmd, $chan, $nick, '');
  81.   return ($prefix, $cmd, $chan, $msg);
  82. }
  83.  
  84. sub ss_privmsg {
  85.   local($serverno, $prefix, $cmd, $chan, $msg) = @_;
  86.   local($nick) = &'prefix($prefix);
  87.   &setuser($'userno[$serverno]);
  88.   &plugin($'userno[$serverno], $cmd, $chan, $nick, $msg);
  89.   return ($prefix, $cmd, $chan, $msg);
  90. }
  91.  
  92. sub ExistList {
  93.   local($list, $item) = @_;
  94.   return &'exist($list, $item);
  95. }
  96.  
  97. sub local_chan {
  98.   local($chan) = @_;
  99.   if ($chan) {
  100.     return (&'rchan($chan), &'vchan($chan));
  101.   } else {
  102.     return ('', '');
  103.   }
  104. }
  105.  
  106. sub now_time {
  107.   local($tmp);
  108.   ($sec, $min, $hour, $mday, $mon, $year) = localtime(time);
  109.   $mon++;
  110.   $year += 1900;
  111.   $header = &'property($userno, 'logheader') || $LOGHEADER;
  112.   $tmp = sprintf('%02d', $hour);
  113.   $header =~ s/\%h/$tmp/g;
  114.   $tmp = sprintf('%02d', $min);
  115.   $header =~ s/\%m/$tmp/g;
  116.   $tmp = sprintf('%02d', $sec);
  117.   $header =~ s/\%s/$tmp/g;
  118. }
  119.  
  120. sub plugin {
  121.   local($userno) = shift;
  122.   local($command) = shift;
  123.   local($pluginrc) = &'property($userno, 'yuurii') || $PLUGINRC;
  124.   do $pluginrc;
  125. }
  126.  
  127. sub redo {
  128.   local($file) = @_;
  129.   $modify{$file} = 0 unless $modify{$file};
  130.   return if $modify{$file} == (stat($file))[9];
  131.   $modify{$file} = (stat($file))[9];
  132.   do $file;
  133. }
  134.  
  135. sub sendCchan {
  136.   local($msg) = @_;
  137.   local($prefix, $cmd, @params);
  138.   chop($msg);
  139.   ($prefix, $cmd, @params) = &'parse($msg);
  140.   foreach $clientno (&'array($'clientlist)) {
  141.     next unless $'userno[$clientno] == $userno;
  142.     next unless $'avail[$clientno];
  143.     &'c_print($clientno, $prefix, $cmd, @params);
  144.   }
  145. }
  146.  
  147. sub sendS {
  148.   local($msg) = @_;
  149.   chop($msg);
  150.   &'s_print($'server[$userno], &'parse($msg));
  151. }
  152.  
  153. sub sendSCL {
  154.   local($msg, $chan) = @_;
  155.   local($rchan, $vchan) = &local_chan($chan);
  156.   &sendCchan(":$'nickname[$userno] PRIVMSG $rchan :$msg\n");
  157.   &sendS("PRIVMSG $rchan :$msg\n");
  158.   push(@cache_mes, ">$vchan< $msg");
  159.   shift(@cache_mes) if scalar(@cache_mes) > $bot_cache_mes;
  160. }
  161.  
  162. sub cached {
  163.   local($msg, $chan) = @_;
  164.   local($vchan) = &'vchan($chan);
  165.   foreach $cache (@cache_mes) {
  166.     return if ($cache eq ">$vchan< $msg");
  167.   }
  168.   &sendSCL($msg, $chan);
  169. }
  170.  
  171. sub setuser {
  172.   local($userno) = @_;
  173.   $my_nick = $'nickname[$userno];
  174.   foreach $chan (&'array($chanlist)) {
  175.     $nameslist{&'vchan($chan)} = $'nameslist{$userno, $chan};
  176.   }
  177. }
  178.  
  179.