まなボット Ver2.85  マニュアル
2002/01/13改訂 By P.D.S.

このスクリプトはIRCクライアントソフト「CHOCOA Ver1.0β」以降にサポートされた
スクリプト機能を使用して作った「特定語句反応プログラム」(通称:ボット、人工無脳)です。

このボットの使用用途は主に遊びです。
@管理機能も付けてありますが
24時間常駐を考えているならば
特殊な環境がそろっていないと無理です。

一般的な24時間常駐の方法は
madokaやplumなどをIRC常駐プログラムの
常駐を許可しているサーバに置かせてもらう方法です。
このことについては自分で調べて下さい。

このセットには反応語句がほとんど登録されていません。
自分で登録してからご使用ください。

このスクリプトを使用したことにより何が起ころうとも
作者はいっさいの責任をとりません(とれません)
各自の責任で使用してください。

もし、不具合等を見つけた場合は作者に(こっそり)連絡してください。
出来る限りなおします。

質問等はメールか掲示板に書き込むかIRC「#裏山の森」で私を捕まえてしてください。

無断転載&配布厳禁。

改造はしてもらってかまいませんが
バージョン表示部分の作者表示だけは絶対に変えないでください。

連絡先
IRCニック:PDS-??(??は状況によって色々変わっています)
ボット常駐&サポートチャンネル:#裏山の森
HP:http://shiraizaka.jp/urayama/
E-MAIL:pds@shiraizaka.jp/urayama


0.動作環境

このスクリプトはCHOCOA 1.0f3Rで動作確認しています。
CHOCOAのバージョンが古いと
スクリプトをサポートしてなかったり
動作しない場合がありますので気をつけて下さい。


1.インストール

解凍すると
readme.txt
botフォルダー
が出来ます。
botフォルダーをそのままCHOCOAのあるフォルダーに入れてください。
場所を間違えると正常に作動しません。

CHOCOAで「設定」「複数サーバの登録」でボット用の設定を作ってください。
次にボット用の設定でIRCサーバに接続してみます。
接続がうまくいったら「設定」「スクリプトの設定」で「追加」を選びmanamana.csfを選択します。
リストに「まなボット」と加わりますので「OK」を押してください。
次にどこかにボット実験用チャンネルを作ってそこに自分とボットの両方joinさせてください。

自分の設定の方で「まなまな」と呼びかけてください。
は……はい……(ニック)さん、なんでしょう?
(ニック)さん、わたしのこと呼びましたか?
(ニック)さん、呼びましたか?
のどれかを答えた場合は正常に動いています。
ここで反応しない場合は
botフォルダーの場所やまなボットが組み込まれているかどうか確認して下さい。


2.反応する名前を設定する

次に反応する名前を登録します。

systemフォルダーの中にbotname.txtがあります。
デフォルトでは「まなまな」「真奈真奈」が登録されています。
これを変更すればOKです。

個人的によく使う名前などはさけた方がいいと思います。ちょっとひねった方がいいです。
そうしないと通常会話にまで反応してじゃまくさくなってしまうからです。
実際いくつかそういうボットを見ています。

以後、ここで設定した名前を含む発言をボットに呼びかけると表現します。


3.反応語句と返答語句を登録する

ボットが呼びかけられたときの反応を登録します。

まずは反応語句を考えます。ここでは「好き」という単語を含む呼びかけに
ほ……本当ですか?
……わ、わたしも……です……(ぽっ)
のどちらかの反応を返すように登録する過程を例に取って書いてみます。

まずはbotフォルダー内のmassageフォルダーの中に
他のファイルとぶつからない名前(ここではsuki.txtとして説明ています)で
テキストファイルを作成します。
suki.txtの中身は

ほ……本当ですか?
……わ、わたしも……です……(ぽっ)

のように喋らせたい単語を書いておきます。
ランダムで違うことを喋らせたい場合は上記のように
複数行に渡って登録して下さい。
行単位でランダムで選択されます。

次にbotフォルダー内のchoice.txtをテキストエディタで開きます。
chocice.txt

好き===suki.txt

を追加します。
「===」は半角です。全角だとエラーが出ます。

これで登録は完了です。

次は単語がちゃんと認識されているか確認します。
まなまな登録数
と呼びかけて下さい。
好き(登録した行数)‥‥‥‥‥の合計(登録した単語数)単語です。
と登録した単語が表示されればOKです。

