Auto 関係のモジュール


Auto::Alias

ユーザエイリアス情報の管理を行ないます。

エイリアスは基本的にname,userの二つのフィールドから成っており、
それぞれユーザー名、ユーザーマスクを表します。

 エイリアス定義ファイルのパスと、そのエンコーディング。
 このファイルは次のようなフォーマットである。
 1. それぞれの行は「<キー>: <値>」の形式である。
 2. 空の行で、各ユーザーを区切る。
 3. <値>はカンマで区切られて複数の値とされる。

 エイリアス定義ファイルの例:

 name: sample
 user: *!*sample@*.sample.net

 name: sample2,[sample2]
 user: *!sample2@*.sample.net,*!sample2@*.sample2.net

alias:alias.txt
alias-encoding:euc

この発言をした人のエイリアスが登録されていれば、それをprivで送る。

confirm:エイリアス確認

user *!*user@*.user.net」のようにして情報を追加。
発言をした人のエイリアスが未登録だった場合は、userのみ受け付けて新規追加とする。

add:エイリアス追加

name ユーザー」のようにして情報を削除。
userを全て削除されたエイリアスは他の情報(name等)も含めて消滅する。

remove:エイリアス削除

メッセージが追加されたときの反応を指定します。
ランダムなメッセージを発言する際のフォーマットを指定します。
エイリアス置換が有効です。#(nick.now)、#(channel)は
それぞれ相手のnick、チャンネル名に置換されます。
#(key)、#(value)は、追加されたキーと値に置換されます。

added-format:#(name|nick.now): エイリアス #(key) に #(value) を追加しました。
add-failed-format:#(name|nick.now): エイリアス #(key) の追加に失敗しました。

メッセージが削除されたときの反応を指定します。
added-formatで指定できるものと同じです。

removed-format:#(name|nick.now): エイリアス #(key) から #(value) を削除しました。
remove-failed-format:#(name|nick.now): エイリアス #(key) からの削除に失敗しました。

エイリアスの追加や削除が許されている人。省略された場合は「*!*@*」と見做される。

modifier:*!*@*

Auto::Answer

特定の発言に反応して対応する発言をする。

Auto::Aliasを有効にしていれば、エイリアス置換を行ないます。

 反応する発言と、それに対する返事を定義します。
 エイリアス置換が有効です。#(nick.now)と$(channel)はそれぞれ
 相手の現在のnickとチャンネル名に置換されます。

 書式: <反応する発言のマスク> <それに対する返事>
 例:

reply:こんにちは* こんにちは、#(name|nick.now)さん。

この例では誰かが「こんにちは」で始まる発言をすると、
発言した人のエイリアスを参照して「こんにちは、○○さん。」のように発言します。


Auto::Calc

Perlの式を計算させるモジュール。

反応する発言を指定します。

request:計算

使用を許可する人&チャンネルのマスク。
例はTiarraモード時。 [default: なし]

mask:* +*!*@*

[plum-mode] mask: +*!*@*

結果が未定義だったときに置き換えられる文字列。省略されると undef 。

undef:(未定義)

正常に計算できたときのフォーマット
method: 計算式, result: 結果, error: エラー, signal: シグナル

reply-format:#(method): #(result)

エラーが起きたときのフォーマット
method: 計算式, result: 結果, error: エラー, signal: シグナル

error-format:#(method): エラーです。(#(error))

シグナルが発生したときのフォーマット

signal-format:#(method): シグナルです。(#(signal))

signal-$SIGNALNAME-format 形式。
$SIGNALNAME には現状 alarm/sigfpe があります。
該当がなければ signal-format にフォールバックします。

いくつかの例を挙げます。

signal-alarm-format:#(method): 時間切れです。
signal-sigfpe-format:$(method): 浮動小数点計算例外です。

タイムアウトする秒数を指定します。 alarm に渡されます。
再帰を止めるのに使えますが、どうもメモリリークしていそうな雰囲気です。

timeout:1

サブルーチン定義を許可するかどうかを指定する。
再帰定義が可能なので、許可する場合はこのモジュール専用の
Tiarra を動かすことをお勧めします。

permit-sub:0

初期化する発言を指定します。
このモジュールでは現状変数や関数定義などを行えます。
このコマンドが発行されるとそれらをクリアします。

