# madoka 4.2 doc_autoaction
__END__

                         autoaction plugin ޤˤ夢

                                     Copyright(c)2003- cookie
                                                       The madoka project
                                                   last update 2003/11/01

--

1. Ϥ
    autoaction plugin ϡޤǤ autoans plugin ǤϤǤʤäޤ
  ޤʤȤ褦ˤ plugin Ǥ
  ˤä autoans plugin ֤뤳ȤŪǤ

2. 
2.1 бС
   autoaction.mpi ϰʲΥСưޤ

   - madoka 4.2.6 ʹ

   ʲΥСǤϰ꤬ޤ

   - madoka 4.2.5  4.2.3
     Wait: , %wait.*% ǰä꤬롣
   - madoka 4.2.3 
      If: ưʤ
   - madoka 4.2.2 madoka 4.1, madoka 4.0
     Wait: ưʤ

   ޤplugin/kanji.mpi (ޤƱεǽ plugin) ɬѤ
   ˤƤ

2.2 Ǥ뤳
2.2.1  ñȿ

  ޥåȯФơȿޤ
  ȯޥåɽѤޤ

2.2.2  ͥ

  ȯͥȿȤ˻Ǥޤ
  ʣΥͥꤹ뤳ȤǤޤ

2.2.3  ȯ

  ȯ֤ȿȤ˻Ǥޤ00:00 ޤǽǤ

2.2.4  ȯΨ

  ȿΨǤޤ
  ǻꤹͤϡ1 ȯФ뤹٤Ƥȿοͤ¤ 100 ʲ
  ȤϤΤޤޤγΨ100 ĶȤĶͤʬȤΨȿ
  ޤ

2.2.5  ȯå

  ȿ򥭥å夷ޤƱȿåˤȿޤ
  &cached Ѥޤ

2.2.6  ȿٱ

  ȯľȿ˻ꤷÿԤäƤȿޤ
  ԤäƤ¾ưǽǤ

2.2.7  ñ㥳ޥư

  IRC ޥɤȯԤǤޤ

2.2.8  

  ȿ˳Ƽ¤Ĥ뤳ȤǤޤ

2.2.9  ȼѿ

  % ǰϤޤ줿ѿѤƤ狼䤹Ƥޤ(ä)

2.2.10 ¹(eval)

  ꤷ perl ¹Ԥޤ
  ʤǤǤꤹΤǾˤäƤ madoka ȴޤǽ
  ΤդƤ
  ۤȤɤξϤȤʤƤ¸Ǥ褦ˤʤäƤޤ

2.3 Ĥ

  Ȥ plugin  load Ƥޤ

    &redo('autoaction.mpi');

  ȤȤϰʲΤ褦ˤƸƤӽФޤΤդĤΰϾάǤޤ
  ϤˤäȿϤδؿȯʤɤ򤷤äƤޤ

    &autoaction($command, $channel, $nick, $message, $nickr, $nickc);
    # $command: PRIVMSG ʤɤ IRC ޥ
    # $channel: #ޤɤ ʤɤΥͥ̾
    # $nick: ȯͤ nick
    # $message: ȯʸ
    # $nickr: &convnickr($nick) ͡άǽ
    # $nickc: &convnickv($nick) ͡άǽ

  ֤ͤϰʲΤȤǤ
    0: ʤˤưʤä
    1: ʤˤư򤪤ʤä

3. 

3.1 ե

  autoaction եȤơautoaction.conf, autoaction.dic 
  ޤ
  default Ǥ autoaction.conf, autoaction.dic Ǥ줾 $ans_file,
  $ans_dicfile ˥ե̾ꤹ뤳Ȥ̤̾ˤ뤳ȤǤޤ

3.2 autoaction.conf 

    ȿե autoaction.conf Ϥ٤ euc/ascii ǵҤƤΤ
  ưޤeuc/ascii ʳǵҤϺǰ madoka ȴ
  礬ΤդƤ

3.2.1 ܽ

  ٤ƤϡƬ񤭤ޤ
  ΤҤȤޤ Event: ޤ Word: 鼡 Event: ޤ Word: 
  ľޤϥեνޤǤǤ

  Ԥ # ǤϤޤԡǧǤʤԤ̵뤵ޤ
  ˤ : ()Ƕڤޤ : θˤϥڡҤȤɬפǤ

  ޤäƱƤ Event: , Word: äϡSentence: ñ̤³
  ߤʤƽޤ
  (Event:, Word:, Sentence: ʤɤϸҤޤ)  

3.2.2 Event

