# madoka 4.2 doc_plugin
__END__

                       ޤɤ  plugin  

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


----------
⤯
1.  plugin
2.  plugin λ
3   ѿ
4.  ֥롼
4.1 madoka.pl
4.2 plugin/kanji.mpi
----------

1. plugin

  ޤɤ 4.x  madoka.pl ΤΤۤ plugin ȤΤ󶡤
  ޤ
  plugin ɲä뤳Ȥˤꤽʤ˵ǽĥ뤳ȤǤޤ


2. pluginλ

  plugin ̾掠֥롼Ȥ󶡤ޤ
  ѿ֥롼˰¤ΤǤ줵ĤС֤֤
  פǤ礦


3. ѿ

  ޤɤǻȤѿȤѿ򼨤ޤ
  ޤؤͤѹ˽붲⤢ޤ

  $at_*
    ưư˴ؤѿǤ

  $at_down_tm
    auto down ޤǤλ(hour)ݻޤ[auto]down=on ΤȤˤͤ
    0 ˤʤȺƵưޤ client ³Ƥ 1 
    ޤ
    [auto]downc= ꤷͤˤʤޤ

  %at_key
    channel  key(+k ꤵ줿)ꤵƤޤ
    [channel]key= ꤷޤ

  %at_mode
    channel mode μưͤǤ[channel]mode= ꤵ줿ͤޤ

  $at_op_rand
    Ȥʤ뤿ꤵƤ֤ˤ뤫ɤΥե饰
    [auto]opc= Ǥ R ĤȤѿ 1 ˤʤޤ

  $at_op_tm
    Ȥʤ뤿 JOIN ƤʤȤۤޤǤλ(sec)
    [auto]opc= ꤷ(sec) ޤ

  $at_state
    ưư bit Ȥ˻äƤޤ
    ˼ʳ bit ͤݾڤޤ

    bit  status
     0   auto nick
     1   auto mode 
     2   auto op (Ȥʤ뤿)
     3   auto down
     4   auto topic
     5   auto priv
     6   auto dcc ($dcc_state  bit 0 ƱǤ뤳)
     7   auto opget

  %at_topic
    channel  topic ݻޤ
    [auto]topic=on ΤȤ topic ΤȤѤޤ

  $bot_*
    $bot_ ǻϤޤѿϥ桼ͳ˻Ȥޤ
    ץǰȤƤޤ

  $chl
    $; ڤѿǤ JOIN Ƥ channel ݻƤޤ

  $chl_*
    channel ˴ؤѿǤ

  $chl_autojoin
    $; ڤѿǤư JOIN  channel ꤵƤޤ

  $chl_autokey
    $; ڤѿǤ$chl_autojoin б channel  key ꤵ
    Ƥޤ

  $chl_automode
    $; ڤѿǤ$chl_autojoin б channel  mode ꤵ
    Ƥޤ

  $chl_cljoin
    $; ڤѿǤclient ³Ȥ JOIN  channel 
    Ƥޤ

  $chl_goodnick
    nick ѤǤʸꤵƤޤ
    plugin/rc/default.mpi ꤵƤޤ

  %chl_group
    [channel]clgroup= ꤵͤޤ
    default  undef Ǥ

  $chl_header
    channel ƬˤʸͤȤꤵƤޤ
    ߤ '#&+!%' ('\#\&\+\!\%') ꤵƤޤ

  $chl_mask
    [channel]mask= ǻꤵ줿ͤޤdefault  *.jp Ǥ

  %chl_mode
     channel  MODE ꤵƤޤ

  $chl_nojoin
    $; ڤѿǤưˤ JOIN ʤ channel ꤵƤޤ

  $chl_opnone
    $; ڤѿǤ[channel]opget=noop ꤵƤ channel 
    ꤵƤޤ

  $chl_oponly
    $; ڤѿǤ[channel]opget=only ꤵƤ channel 
    ꤵƤޤ

  $cl_cn
     bit 饤Ȥ³Ƥ뤫ɤξ֤򼨤ޤ
    0 ΤȤ̤³1 ΤȤ³Ǥ

  %cl_group
    [client]host= ꤵ줿 groupname ޤ
    default  undef Ǥ

  @cl_hosts
    [client]host= ꤵ줿 IPaddress, host, domain ʤɤޤ
    groupname ̤ѿ($cl_group)˳Ǽޤ

  $cl_max
    饤Ȥκ³Ǥdefault Ǥ 256 åȤޤ

  $cl_no
    ƥ饤Ȥ˿ֹ椬Ǽޤ
    äƤֹ椬߽Ƥ륯饤ȤȤʤޤ

  $cl_ok
     bit 饤Ȥǧڤɤξ֤򼨤ޤ
    0 ΤȤǧ1 ΤȤǧںѤǤ

  %cl_wbuf
    ³Ƥƥ饤ȤåǤ
    key ˤϥ饤Ȥ FILEHANDLE Ȥޤ

  $dcc_bindaddr4
    IPv6 ³ƤȤ IPv4  dcc ȤѤ륢ɥ쥹Ǥ
    [dcc]bindaddr= ꤷͤޤdefault ̤Ǥ

  $dcc_bindaddr6
    IPv4 ³ƤȤ IPv6  dcc ȤѤ륢ɥ쥹Ǥ
    [dcc]bindaddr= ꤷͤޤdefault ̤Ǥ

  $dcc_dir
    dcc Ǽե¸ǥ쥯ȥ꤬ꤵޤ
    [dcc]dir= ꤷͤޤdefault  ${HOME}/tmp/ Ǥ

  $dcc_log
    dcc ǤμΥե̾ꤵޤ
    [dcc]log= ꤷͤޤdefault  logdcc Ǥ

  $dcc_mode
    dcc Ǽե mode ꤵޤ
    [dcc]mode= ꤷͤޤdefault  $log_mode Ʊ
    ʤޤ

  $dcc_sizelimit
    [dcc]sizelimit= ǻꤷͤޤdefault  0 Ǥ

  $dcc_state
    dcc  bit Ȥ˻äƤޤ
    ˼ʳ bit ͤݾڤޤ

    bit  status
     0   auto get ($at_state  bit 6 ƱǤ뤳)
     1   allow in channel
     2   refusename
     3   client ([dcc]client ꤵ)

  $homedir
    ۡǥ쥯ȥΰ֤ǼƤޤ

  $i, $j, $k, $l, $u 
    ѿǤƤݾڤޤ

  $interval
    mainloop ԤÿǤ
    åȤ줿ˤʤˤʤȰٶ롼פޤ

  $mdk_label
    ޤɤΤʤޤǤ̾ 'madoka' ȥåȤƤޤ

  $mdk_rc
    madoka.rc Τꡣdefault  ./madoka.rc Ǥ

  $mdk_modes
    madoka.modes Τꡣdefault  ./madoka.modes Ǥ

  $mdk_version
    ޤɤΥСäƤޤ
    "$mdk_label $mdk_version" ǡversion ɽȤޤ

  $per_sec
  $per_min
  $per_hour
  $per_day
    $; ڤѿǤƻ֤Ȥ˥ꥹȤ˳Ǽ줿ؿ¹Ԥޤ

  $cmin, $chour, $cday
    $per_min, $per_hour, $per_day ΥåѿǤ
    줾졢$min, $hour, $mday ȰۤʤäȤ $per_* ˥åȤ줿
    ֥롼󤬸ƤФޤ

  $perl_version
    perl ΥС󤬳ǼƤޤ
    5.6.0 ʹߤ 5.005 Ǥɽۤʤޤ

  $plugin_do
    $; ڤѿǤ˳Ǽ줿ե̾Ƥ &plugin ǸƤ
    ˼¹Ԥޤ

  $plugin_list
    $; ڤѿǤȤƤץ饰ΤʤޤϤޤ
    ƥץ饰Ūˤѿ &list_add ʤȤޤ

  $plugin_sub
    $; ڤѿǤ˳Ǽ줿ؿ̾ &plugin ǸƤФ
    ¹Ԥޤ

  $sv ( == $sv[0])
    ³Ƥ/褦ȤƤ륵̾Ǥ  
    @sv  server= ʣꤷȤ˽֤ 0,1,... ȤĤ롣

  $sv_bindaddr ( == $sv_bindaddr[0])
    ³Ѥ륤󥿡եΥɥ쥹Ǥ
    $sv_bindaddr[x]  $sv[x] бޤ

  $sv_pass ( == $sv_pass[0])
    ³Ƥ/褦ȤƤ륵ФΥѥɤǤ
    $sv_pass[x]  $sv[x] бޤ

  $sv_port ( == $sv_port[0])
    ³Ƥ/褦ȤƤ륵ФΥݡֹǤ
    $sv_port[x]  $sv[x] бޤ

  $sv_state
    ФȤ³֤ bit Ȥ˻äƤޤ
    ˼ʳ bit ͤݾڤޤ

    bit  status
     0   Ф³Ƥ(1)     Ƥʤ(0)
     1   channel  join Ƥ(1) Ƥʤ(0)
     2   001 äƤ(1)     äƤʤ(0)
     3   IPv6 ˤ³(1)          IPv4 ˤ³(0)

  $sv_tm
    ФǸˤʤˤƤȤλ֡

  $sv_tmout
    ФȤΥॢȴֳ(sec)Ǥ
    λְʾʤˤʤȥФǤ줿Ȥߤʤޤ

  $sv_tmout_cn
    ³ΥФȤΥॢȴֳ(sec)Ǥ
    λְʾʤˤʤ³˼ԤȤߤʤޤ

  $sv_wbuf
    ³Ƥ륵ФåǤ

  $us_state
    桼 bit Ȥ˻äƤޤ
    ˼ʳ bit ͤݾڤޤ

    bit  status
     0   nicklist 
     1   nicknumber 
     2   madoka.pid 
     3   fork ʤ

  $yr_cache
    [yuurii]cache ǻꤷͤäƤޤ

  $yr_invite
    [yuurii]invite ǻꤷͤäƤޤ
    0: off
    1: on

  $yr_owner
    owner ޥɼ¹ԸĤҤȤ user@domain ޤ
    $yr_owner = 'cookie\@.*\.madoka\.org';
    Τ褦ˤޤ

  $yr_timer
    [yuurii]timer ǻꤷͤäƤޤ

  $yr_version
    yuurii  version ꤷޤ

  @yr_nalias
    plugin/yuurii/convnick.mpi ǻѤ alias ե̾äƤޤ
    ͤ ('yuurii/.nalias', 'yuurii/.nalias2') Ǥ