init:計算初期化

初期化を許可する人&チャンネルのマスク。
例はTiarraモード時。 [default: なし]

init-mask:* +*!*@*

[plum-mode] mask: +*!*@*

再初期化したときの発言を指定します。

init-format:初期化しました。

Auto::ChannelWithoutOper

チャンネルオペレータ権限がなくなってしまったときに発言する。

+で始まらない特定のチャンネルで、+aモードでも+rモードでもないのに
誰もチャンネルオペレータ権限を持っていない状態になっている時、
そこに誰かがJOINする度に特定のメッセージを発言するモジュールです。

書式: <チャンネル名> <メッセージ>

channel:#IRC談話室@ircnet なると消失しました。

Auto::Joined

特定のチャンネルに誰かがJOINする度に特定のメッセージを発言する。

Auto::Aliasを有効にしていれば、エイリアス置換を行ないます。

 発言を行なうチャンネルと、その内容を定義します。
 #(nick.now)と$(channel)は、それぞれ相手の現在のnickとチャンネル名に置換されます。

 書式: <チャンネル名> <発言内容>

channel:#チャンネル@ircnet 「#ちゃんねる」に移転しました。

Auto::MesMail

伝言をメールとして送信する。

メールアドレスはエイリアスの mail を参照します。

Fromアドレス。[default: OSのユーザ名]

from:example1@example.jp

送信用のキーワード [default: mesmail_send]

send:速達伝言

使用を許可する人&チャンネルのマスク。
例はTiarraモード時。 [default: なし]

mask:* +*!*@*

[plum-mode] mask: +*!*@*

maskで拒否されたときのメッセージ [default: なし]

deny:伝言したくない。

一度に送れる宛先の量 [default: 無制限]

max-send-address:5

宛先を探すエイリアスエントリ [default: なし]

alias-key:name
alias-key:nick

宛先の人を判別出来なかったときのメッセージ [default: なし]

unknown:#(who)さんと言うのは誰ですか?

メールの日付形式

date:%H:%M:%S

エイリアスは見付かったけれどメールアドレスが登録されていなかったときのメッセージ。 [default: なし]

none-address:#(who)さんはアドレスを登録していません。

SMTPのホスト [default: localhost]

smtphost:localhost

SMTPのポート [default: smtp(25)]

smtpport:25

SMTPで自ホストのFQDN [default: localhost]

smtpfqdn:localhost

送信するメールの既定件名(エイリアス使用不可) [default: Message from IRC]

subject:Message from IRC