Event: 
  NOTICE, PRIVMSG ʳΥޥɤФȿ褦ˤǤ롣
  Word: ȤƱ٥롣Ʊ˻ϤǤʤ(Word: == Event: PRIVMSG
  ʤ)
  ʲλ꤬Ǥ

  NICK
    NICK oldnick newnick
    nick ɽ(ʸʸ϶̤)
    @_ = ('NICK', 'ALL', oldnick, newnick);

    Υ٥ȤФȯ(Sentence: )ϡChannel: ǻꤹ뤳ȡ
    ꤷʤϤʤˤ⤷ޤ

  JOIN
    JOIN nick
    nick  convnickr ͳѴޤconvnick.mpi ȤäƤʤ
    դĤ nick פ򤪤ʤޤ
    ȯͥ Channel: ǻꤹ뤳
    @_ = ('JOIN', chan, nick, '');

  PART
    PART nick
    nick  convnickr ͳѴޤconvnick.mpi ȤäƤʤ
    դĤ nick פ򤪤ʤޤ
    ȯͥ Channel: ǻꤹ뤳
    @_ = ('PART', chan, nick, mes);

  QUIT
    QUIT nick
    nick  convnickr ͳѴޤconvnick.mpi ȤäƤʤ
    դĤ nick פ򤪤ʤޤ
    $chan = 'ALL' ʤΤȿεư(Channel: ǻꤹ뤳)
    @_ = ('QUIT', 'ALL', nick, mes);    

  INVITE
    INVITE nick
    nick  convnickr ͳѴޤconvnick.mpi ȤäƤʤ
    դĤ nick פ򤪤ʤޤ
    ȯͥ Channel: ǻꤹ뤳
    @_ = ('INVITE', chan, nick, '');

  KILL
    KILL nick
    nick  convnickr ͳѴޤconvnick.mpi ȤäƤʤ
    դĤ nick פ򤪤ʤޤ
    $chan = 'ALL' ʤΤȿεư(Channel: ǻꤹ뤳)
    @_ = ('KILL', 'ALL', nick, reason);

  MODE
    MODE nick
    nick  convnickr ͳѴޤconvnick.mpi ȤäƤʤ
    դĤ nick פ򤪤ʤޤ
    ȯͥ Channel: ǻꤹ뤳
    @_ = ('MODE', chan, nick, mode);

  TOPIC
    TOPIC nick
    nick  convnickr ͳѴޤconvnick.mpi ȤäƤʤ
    դĤ nick פ򤪤ʤޤ
    ȯͥ Channel: ǻꤹ뤳
    @_ = ('TOPIC', chan, nick, topic);

  KICK
    KICK nick who
    nick/who  convnickr ͳѴޤconvnick.mpi ȤäƤʤ
    դĤ nick פ򤪤ʤޤ
    ȯͥ Channel: ǻꤹ뤳
    @_ = ('KICK', chan, "nick who", mes);

  NOTICE, PRIVMSG ̵뤹
  (NOTICE ˤȿ)


3.2.3 Word, Sentence

Word: ʸ
  PRIVMSG ޥɤФȿ褦ˤǤޤ
  Event: ȤƱ٥Ʊ˻ϤǤޤ(Word: == Event: PRIVMSG)

  ꤷʸ˥ޥåͭˤʤޤ
  ȿñɽǽǤ(: Word: ^ʸ )
  ޤʲѿѤǤޤ

    %mynick%, %myname%, %botname%,
    %nick%, %nickr%, %name%, %chan%, %chanr%, %chanv%

Sentence: 
  ꤷʸȯޤ
  Sentence: ιԤ Word:/Event: ֥åʣҤǤޤ
  ξϥˤɤ줫򤷤ȯޤ
  Rate: ꤵ줿ϤγΨ򤷤ޤ

3.2.4 Channel

Channel: chan[,chan2,...]
  Sentence: ΤȤ˵Ҥޤꤷʤͥͭˤʤޤ
  Ԥʣͥ򵭽Ҥ ',' Ƕڤäƽ񤤤Ƥ
  ʣ(Ʊ Sentence: ˤ(ʸƱ))񤯤ȤǽǤ

3.2.5 Rate

Rate: num
  1 ʾͤ򵭽Ҥޤ0 񤯤ȯʤʤޤ
  Sentence: ΤȤ˵ҤޤRate: ά Rate: 100 ꤷ
  ΤƱ̤ˤʤޤ
  Ʊ Word: γ Sentence:  Rate: ιפ 100 ǤɬפϤޤ
  (100 ʲ 100 ʬȤơ100 ۤȤʬȤƳޤ)
  Ʊ Sentence: ʣԵҤϤȤ˽񤤤Τͭˤʤޤ

3.2.6 Time

Time: 23:00-08:00
  Sentence: ΤȤ˵ҤޤTime: ꤷʤϥե륿ͭǤ
  (Time: 00:00-23:59 ȤʤǤ)
  ϰϤ 00:00 ޤǧޤ
  Ʊ Sentence: ʣԵҤϤȤ˽񤤤Τͭˤʤޤ

3.2.7 Cache

