IRCbot Consoleは、ブラウザから操作できる多機能なIRCボットです。
下記のような機能を持っています。
メッセージ送信のスクリプトとしてJavaScript(Rhino)を使えるようにしており、他のWEBサービスを組み合わせることによって、さまざまな使い方ができます。
インストールも簡単で、Javaさえ入っていれば、ダウンロードしてきたファイルを解凍し、実行するだけになります。
なお、Tomcatなどのサーブレットコンテナを既に使っている場合には、ダウンロードしたwarファイルをデプロイして使うこともできます。(ダウンロードファイルにはJettyが含まれており、サーブレットコンテナを別途インストールすることなく使えるようにしています)
Javaの実行環境(JRE1.5以上)が必要です。
Javaが実行できる環境であれば、OSは特に関係なく動作すると思います。(Windows XP、Mac OS Xで動作確認済み)
最新バージョンは下記URLより取得できます。
PircBotに依存しているため、PircBotと同じくGNU General Public License v2.0となります。
ダウンロードしたファイル(ircbot_console-X.X.zip)を解凍します。
Windowsの場合はstart.bat、Linuxの場合はstart.shを実行することにより、起動できます。
Tomcatなどのサーブレットコンテナにデプロイして使用する場合には、ircbot.war をサーブレットコンテナにデプロイします。
(Tomcat6では動作確認済み。Servlet API 2.5以上のサーブレットコンテナであれば、動作すると思います。)
下記URLにアクセスし、IRCbot Consoleの画面が表示されれば、起動成功です。(URLは動作させているサーブレットコンテナのポート番号によって異なる場合がありますので、その際には読み替えてください)
Javaの実行環境(JRE1.5以上)が必要となりますので、インストールされていない場合には、インストールしてから実行してください。
起動時に設定内容やログ保存用のディレクトリとして、実行ユーザのホームディレクトリ配下に .ircbot というディレクトリが作成されます。
このディレクトリの作成場所を変えたい場合には、Java実行時の環境変数として ircbot.home に指定します。(-Dircbot.home="ディレクトリ名")
例:startup.bat上で指定した場合
java -Dircbot.home="C:\ircbot" -classpath %IRCBOT_CLASSPATH% JettyRun ircbot.war
IRCサーバへの接続情報を入力し、「接続情報更新」ボタンを押下します。
IRCサーバにパスワードが設定されていない場合、「パスワード」は未入力のままでOKです。
※文字コードは、日本のIRCだと、"UTF-8"ではなく、"ISO-2022-JP"の場合も多いので、ご注意ください。
接続状態が、「接続中」となれば、IRCサーバへの接続が完了です。
JOINするチャンネルを設定します。
チャンネル名を入力し、「追加」ボタンを押下することにより、チャンネルが追加されます。
「設定」のリンクから、チャンネルの各種設定画面へ遷移します。
一定周期でRSSフィードを参照し、新着エントリをメッセージとして送信できます。
「追加」ボタンを押下すると、入力用のフォームが表示されます。
RSSフィード、周期を設定します。
メッセージフォーマットには、JavaScript(Rhino)でスクリプトを書くことができます。(入力無しの場合、デフォルトのフォーマット)
メッセージフォーマットは実行結果がそのままIRCに送信されます。(実行結果がnull、undefinedの場合には、何も送信されません)
タイトル、URLだけを指定する場合には、下記のようになります。
_title + " " + _link
スクリプト上で、下記の変数にアクセスできます。
_channel | チャンネル名を表す文字列。 |
---|---|
_ircBot | IRCボットオブジェクト。下記のクラスのpublicなメソッドを呼び出せます。 |
_title | RSSエントリのタイトル |
_link | RSSエントリのリンク(URL) |
_description | RSSエントリの概要 |
_updatedDate | RSSエントリの更新日時 |
_publishedDate | RSSエントリの公開日時 |
決められた周期または時刻に、JavaScript(Rhino)を実行できます。
「追加」ボタンを押下すると、入力用のフォームが表示されます。
一定周期(分)での実行か、時刻指定での実行かを選びます。
スクリプトを入力します。「テスト実行」ボタン押下で、その場で実行することができます。(実行結果はIRCに流れます)
実行結果がそのままIRCに送信されます。(実行結果がnull、undefinedの場合には、何も送信されません)
文字列だけを書いておけば、その文字列がそのままIRCに流れることになります。
"おはようございます。"
スクリプト上で、下記の変数にアクセスできます。
_channel | チャンネル名を表す文字列。 |
---|---|
_ircBot | IRCボットオブジェクト。下記のクラスのpublicなメソッドを呼び出せます。 |
_ircBot を使って、onozatyに対してプライベートメッセージを送るスクリプトは下記のように書きます。
_ircBot.sendMessage( "onozaty", // 送信先(nicknameまたはチャンネル名) "プライベートメッセージです。" // メッセージ );
// チャンネルにJOINしているユーザ一覧を取得 var users = _ircBot.getUsers(_channel); // 乱数を使って、ユーザを1人ピックアップ var todayLeader = users[Math.floor(Math.random() * users.length)]; // メッセージ送信 todayLeader.getNick() + "さんが選ばれました。";
// livedoor Weather Web Service を使用 // (http://weather.livedoor.com/weather_hacks/webservice.html) var text = readUrl('http://weather.livedoor.com/forecast/webservice/rest/v1?city=63&day=today'); // <?xml version=...?>のパースをサポートしていないので // https://developer.mozilla.org/ja/E4X text = text.replace(/^<\?xml\s+version\s*=\s*(["'])[^\1]+\1[^?]*\?>\s*/, ""); // E4Xで参照 var xml = new XML(text); // タイトルと天気をメッセージとして送信 _ircBot.sendMessage(_channel, xml.title); _ircBot.sendMessage(_channel, xml.telop);
メッセージがIRCに流れたタイミングで、JavaScript(Rhino)を実行できます。
「追加」ボタンを押下すると、入力用のフォームが表示されます。
スクリプトを入力します。「テスト実行」ボタン押下で、入力ダイアログが表示されます。そこにメッセージを入力することにより、その場で実行することができます。(実行結果はIRCに流れます)
実行結果がそのままIRCに送信されます。(実行結果がnull、undefinedの場合には、何も送信されません)
スクリプト上で、下記の変数にアクセスできます。
_channel | チャンネル名を表す文字列。 |
---|---|
_sender | メッセージの送信者を表す文字列。 |
_message | 送信メッセージ内容の文字列。 |
_ircBot | IRCボットオブジェクト。下記のクラスのpublicなメソッドを呼び出せます。 |
メッセージの先頭に"@ircbot" と含まれていた場合、そのメッセージに返信するスクリプトは下記のように書きます。
if (_message.indexOf('@ircbot') == 0) { // メッセージの先頭に@ircbotが含まれる場合 _ircBot.sendMessage( _channel, _sender + 'さんの発言:' + _message ); }
var prefix = '@ircbot'; if (_message.indexOf(prefix) == 0) { var command = _message.substr(prefix.length).replace(/(^\s+)|(\s+$)/g, ''); switch(command) { case '天気': case '今日の天気': showWeather('today'); break; case '明日の天気': showWeather('tomorrow'); break; case 'だれ?': case '誰?': case 'dare?': choiceUser(); break; case '名言': showMeigen(); break; } } function showWeather(day) { // livedoor Weather Web Service を使用 // (http://weather.livedoor.com/weather_hacks/webservice.html) var text = readUrl('http://weather.livedoor.com/forecast/webservice/rest/v1?city=63&day=' + day); // <?xml version=...?>のパースをサポートしていないので // https://developer.mozilla.org/ja/E4X text = text.replace(/^<\?xml\s+version\s*=\s*(["'])[^\1]+\1[^?]*\?>\s*/, ""); // E4Xで参照 var xml = new XML(text); // タイトルと天気をメッセージとして送信 _ircBot.sendMessage(_channel, xml.title + ' : ' + xml.telop); } function choiceUser() { // チャンネルにJOINしているユーザ一覧を取得 var users = _ircBot.getUsers(_channel); // 乱数を使って、ユーザを1人ピックアップ var todayLeader = users[Math.floor(Math.random() * users.length)]; // メッセージ送信 _ircBot.sendMessage(_channel, todayLeader.getNick() + 'さんに決まりました'); } function showMeigen() { // 言霊.in を使用 // (http://www.kotodama.in/) var text = readUrl('http://www.kotodama.in/api/quoteOfDay'); var result = JSON.parse(text); // 名言を表示 _ircBot.sendMessage(_channel, result.quote + ' by ' + result.author); }
HTTPリクエストとして、チャンネル名とメッセージを送信することにより、IRCにメッセージを送信できます。
この機能を有効とするためには、トップページのオプションにて、「HTTPリクエストによるメッセージ送信」の「許可する」をチェックします。
URLは下記のようになります。
パラメータとして、channelにチャンネル名、messageに送信メッセージ内容を指定します。(UTF-8でエンコード)
チャンネルが「#test」、メッセージに「こんにちは!」とする際のURLは下記のようになります。
チャンネル情報の「ログ」のリンクから、ログが参照できます。
ver 1.6 (2013/02/02)
ver 1.5 (2013/01/20)
ver 1.4 (2011/10/16)
ver 1.3 (2011/06/11)
ver 1.2 (2010/11/03)
ver 1.0 (2010/04/17)
お問い合わせ、コメント等は下記Blogまたは、Contact からお願いします。