送信するメールの本文 [default: #(date) << #(from.name|from.nick|from.nick.now) >> #(message)]

format:#(date)に#(from.name|from.nick|from.nick.now)さんから#(message)という伝言です。

送信したときのメッセージ。 [default: なし]

accept:#(who)さんに#(message)と伝言しておきました。

---- POP before SMTP の指定 ----
POP before SMTPを使う。 [default: no]

use-pop3:yes

POP before SMTPのタイムアウト時間(分)。分からない場合は指定しなくて良い。 [default: 0]

pop3-expire:4

POPのホスト。 [default: localhost]

pop3host:localhost

POPのポート。 [default: pop(110)]

pop3port:110

POPのユーザ [default: OSのユーザ名]

pop3user:example1

POPのパスワード [default: 空パスワード('')]

pop3pass:test-password

---- エラーメッセージの設定 ----

一般エラー。
error-[state] と言う形式で詳細エラーメッセージを指定できる。
[state]は、
   * mailfrom(メールの送信者を指定しようとしてエラー)
   * rcptto(メールの送信先を指定しようとしてエラー)
   * norcptto(メールの送信先が全部無くなった)
   * data(メールの中身を送信しようとしてエラー)
   * finish(メールの中身を送信したらエラー)
がある。特に欲しくなければerror-[state]は指定しなくても構わない。
メッセージを出したくないなら中身の無いエントリを指定すれば良い。
error-[state]が指定されてない場合は代わりに error を使う。 [default: 未定義]

error-rcptto:
error-norcptto:#(who)さんには送れませんでした。送信できるメールアドレスがありません。
error-data:メールが送信できません。DATAコマンドに失敗しました。#(line;サーバ応答:%s|;)
error:メール送信エラーです。#(line;サーバ応答:%s|;)#(state; on %s|;)

致命的なエラー。メールに個別なエラーではないので送信者(のprefix)毎に1メッセージ送られる。
fatalerror-[state]
[state]:
   * first(接続エラー)
   * helo(SMTPセッションを開始出来ない)
がある。特に欲しくなければfatalerror-[state]は指定しなくても構わない。
メッセージを出したくないなら中身の無いエントリを指定すれば良い。
fatalerror-[state]が指定されてない場合は代わりに fatalerror を使う。 [default: 未定義]

fatalerror-first:SMTPサーバに接続できません。
fatalerror:SMTPセッションで致命的なエラーがありました。#(line; サーバ応答:%s|;)#(state; on %s|;)

Auto::Oper

特定の文字列を発言した人を+oする。

Auto::Aliasを有効にしていれば、エイリアス置換を行ないます。

+oを要求する文字列(マスク)を指定します。

request:なると寄越せ

チャンネルオペレータ権限を要求した人と要求されたチャンネルが
ここで指定したマスクに一致しなかった場合は
denyで指定した文字列を発言し、+oをやめます。
省略された場合は誰にも+oしません。
書式は「チャンネル 発言者」です。
マッチングのアルゴリズムは次の通りです。
1. チャンネル名にマッチするmask定義を全て集める
2. 集まった定義の発言者マスクを、定義された順にカンマで結合する
3. そのようにして生成されたマスクで発言者のマッチングを行ない、結果を+o可能性とする。
例1:
mask: *@2ch* *!*@*
mask: #*@ircnet* *!*@*.hoge.jp
この例ではネットワーク 2ch の全てのチャンネルで誰にでも +o し、
ネットワーク ircnet の # で始まる全てのチャンネルでホスト名 *.hoge.jp の人に+oします。
#*@ircnetだと「#hoge@ircnet:*.jp」などにマッチしなくなります。
例2:
mask: #hoge@ircnet -*!*@*,+*!*@*.hoge.jp
mask: * +*!*@*
基本的に全てのチャンネルで誰にでも +o するが、例外的に#hoge@ircnetでは
ホスト名 *.hoge.jp の人にしか +o しない。
この順序を上下逆にすると、全てのチャンネルで全ての人を +o する事になります。
何故なら最初の* +*!*@*が全ての人にマッチするからです。

mask:* *!*@*

+oを要求した人を実際に+oする時、ここで指定した発言をしてから+oします。
#(name|nick)のようなエイリアス置換を行います。
エイリアス以外でも、#(nick.now)を相手のnickに、#(channel)を
そのチャンネル名にそれぞれ置換します。

message:了解

+oを要求されたが+oすべき相手ではなかった場合の発言。
省略されたら何も喋りません。

deny:断わる

+oを要求されたが相手は既にチャンネルオペレータ権限を持っていた場合の発言。
省略されたらdenyに設定されたものを使います。

oper:既に@を持っている

+oを要求されたが自分はチャンネルオペレータ権限を持っていなかった場合の発言。
省略されたらdenyに設定されたものを使います。

not-oper:@が無い

チャンネルに対してでなく自分に対して+oの要求を行なった場合の発言。
省略されたらdenyに設定されたものを使います。

private:チャンネルで要求せよ

チャンネルの外から+oを要求された場合の発言。+nチャンネルでは起こりません。
省略されたらdenyに設定されたものを使います。

out:チャンネルに入っていない

Auto::Random

特定の発言に反応してランダムな発言をします。

Auto::Aliasを有効にしていれば、エイリアス置換を行ないます。

使用するブロックの定義。

blocks:wimikuji
wimikuji

ランダムに発言するメッセージの書かれたファイルと、その文字コードを指定します。
ファイルの中では一行に一つのメッセージを書いて下さい。

file:random.txt
file-encoding:euc

反応する発言を表すマスクを指定します。

request:ゐみくじ

メッセージの登録数を返答するキーワードを指定します。

count-query:ゐみくじ登録数

メッセージの登録数を返答するときの反応を指定します。
formatで指定できるものと同じです。#(count)は登録数になります。

count-format:ゐみくじは#(count)件登録されています。

ランダムなメッセージを発言する際のフォーマットを指定します。
エイリアス置換が有効です。#(message)、#(nick.now)、#(channel)は
それぞれメッセージ内容、相手のnick、チャンネル名に置換されます。
何も登録されていないときのために、#(message|;無登録)のように指定すると良いでしょう。

format:#(name|nick.now)の運命は#(message)

反応する人のマスク。

mask:* *!*@*

plum: mask: *!*@*

メッセージが追加されたときの反応を指定します。
formatで指定できるものと同じです。#(message)は追加されたメッセージになります。

added-format:#(name|nick.now): ゐみくじ #(message) を追加しました。

メッセージが削除されたときの反応を指定します。
formatで指定できるものと同じです。#(message)は削除されたメッセージになります。

removed-format:#(name|nick.now): ゐみくじ #(message) を削除しました。

発言に反応する確率を指定します。百分率です。省略された場合は100と見做されます。

rate:100

メッセージを追加するキーワードを指定します。
ここで指定したキーワードを発言すると、新しいメッセージを追加します。
実際の追加方法は「 <追加するメッセージ>」です。

add:ゐみくじ追加

メッセージを削除するキーワードを指定します。
実際の削除方法は「 <削除するキーワード>」です。

remove:ゐみくじ削除

addとremoveを許可する人。省略された場合は誰も変更できません。

modifier:* *!*@*

plum: modifier: *!*@*


Auto::Reply

特定の発言に反応して発言をします。

Auto::Aliasを有効にしていれば、エイリアス置換を行ないます。

使用するブロックの定義。

blocks:std
std

データファイルと文字コードを指定します。
ファイルの中では一行に一つの"反応:メッセージ"を書いて下さい。

file:reply.txt
file-encoding:euc

反応チェックを行うキーワードを指定します。
実際の指定方法は、「 <チェックしたい発言>」です。

request:反応チェック

request に反応するときのフォーマットを指定します。
#(key) がキーワード、 #(message) が発言に置換されます。

reply-format:「#(key)」という発言に「#(message)」と反応します。

request に反応する最大個数を指定します。
あまり大きな値を指定すると、アタックが可能になったり、ログが流れて邪魔なので注意してください。

max-reply:5

メッセージの登録数を返答するキーワードを指定します。

count-query:反応登録数

メッセージの登録数を返答するときの反応を指定します。
formatで指定できるものと同じです。#(count)は登録数になります。

count-format:反応は#(count)件登録されています。

反応する人のマスク。

mask:* *!*@*

plum: mask: *!*@*

反応が追加されたときの反応を指定します。
formatで指定できるものと同じです。#(message)は追加されたメッセージになります。

added-format:#(name|nick.now): #(key) に対する反応 #(message) を追加しました。

メッセージが削除されたときの反応を指定します。
formatで指定できるものと同じです。#(message)は削除されたメッセージになります。

removed-format:#(name|nick.now): #(key) #(message;に対する反応 %s|;) を #(count) 件削除しました。

発言に反応する確率を指定します。百分率です。省略された場合は100と見做されます。

rate:100

メッセージを追加するキーワードを指定します。
ここで指定したキーワードを発言すると、新しいメッセージを追加します。
実際の追加方法は「 <追加するメッセージ>」です。

add:反応追加

メッセージを削除するキーワードを指定します。
実際の削除方法は「 <削除するキーワード>」です。

remove:反応削除

addとremoveを許可する人。省略された場合は「* *!*@*」と見做します。

modifier:* *!*@*

正規表現拡張を許可するか。省略された場合は禁止します。

use-re:1

Auto::Response

データファイルの指定にしたがって反応する。

大量の反応データを定義するのに向いています。

データファイルのフォーマット
| pattern: re:^(こん(に)?ちは)
| rate: 90
| mask: * *!*@*
| #plum: mask: *!*@*
| response: こんにちは。
| response: いらっしゃいませ。
|
| pattern: おやすみ
| rate: 20
| response: おやすみなさい。
patternは一行しか書けません。(手抜き
maskもrateも省略できます。省略した場合はmaskは全員、rateは100となります。
responseは複数書いておけばランダムに選択されます。

データファイル

file:response.txt

文字コード

charset:euc

使用を許可する人&チャンネルのマスク。

mask:* *!*@*

plum: mask: +*!*@*