Cache: [on|off]
  Sentence: ΤȤ˵Ҥޤon ޤ off ꤷޤ
  Cache: ꤷʤ off ȤʤǤ
  on ˤ &sendSCL() Ǥʤ &cached() ȯ褦ˤʤޤ

3.2.8 Wait

Wait: num1,num2[,sleep]
  Sentence: ΤȤ˵Ҥޤ
  num1 ϸԵÿ 0 ʾ͡num2 ϥԵÿ 0 ʾ
  ͤꤷޤnum1  num1+num2 ôԵȤȯޤ
  (Ե¾ȿԤȤǤޤ)
  Wait: ꤷʤϤȯޤ
  sleep ꤹȡԤäƤ֤ϤΥͥǤȿʤʤޤ
  Ʊ Sentence: ʣԵҤϤȤ˽񤤤Τͭˤʤޤ

3.2.9 Command

Command: irc commands
  Sentence: ΤȤ˵Ҥޤ
  Sentence: ˡ%command.?% Ƚ񤤤˼¹Ԥޤ? ϼǤ
  Command: äƤ Sentence:  %command.?% ʤȯ
  ʤˤ⤷ޤ
  ʣԵҤ뤳ȤǽǡҤ֤ %command.1%, %command.2%,
  %command.3%, ... бޤ
  ޤʲѿѤǤޤ

    %mynick%, %myname%, %botname%,
    %nick%, %nickr%, %name%, %chan%, %chanr%, %chanv%

3.2.10 Eval

Eval: 
  ȯ˻ꤵ줿 perl ¹Ԥޤ
  ˤäƤ madoka Ȱ۾ｪλǽ⤢ΤդƤ
  ʣԵҤ뤳ȤǽǤѿѤϤǤޤ

3.2.11 If

If: 
  ȯƤ⤤ɤξꤷޤ
  ˤʤ¾ Sentence: 򤷤ޤ
  ٤Ƥ Sentence: ξ˹ʤäȯޤ
  ʣҤ뤳ȤǽǤ(and )
  or ϰԤǤƤ(op %mynick% -or !op %nick%)
  ޤʲѿѤǤޤ
    %mynick%, %myname%, %botname%,
    %nick%, %nickr%, %name%, %chan%, %chanr%, %chanv%

  Ǥϰʲ̤Ǥ
  Τޤ ! Ĥˤʤޤ(!op, !mode, ...)

    force
       1
      ¾ξ() 1 ǤФλȯ򤷤ޤ
      ! Ĥ̵ˤʤޤ(ʤΤƱ)

    eq %nick% nick1 [nick2 nick3 ...]
      %nick%  nick1 ʤ 1 Ǥʤʤ 0
      ʣ¤٤ƽ񤤤Ϥɤ줫˰פ 1

    op %chan% %nick% [nick2 nick3 ...]
      %nick% ʤȤäƤ 1 äƤʤ 0
      ʣ¤٤ƽ񤤤Ϥɤ줫ʤȤäƤ 1

    exist %chan% %nick% [nick2 nick3 ...]
      %chan%  %nick%  1 ʤ 0
      ʣ¤٤ƽ񤤤Ϥ줫 %chan% ˤ 1

    topic %chan%
      %chan%  topic ĤƤ 1 ĤƤʤ 0

    mode secret %chan%
      %chan%  +s ʤ 1 Ǥʤ 0

    mode key %chan%
      %chan%  +k ʤ 1 Ǥʤ 0

    mode topic %chan%
      %chan%  +t ʤ 1 Ǥʤ 0

    mode private %chan%
      %chan%  +p ʤ 1 Ǥʤ 0

    mode invite %chan%
      %chan%  +i ʤ 1 Ǥʤ 0

    mode moderate %chan%
      %chan%  +m ʤ 1 Ǥʤ 0

    mode nomessage %chan%
      %chan%  +n ʤ 1 Ǥʤ 0

    mode limit %chan%
      %chan%  +l ʤ 1 Ǥʤ 0