4. ֥롼

4.1 madoka.pl

  ޤɤΤȤ߹ޤƤ¾Ѳǽʥ֥롼Ǥ

  &alias_chan
    @_ = ($chan);
      $chan Ϥ줿ͥ̾ [channel]alias= ǻꤵ줿 mask
      ˽äѴ֤ޤ

    return: ($chanr, $chanv) = (#chan:mask, %chan) η

  &cached
    @_ = ($mes, $chan, $code, $wait);
      å򥭥å夷Ƥ &sendSCL ޤ
      å夵줿åƱȯä &sendSCL 
      ޤ
      $wait ϤΤޤ &sendSCL Ϥޤ

  &check_chan
    @_ = ($chan);
      $chan Ϳ줿ͥ̾åޤ

    return: 0: ʤ
            1: 

  &check_chl
    @_ = ($chan);
      $chan Ϳ줿ͥ̾Ȥޤɤ¦ǻäƤͥ̾
      ʸʸפʤˤޤɤ¦ǻäƤͥ̾ˤ
      ֤ޤ
      ޤɤ¦ǻäƤʤͥ̾ξϤΤޤ֤ޤ

    return: $chan

  &check_host
    @_ = ($cl_no, @ip);
      $cl_no Υ饤Ȥ @ip ǻꤷ access ¤˥ޥå뤫
      åޤޥåʤä³ݤޤ

    return: 0: ޥåʤ(³)
            1: ޥå(³)

  &chl_split
    @_ = ($chan);
      , Ƕڤ줿 $chan ʬΥ褦Ȥޤ

    return: ($chan1, $chan2, ...)
            , ʬ줿ͥ

  &client
    @_ = ($cl_no, $line);
      饤ȤΥåȤδؿƤФޤ
      ޥɤȤˡ&cl_COMMAND ˽錄ޤ

  &cl_*
    饤ȤΥޥɽ롼

  &ctcp
    @_ = ($chan, $mes);
      CTCP(Client To Client Protocol) åȡδؿ
      Фޤ
      CTCP ΥޥɤȤ &ctcp_COMMAND ˽Ϥޤ
      &ctcp_COMMAND ֤ͤ 1 ξ client ˥ޥɤޤ
      0 ξ client ФƲ⤷ޤ

  &ctcp_*
    CTCP Υޥɽ롼

    return: 0: client ˥ޥɤ(plugin/server/privmsg.mpi)
            1: client ФƲ⤷ʤ

  &current_time
    @_ = undef;
      ߤλ֤ $year(ǯ()), $mon((1-12)), $mday((1-31)),
      $hour((0-23)), $min(ʬ(0-59)), $sec((0-59)) ˥åȤޤ

  &down
    @_ = ($mes);
      Ϥ줿($mes) STDERR ˤϤƤޤɤλޤ

  &init_client
    @_ = undef;
      饤Ȥ³Ȥ˼¹Ԥޤ

  &list_init
    @_ = ($list);
      $list  $list = "$;";

    return: ʤ

  &list_add
    @_ = ($list, @dist);
      $list  @dist äޤ

    return: 0: 
            1: 

  &list_delete
    @_ = ($list, @dist);
      $list  @dist ޤ

    return: 0: ٤Ƽ
            1: İʾ

  &list_change
    @_ = ($list, $dist1, $dist2);
      $list  $dist1  $dist2 ֤ޤ

    return: 0: 
            1: 

  &list_exist
    @_ = ($list, @dist);
      $list  @dist ¸ߤ뤫ɤĴ٤ޤ

    return: 0: ¸ߤʤ
            1: İʾ¸ߤ

  &mes
    @_ = ($mes, $chan);
      $mes  $chan Υ˽񤭽Фޤ
      
  &mio
    @_ = ($tag, $mes);
      [mio]conf= ꤷƤ硢ե $tag б
      ֤ޤꤷƤʤ $mes ֤ޤ

  &plugin
    @_ = undef;
      ƥޥ hook ǸƤФޤ
      [plugin]main=, bot= ꤷƤʤϤʤˤ⤷ޤ

  &read_rc
    @_ = undef;
      $mdk_rc ꤵƤե̾եȤɤߤߤޤ

  &redo
    @_ = ($file);
      $file Ƥ do $file ޤ

    return: 1: 
            0: ̤

  &_redo
    @_ = ($file, $line);
      $file Ƥ eval($line) ޤ

    return: 1: 
            0: ̤

  &search_file
    @_ = ($file);
      $file  ./, @plugindir, ./plugin/, (madoka.plΤdirectory)/plugin/,
      @INC νˤޤ
      ֤ͤϸĤäե path/filename Ȥʤޤ
      ʤä $file ֤ޤ

  &send
    @_ = ($p, $mes, $cl_no);
    $p = 'sv' || 'cl' || 'ccn' || 'cch' || 'cco';
      $p ǻꤵ줿Ȥ $mes 򤽤Τޤ޽Ϥޤ
      $p Ϥ줾졢
        sv : server
        cl : client (one client)
        ccn: client (connected/all client)
        cch: client (connected/current client)
        cco: client (connected/other client)
      ȤʤäƤޤ

  &send_flush
    @_ = ();
      IRC server ν񤭹ԤΥå ($sv_wbuf)  client 
      񤭹ԤΥå (%cl_wbuf) Ū˽񤭽Фޤ

  &sendSCL
    @_ = ($mes, $chan, $code, $wait);
      &send('sv', ) , &send('cch', ) Ԥʤޤ
      $code ꤵƤȤϡ$mes δɤ $code ǤȤ
      JIS ѴԤޤ
      $wait ꤵƤȤϡꤵ줿ÿԤäȤȯ
      ޤ
      $wait Ū +time ͤޤ($wait +  time) 
      ߤ time ʾˤʤȯޤ

  &server
    @_ = ($sv_no, $line);
      ФΥåȤδؿƤФޤ
      ޥɤȤˡ&sv_COMMAND ˽錄ޤ

  &sv_*
    ФΥޥɽ롼

  &taillog
    @_ = undef;
      taillog ([client]tail= ꤷƤ) 饤Ȥ˽Ϥޤ

4.2 plugin/kanji.mpi

  Υץ饰ϡɤѴôޤ
  ȤäƤ뤫ɤ &list_exist($plugin_list, 'kanji') ȽǤޤ

  Υץ饰ϡȾѥʤΤߤ sjis  euc ȸǧ
  ޤ

  &kanji_code
    @_ = ($mes);
      $mes δɤĴ٤֤ޤ

    return: 'jis'    : JIS Ǥ
            'euc'    : EUC Ǥ
            'sjis'   : SHIFT-JIS Ǥ

  &kanji_euc
    @_ = (\$mes);
    @_ = (\$mes, $code);
      $mes Ƥ euc ˤޤɤϼưȽ̤ޤ
      $code ꤵƤϡɤ $code ǤȤ
      Ѵޤ

  &kanji_jis
    @_ = (\$mes);
    @_ = (\$mes, $code);
      $mes Ƥ jis ˤޤɤϼưȽ̤ޤ
      $code ꤵƤϡɤ $code ǤȤ
      Ѵޤ

  &kanji_sjis
    @_ = (\$mes);
    @_ = (\$mes, $code);
      $mes Ƥ sjis ˤޤɤϼưȽ̤ޤ
      $code ꤵƤϡɤ $code ǤȤ
      Ѵޤ

