_ircBot を使って、onozatyに対してプライベートメッセージを送るスクリプトは下記のように書きます。
_ircBot.sendMessage(
"onozaty", // 送信先(nicknameまたはチャンネル名)
『プライベートメッセージです。』// メッセージ
);
サンプル1‥JOINしているユーザからランダムに一人を選んでその結果を送信
// チャンネルにJOINしているユーザ一覧を取得
var users = _ircBot.getUsers(_channel);
// 乱数を使って、ユーザを1人ピックアップ
var todayLeader = users[Math.floor(Math.random() * users.length)];
// メッセージ送信
todayLeader.getNick() + "さんが選ばれました。";
サンプル2‥WEBサービスから取得した情報を送信(Livedoor天気情報)
// 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の場合には、何も送信されません)
スクリプト上で、下記の変数にアクセスできます。
メッセージの先頭に"@ircbot" と含まれていた場合、そのメッセージに返信するスクリプトは下記のように書きます。
if (_message.indexOf('@ircbot') == 0) {
// メッセージの先頭に@ircbotが含まれる場合
_ircBot.sendMessage(
_channel,
_sender + 'さんの発言:' + _message
);
}
サンプル1‥天気予報、名言を返却する(XML、JSON形式のWEBサービス使用)
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リクエストによるメッセージ送信
HTTPリクエストとして、チャンネル名とメッセージを送信することにより、IRCにメッセージを送信できます。
この機能を有効とするためには、トップページのオプションにて、﹁HTTPリクエストによるメッセージ送信﹂の﹁許可する﹂をチェックします。
URLは下記のようになります。
●http://localhost:8080/ircbot/talk
パラメータとして、channelにチャンネル名、messageに送信メッセージ内容を指定します。(UTF-8でエンコード)
チャンネルが﹁#test﹂、メッセージに﹁こんにちは!﹂とする際のURLは下記のようになります。
●http://localhost:8080/ircbot/talk?channel=%23test&message=%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%EF%BC%81
ログの参照
チャンネル情報の﹁ログ﹂のリンクから、ログが参照できます。
変更履歴
ver 1.6 (2013/02/02)
●チャンネル名の大文字小文字を同一に扱うよう変更
ver 1.5 (2013/01/20)
●Apache HttpComponentsのjarファイルを追加
ver 1.4 (2011/10/16)
●チャンネルに対するパスワードに対応
ver 1.3 (2011/06/11)
●RSS通知でのBASIC認証対応
●RSS通知にてSSL証明書の認証スキップ(不正な証明書でもOKとする)
ver 1.2 (2010/11/03)
●RSS通知の周期およびフォーマット設定機能追加
ver 1.0 (2010/04/17)
●初回公開。
その他
お問い合わせ、コメント等は下記Blogまたは、Contact からお願いします。