次にその単語がちゃんと動くかどうか確認します。
「まなまな好きだよ」と呼びかけて下さい。
ほ……本当ですか?
……わ、わたしも……です……(ぽっ)
と反応してくれれば登録は成功です。

もし、エラーが出たり
は……はい……(ニック)さん、なんでしょう?
(ニック)さん、わたしのこと呼びましたか?
(ニック)さん、呼びましたか?

だった場合は登録に失敗しています。
choice.txtでファイル指定が間違えていないか
massageフォルダー内のsuki.txtを確認してください。
12.Q&A にここで起きる問題をまとめてあります。

4.作りたいキャラに合わせて修正

Ver2.80より語句を外のファイルに置くようにしました。
systemフォルダー内のファイルがそうです。
使っているうちに「このファイルはこの反応の物か」
とわかると思うので自分で好きなように書き換えて下さい。
外部に出せなかった物はmanamana.csf内を直接書き換えてください。

この時、内部コマンド(5.内部コマンド参照)は変えないでください。トラブルの原因になります。
(変えても大丈夫なモノもありますけど‥‥)


5.内部コマンド

まなボットに特定の仕事をやらせるときに使う単語です。以下にまとめておきます。

まなまな登録数

このコマンドで通常反応する語句を
反応語句(返答パターン数)
で教えてくれます。
表示するのに時間がかかりますが勘弁してください。
(こうしないとサーバから落とされてしまうためです)

このコマンドはプライベート登録してある人にだけ有効です。

まなまな今度から「(呼んでほしい言葉)」と呼んで

このコマンドでボットに愛称を登録します。
愛称を登録すると次からボットが呼ぶ名前はニックではなく愛称に変わります。

この時、愛称はaisyou.txtに登録されます。
形式は
(IRCニック)===(愛称)
という形です。

まなまななるとちょうだい

「自動なると配り」をONにしているときに使えます。
このコマンドはnaruto.txtにニックとホストを登録してなるとを配るように登録している人にだけ有効です。
詳しくは10.自動なるたー登録方法を参照して下さい

まなまな全なると

ボットが入っている全チャンネルをチェックして
実行した人がいた場合になるとを渡します。
当然ニックとホストの登録が必要です。

まなまなバージョン

このコマンドでバージョンと反応する単語の登録数を教えてくれます。

まなまな伝言お願い「(相手のニック)」さんに「(伝言)」と

このコマンドで(相手のニック)に伝言を残せます。
もし、誰にも伝言を見られたくないのならプライベート(個人宛で)で呼びかけてください。
ここで指定する(相手のニック)は絶対に間違えないでください。
間違えると受信する事が出来ません。
この伝言はデフォルト設定では2週間前後で自動的に削除されます。

まなまな伝言ある?
まなまな伝言教えて

このコマンドで自分宛の伝言を見ることが出来ます。
もし、他の人に見られたくない場合はプライベートで呼びかけてください。
このコマンドはニックを見てますので一文字でも違うと伝言を見ることが出来ません。


6.いつどこスクリプト

これは
(いつ)(どこで)(だれが)(何をした)みたいです‥‥(得点)
という文章を登録してある語句から勝手に作る命令です。
無茶苦茶な単語も入っているので
まともな文章が出来る可能性は低いです。
ちなみに得点には根拠は何もありません(爆)

まなまないつどこで作動します。

まなまないつどこ登録、いつ:○○○○
まなまないつどこ登録、どこ:○○○○
まなまないつどこ登録、だれ:○○○○
まなまないつどこ登録、どうした:○○○○

このコマンドでそれぞれのパーツを追加します。
「いつ」の項目は
itsudoko\itsu.txt
「どこ」は
itsudoko\doko.txt
「だれ」は
itsudoko\dare.txt
「どうした」は
itsudoko\doushita.txt
に登録します。
もし、変なモノが登録されたら自分で消してください(苦笑)

接続詞(に、で、が等)をつけて登録してください。文がうまく繋がらなくなります。
例:まなまないつどこ登録 だれ:GunGamerP.D.S.が

まなまないつどこいくつ

これで上記のいつどこのそれぞれいくつ単語が登録されているか聞けます。


付属の返答ファイルは1998/11/27現在の私のモノです。
変な語句がけっこう登録されていますのでお気に召さなければ
作り直して下さい(苦笑)

7.応用編