3.3   ѿ

  autoaction.conf Ǥ %  % ǰϤäʸѿȤưޤ
  ѿб madoka ѿ֤ޤ
  ߡʲѿƤޤ

    %%            ʸ '%'
    %mynick%      ʬθߤ nick ($us_nick)
    %myname%      ʬ̾ ($us_name, [user]name=)
    %botname%     ʬ̾ ($bot_myname, Word: Ѳǽ)
    %nick%        ȯҤȤ nick ($from2)
    %nickr%       ȯҤȤ convnick Ѵ줿 nick
                    (&convnickr($from2))
    %name%        ȯҤȤ convnick Ѵ줿ʤޤ
                    (&convnickv($from2))
    %nickv%       %name% Ȥʤ
    %chan%        ȯ줿ͥ ($chan)
    %chanr%       %chan% Ȥʤ
    %chanv%       ȯ줿ͥalias ($chanv)
    %head%        ҥåȤñˤäʸ ($`)
    %body%        ҥåȤñ줽Τ
    %tail%        ҥåȤñˤäʸ ($')
    %date%        ߤ (0000/00/00 η)
    %time%        ߤλ (00:00:00 η)
    %version%     ޤɤΥС ("$mdk_label $mdk_version")
    %perlversion% perl ΥС ($perl_version)
    %userversion% [user]version= ꤷ ($yr_version)

    %1%  %9%    Word: ǥޥåȤ $1  $9, $+
    %+%             ($1  $9, $+)

    %select%      $chan  JOIN Ƥ nick ΤʤˤҤȤ
                  򤷤֤1 ȯФ 1 Ĥ򤷤ʤ
    %selectr%     %select%  convnick 줿 nick (&convnickr(%select%))
    %selectv%     %select%  convnick 줿ʤޤ (&convnickv(%select%))
    %nickr.?%     %?% ͤ &convnickr, &convnickv ֤
    %nickv.?%     ?  19 ޤ '+' ޤ 's'
                  (s  %select%  nick Ф)

    %rand.??%     0?? ޤǤ֤ͤ
    %rand.??+???% ????+??? ޤǤ֤ͤ
    %wait.?%      ? ô֤Ԥġ
                  Ʊ Sentence: ʣäϤιʬ wait 
                  &sendSCL() 롣
                  Wait: ꤵƤϤʬ wait ä
                  ? (-1-9)ޤ '+' ξ %?% ͤʬԤ
    %command.1%   Command: ǻꤵ줿ޥɤ򤳤줬줿Ǽ¹
    %command.?% ޤ˻ꤵƤåϤλ
                  ȯޤ

    %000%%999%  &act_000 򤳤줬줿Ǽ¹Ԥޤ
                  ˻ꤵƤåϤλȯޤ
    %dic.*%       autoans.dic γƥѥ᡼򤷤ޤ
    %dic.1%       %dic.*% Ѵ줿Ȥ˽ˤѿꤵޤ
    %dic.10%    ƱΤѤȤ˻Ȥޤ

3.4 autoaction.dic 

  ե autoaction.dic ϥƥȤǵҤޤʸɤϤ٤
  euc/ascii ǵҤƤΤȤưޤeuc/ascii ʳǵҤ
  ʤΤդƤ

food: 
food: ߤ

  Ƚ񤯤ȡ%dic.food% ǡ֤󤴡פޤϡ֤ߤפȽϤޤ
  : ΤȤˤɬڡ1ɬפǤ: ˻Ȥʸ

  A-Z, a-z, 0-9, _, -

  ΤߤǤʳѤϤιԤ̵뤵ޤ

4.  ȯѾ

4.1 autoaction.mpi ǻȤ global ѿ

$ans_dicfile	autoaction μե̾
$ans_file	autoaction αե̾
$ans_*{$word, $sentence} ȿñʸФƥѥ᡼
$ans_word = undef;			# "word1$;word2$;...";
$ans_sentence{$word} = undef;		# "sentence1$;sentence2$;...";
$ans_rate{$word, $sentence} = '100';	# 0
$ans_channel{$word, $sentence} = undef; # "$chan1,$chan2,...";
$ans_time{$word, $sentence} = undef;    # '23:00-08:00';
$ans_wait{$word, $sentence} = undef;	# '5,10';
$ans_command{$word, $sentence} = undef; # "Command :hoge$;...";
$ans_cache{$word, $sentence} = 'off';	# 'on' || 'off';
$ans_if{$word, $sentence} = undef;	# "ifparam1$;ifparam2$;...";
$ans_eval{$word, $sentence} = undef;    # "expression1$;...";
$ansdic{*} = "p1$;p2$;..."    		# 
@ansdic = ('p1', 'p2',...);		# %dic.*% Ѵ줿˳Ǽ

4.2 ƥ֥롼

4.2.1 &autoaction

  ᥤ롼

  @_ = ($com, $chan, $from2, $mes);
  $com:   IRC ޥ(PRIVMSG Ȥ)
  $chan:  action Τäͥ
  $from2: action 򤪤ͤnick (== %nick%)
  $mes:   action 

4.2.2 &_autoaction_send

  å򥵡Ф롣ѿѴ⤹

  @_ = ($chan, $from2, $mes, $word, $sen, $r);
  $chan:  ȯͥ
  $from2: ȯͤnick (== %nick%)
  $mes:   ȯ
  $word:  ޥåñ
  $sen:   Ѵʸ
  $r:     Ԥÿ(base,rand)

4.2.3 &_autoaction_vars

  Word: /%command.?% ǻꤵ줿åѿѴ

  @_ = ($chan, $from2, $mes, $word, $sen);
  @_  &_autoaction_send Ʊ

-