ここでは知らなくても差し支えはないけど知っていると得をする機能を書いておきます。

プライベート反応

これは登録した人だけ違う反応をさせる方法です。
おもに「これはオレのボットだから独り占めしたいんじゃ」というときに使います。(笑)

設定の仕方は、まずはprivate.txtに自分のニックを登録します。
次に返答語句を元のファイル名とは違うファイル名で作ります。作り方は普通の登録と一緒です。ここではsuki2.txtというファイル名で作ったことにします。

作った返答語句を登録します。登録の仕方は
好き===suki.txt===suki2.txt
これで登録は終了です。
private.txtに登録してない人はsuki.txtから返答語句を選んで、登録している人はsuki2.txtから返答語句を選びます。

ちなみに「登録数」で出てくる数字は普通の反応で使うファイル(ここではsuki.txt)を見ています。

* (ワイルドカード)

aisyou.txtに登録するニックにはワイルドカードが使えます。

MS-DOSの知識がある人ならわかると思いますが
「*」は、「どの文字でも、何文字でも」と言う意味です。

例:
PDS-*===GunGamerP.D.S.

こうすることによりニックが
「PDS-Ma」でも「PDS-Away」でも識別するようになります。
状態や発言しているチャンネルをニックで表している人に使うと便利です。

ワイルドカード指定はaisyou.txtを直接書き換えないと出来ません。

他にもprivate.txtnaruto.txtでも使用出来ます。

$name$ $rnd*-*$

massageフォルダー内と
systemフォルダー内で使える変数です。

$name$は呼びかけた人の愛称に置き換えます。
$name$さんのこと‥‥好きです‥‥(ぽっ)
と返答語句に登録すると
(愛称)さんのこと‥‥好きです‥‥(ぽっ)
となります。

$rnd**-**$は乱数を発生させます。
あなたとの相性は$rnd0-100$%みたいです。
と返答語句に登録すると
あなたとの相性は(0〜100の間の正数)%みたいです。
と答えてくれます。

Lock

aisyou.txt内で使う変数です。

この変数を指定した人は愛称変更出来なくなります。
おもに変な愛称を登録した人に使います(笑)
PDS-Ma===GunGamerP.D.S.===Lock
という風に使います。

愛称登録させたくない場合は
PDS-Ma======Lock
と言う風に使います。

この機能もaisyou.txtを直接書き換えないと使えません。


8.設定変数なんか

このスクリプトはタイマーポート312〜317を使っています。
改造してタイマーを追加するときはぶつからないように気を付けて下さい。

注意:デフォルト設定でも動きますので
もし説明がわからない場合は絶対に設定を変えないでください。

「いつどこ登録や愛称登録での最大文字数 %itsumax」(デフォルト:40)
いつどこ登録や愛称登録で登録する文字数を制限するものです。
ちなみに半角計算です。

「登録宇数などの表示用タイマー変数 %byou」(デフォルト:2)

これはボットに登録数を聞いたときに
表示するスピードを(秒/行)の値で設定しています。
もし、登録数をボットに聞いたときにIRCサーバから
ERROR: :Closing Link: *****[*****.*****.*****] (Excess Flood)
といわれて落とされてしまう場合は、この値を大きくしてください。それで防げるはずです。

「なると配りスイッチ変数 %naruter」(デフォルト:0)

この設定はボットが
なると(チャンネルオペレータ権限。@のマークから由来しています)
を持っているときになるとを配るかどうかを設定します。
配ってもいいときは「1」を配らないときは「0」を指定してください。

「なると復活ルーチンスイッチ %narufukka」(デフォルト:0)

これはなると復活ルーチンのスイッチです。
使うときは1を、使わないときは0を指定して下さい。
(詳しくは9.なると復活ルーチンを参照)

「なると確認秒数 %zench」(デフォルト:900)

これはなると復活ルーチンを働かせる間隔です。
ここで指定した値(秒)毎になると復活ルーチンを働かせます。

「なると取得のために落ちたときにJOINし直すまでの秒数 %jbyou」(デフォルト:15)

これはなると復活ルーチンが働いた時にPARTしたチャンネルにJOINし直すまでの時間(秒)です。
出来るだけ秒数はすくない方がいいのですが、ちゃんとJOINしてくれないみたいです。
秒数設定全般に言えることだけど回線が太ければもっと小さい値でも大丈夫だと思います。

「JOIN時に働く自動なるたーの配布するまでの秒数 %naruhai」(デフォルト:3)
これはなると配りに登録してある人がJOINしてきたときに配るまでの秒数を指定しています。(詳しくは9.なると復活ルーチンを参照)
「自動なるたーチェック回数 %hostcheck」(デフォルト:10)
自動なるたー作動時にホストが検出できない場合に
何回ホスト検出をやり直すかを指定します。
この回数を越えてしまった場合は
「ホストが検出できない」と言うエラーメッセージが出ます。

「留守録を削除するまでの日数 %rusudel」(デフォルト:15)

留守録を削除するまでの日数を指定します。
最大で3日ぐらい日付が前後しますので気を付けて下さい(←ここら辺がいい加減)
ホントは正確に出来るんだけど判定ルーチンがややっこしくなるから
やめちゃったのよ(←ここら辺は言い訳)


9.なると復活ルーチン

Ver2.41以降から内蔵したルーチンです。
変数 %zench 秒毎にすべてのチャンネルに対してルーチンを働かせます。
PART、KICK、QUITを検出しても作動します。
作動するとJOINしているチャンネルすべての人数を調べて
自分しかいない時に自分のなるとをチェックして
なるとがない場合は自分をそのチャンネルからPARTし
変数 %jbyou 秒後にまたJOINし直します。

しかし
「TOPICがリセットされる」
(JOIN時にTOPICを変更するスクリプトを別途作成すれば回避できます)
という問題が発生します。

注意:+r属性などでなるとが取得出来ない場合は
永久に取得落ちを繰り返すおそれがありますのでこの機能を止めてください。

注意2:サーバダウン、ネットスプリット時などはチャンネルにjoin出来なくなることがあります。
その時はうまく働きませんのでご了承下さい。
定期的にjoinしているチャンネルを検査するスクリプトを導入することをお勧めします。
P.D.S.はすでに開発済で使用しておりますのでご相談下さい。

10.自動なるたー登録方法

自動なるたーはとても便利な機能ですが
「なりすまし」によってなるとを取得して悪用することも出来ます。
Ver2.60より自動なるたーを
ホスト(ユーザーがどこから接続しているか)
も見るように改良しました。
従って「なりすまし」を極力防ぐことが出来ます。
ここで説明している意味が分からない場合は
絶対に自動なるたーを切って置いて下さい。

何が起きても作者はいっさい責任を負いません(負えません)
ここで使う式は
(ニック)===(ホスト名)===[(チャンネル名)]
です。
チャンネル名はそのままチャンネル名が入ります。
チャンネル名で % を使っている場合は正しい形の #:*.jp に戻して登録して下さい。
全てのチャンネルを指定したい場合は [allchannel] と指定して下さい。
例:
PDS-Ma===*===[allchannel]
PDS-Ma===*===[#裏山の森][#ぼっと実験場:*.jp]
ホスト名の調べ方は
/whois (ニック)
もしくはCHOCOAの右に表示されている
ユーザリストのニックをダブルクリックすると調べられます。
上記を実行すると *console* ウインドウに

PDS-Ma is ~PDS (GunGamerP.D.S.) at ppp06-434.din.or.jp
channels: #裏山の森 #杉原真奈美 #センチメンタルグラフティ
on via server irc.tokyo.wide.ad.jp (WIDE Project Tokyo NOC, Japan)

と言う風に表示されます。
上記の赤い字がホスト名です。
この部分を参考に登録します。
登録時に注意しなければならないのは
「プロバイダー経由だと接続のたびにホスト名が違う」と言うことです。普通は
(アクセスポイントといくつ目の回線).(プロバイダーのドメイン)
となっています。
つまり上記の例でいくと
ppp06-434の部分は接続のたびに変わると言うことです。
この常に変わってしまうところをワイルドカード(*)で指定します。
つま上記の例で書くと
PDS-Ma===*.din.or.jp===[allchannel]
となります。
これではまだ不安なのでどこのAPからアクセスしているかも制限しましょう。
ホスト名には大体何処のAP(アクセスポイント)を使っているかの情報も入っています。
このAPの情報は同じAPを使っている限りは変わりませんので
どれがAPの情報なのかをうまく見極めてそれをうまく指定して下さい。
上記の例だとppp06-434の内のppp06-がAP情報なので以下のように指定します。
PDS-Ma===ppp06-*.din.or.jp===[allchannel]
こうすればかなり制限をかけられます。

11.付属ファイルの詳細

readme.txt----制作者の連絡先など

\bot内部

manamana.csf-----ボット本体

aisyou.txt-----愛称登録ファイル。この中に愛称が登録されています。

choice.txt-----反応語句登録ファイル。この中には「○○」と呼びかけられたときは\massage内の「○○.txt」の中から返答を選びなさいということを記録しています。あんまり増やすと反応が遅くなります。

naruto.txt-----なるとを配る人のリストです。
narutemp.txt-----全チャンネルなるたー用のTEMP(テンポラリーファイル:一時ファイルとも言う)です。通常は空のファイルです。

private.txt-----プライベート反応するニックを登録するファイルです。詳しくは「7.応用編」のプライベート反応を参照してください。

rusuroku.txt-----留守録登録ファイル。「まなまな伝言」命令で伝言を残すとこのファイルに残しておきます。

rejoin.txt-----なると復活ルーチン用TEMPファイル。普通時は空のファイルです。

\massage内部-----この中には返答語句を入れておきます。
詳しくは「3.反応語句と返答語句を登録する」を参照してください。

\itsudoko内部

itsudoko.csf-----いつどこ部分のソースです。これの改良型をボットの中に組み込んであります。ボット動作には必要ありませんのでスクリプト制作の資料などに使って下さい。

itsu.txt
doko.txt
dare.txt
doushita.txt
-----いつどこで文章を作るときにそれぞれのファイルから一行ずつ選んでくっつけています。登録するとそれぞれのファイル内に上から保存されていきます。

\system内部

ここはボットのデフォルト反応語句が入っています。
これを書き換えることによってボットのデフォルト反応パターンを変えたり増やしたり出来ます。
$name$変数が使えます

12.Q&A

Q:反応語句を複数行に出来ないの?
反応パターンを拾い出す部分に大幅な改造が必要になります。
あと反応語句検索のスピードも遅くなると思われます。

ホントは作者の自主規制で
作り始めから「通常反応は1行だけ表示させる」というのを守っています。
何行もだらだらと表示させるとうざったく感じる人がいる上ので配慮です。
Q:伝言機能で相手の名前に愛称を入れたら相手に届かないんだけど‥‥
相手のニックのみ対応しています。
ホントは愛称にも反応するようにしようと思ってましたが
めんどくさいのに気が付いたのでやめました(爆)
Q:登録したのに反応がnullと表示されて登録した内容と異なるんだけど?
これは反応語句を登録したファイルに問題があります。
まず反応語句が見つかったら
反応内容を登録したファイルの行数を見にいって
その行数で乱数を発生させてランダムに反応するように作ってあります。
CHOCOAスクリプトは改行コードを見て
そのファイルが何行あるかを見ているようです。
かならず行の最後に改行コードを入れて下さい。

正しい例:
わ、わたしも大好きです‥‥(ぽっ)←

間違えた例:
わ、わたしも大好きです‥‥(ぽっ)

間違えた例2:
わ、わたしも大好きです‥‥(ぽっ)←




(←=改行コードね)
間違えた例だとこのテキストファイルは0行と判断してしまいます。
逆に間違えた例2だと4行あると判断してしまいます。
そのためnullと表示されてしまいます。
語句の最後にだけ改行を入れて下さい。
特にメモ帳など改行コードが見えない
テキストエディターの場合は気を付けて下さい。
Q:なんか反応しないときがあるんだけど?
Ver2.81よりアタック対策のため
一回反応してから2秒間は呼びかけに対して反応しないようにしました。
もし「2秒じゃちょっと遅いから1秒にしたい」と言う人は
/main より少し下にある
/timer317 1 2 /attack を
/timer317 1 1 /attack にして下さい。単位は秒です。

13.更新履歴

Ver2.85
Ver2.84 Ver2.83 Ver2.82 Ver2.81 Ver2.80 Ver2.72(未公開) Ver2.71 Ver2.70 Ver2.66(非公開) Ver2.65(非公開?) Ver2.64 Ver2.63(未公開) Ver2.62(未公開) Ver2.61(未公開) Ver2.60(未公開) Ver2.50 Ver2.43 Ver2.42 Ver2.41 Ver2.40 Ver2.30 Ver2.20 Ver2.13 Ver2.12 Ver2.11 Ver2.10 Ver2.01 Ver2.00 Ver2.00以前