NakajiJapan

餓鬼の超弩級日記


[limechat]private talkでログを残す

昔書いた記事の続きなんですがトーク中は勝手にログをファイルに保存させちゃうことにしました。

そうすると、相手のチャット名で話した内容が保存されるようになります。

// usage:
//      make directory C:\Program Files\LimeChat2\users\[user name]\scripts\files\privateChatLog
//      modify self variable to yourself

// IRCのユーザ名を記述
var self = "nakaji";

// ログ保存有無
var logFlg = true;

// トークログ用ディレクトリ
var dir = 'privateChatLog/';

function event::onTalkText(prefix, targetNick, text)
{
    // 自分以外からのユーザのみ処理
    if (prefix.nick != self) {
        showBalloon(prefix.nick, text); // バルーン
        playSound("type.wav");          // サウンド
        window.BlinkTitle();            // タイトルバーを点滅
    }

    if (logFlg == true) {
        date = getDateStr();

        // 相手が自分に発言してきたときはユーザを相手にして強制的に保存させる
        var user = targetNick;
        if (user == self) {
            user = prefix.nick;
        }
        str = "[" + date + "] " + prefix.nick + " > " + text;
        write_file_string( dir + user + '.log', str)
    }
}

//--------------------------------------------
// ファイル書き込み
//--------------------------------------------
function write_file_string( file_name, string  ){
    file = openFile( file_name , false );
    file.seekToEnd();
    file.writeLine(string); 

    file.close();
}

//--------------------------------------------
// 日付表示
//--------------------------------------------
function getDateStr() {
    date = new Date();
    yy = date.getYear();
    mm = date.getMonth() + 1;
    dd = date.getDate();

    hh = date.getHours();
    ii = date.getMinutes();
    ss = date.getSeconds();

    if (yy < 2000) { yy += 1900; }
    if (mm < 10) { mm = "0" + mm; }
    if (dd < 10) { dd = "0" + dd; }
    if (hh < 10) { hh = "0" + hh; }
    if (ii < 10) { ii = "0" + ii; }
    if (ss < 10) { ss = "0" + ss; }
    str = yy + "/" + mm + "/" + dd + " " + hh + ":" + ii + ":" + ss;
    return str;
}
1 Comment »

[limechat]プライベートトークで話しかけられたらキーワード無しでもお知らせしてくれるスクリプト

まず、
「設定」ー>「スクリプトの設定」ー>「スクリプトフォルダを開く」
でフォルダが表示されるのでそこに適当なファイルを作成します。notice_private_talk.jsでもいいでしょう。
そのファイルに以下のコード設定します。

function event::onTalkText(prefix, targetNick, text)
{
    // 自分以外からのユーザのみ処理
    if (prefix.nick != "nakaji") {
        showBalloon(prefix.nick, text); // バルーン
        playSound("type.wav");          // サウンド
        window.BlinkTitle();            // タイトルバーを点滅
    }
}

保存したらスクリプトの設定ウィンドウにあるファイル一覧にスクリプト名が表示されると思うのでそのファイル名の右側にあるノードに対して右クリックを押して「○」にします。
これでスクリプトが反映されたことになります。

ちなみに音はメッセンジャーの音をコピペしてつかっているのですがこれはお好みで設定してくださいな。
「C:\Program Files\Windows Live\Messenger」にあるはずです。

No Comments »

[limeChat]RSS情報を定期的に読み込んで新着情報のみをぶっこぬく


var targetChannel = "#project";
var fileName = "projectSvnRevision.txt";
//------------------------------------
// 実行時
//------------------------------------
var ret = 0;
function event::onLoad() {
    ret = setInterval(getRssForDev, 1000 * 60 * 10); // by 10 min
    //ret = setInterval(getRssForDev, 1000 * 6); // by 1 min( for test)
}

//------------------------------------
// 時刻チェック
//------------------------------------
function getRssForDev()
{
    var lines = load_textfile_array( fileName );
    var currentRevision = parseInt( lines[0] );
    var req = new ActiveXObject("Microsoft.XMLHTTP");
    if (req) {
        req.onreadystatechange = function() {
            if (req.readyState == 4) {
                var s = req.responseText;

                // 2回のタイトル削除
                s.match(/<title>(.*)<\/title>/);
                s = RegExp.rightContext;
                s.match(/<title>(.*)<\/title>/);
                s = RegExp.rightContext;

                for (var i=0; i<100; i++) {
                    if (!s.match(/<title>(.*)<\/title>/)) {
                        break;
                    }
                    s = RegExp.rightContext;
                    var title = RegExp.$1;

                    var ret = title.match(/(\d+):/);
                    //var revision = ret[0];
                    var revision = RegExp.$1;
                    //var revision = "";

                    s.match(/<dc:creator>(.*)<\/dc:creator>/);
                    s = RegExp.rightContext;
                    var creator = RegExp.$1;

                    s.match(/<link>(.*)<\/link>/);
                    s = RegExp.rightContext;
                    var link = RegExp.$1;

                    s.match(/<pubDate>(.*)<\/pubDate>/);
                    s = RegExp.rightContext;
                    var pubDate = RegExp.$1;

                    // RSSの最大値を保持しておく
                    if (i == 0) {
                        maxRevision = revision;
                    }

                    if (currentRevision < revision) {
                        send(targetChannel, "====================");
                        send(targetChannel, "TITLE   : " + title);
                        send(targetChannel, "CREATER : " + creator);
                        send(targetChannel, "PUBDATE : " + pubDate);
                        send(targetChannel, "LINK    : " + link);
                     }
                    else {
                        break;
                    }

                }

                write_file_string(fileName, maxRevision);
            }
        }
    }
    // ここに読み取りたいURIを記載
    var url = 'http://hogehoge.com/rss'; 

    req.open('get', url, true);
    req.send('');
}

//--------------------------------------------
// ファイル読み込み
//--------------------------------------------
function load_textfile_array( file_name  ){
  lines = new Array();
  d_file = openFile( file_name , true );
    while ( s = d_file.readLine() ) {
      lines[lines.length] = s;
    }
  d_file.close();
  return lines;
}

//--------------------------------------------
// ファイル書き込み
//--------------------------------------------
function write_file_string( file_name, string  ){
    file = openFile( file_name , false );
    file.write(string);
    file.truncate();
    file.close();
}

これでイけると思うよ。

No Comments »

limeChatで指定した時刻にメッセージを表示させる

これだと毎週のある時刻にメッセージを表示する

/*
 *
 * 指定した時間にイベントのお知らせメッセージを表示する
 * 
 */
var targetChannel = "#channel";

//------------------------------------
// 実行時
//------------------------------------
var ret = 0;
function event::onLoad() {
    ret = setInterval(checkDevMtg, 1000);
}

//------------------------------------
// 時刻チェック
//------------------------------------
function checkDevMtg(){
    var date = new Date();

    // 表示させる時刻(定期的に表示)
    var targetDay    = 2;    // 火曜日
    var targetHour   = 15
    var targetMinute = 50;
    var targetSecond = 0;

    var currentDay    = date.getDay();
    var currentHour   = date.getHours();
    var currentMinute = date.getMinutes();
    var currentSecond = date.getSeconds();

    if (targetDay    == currentDay &&
        targetHour   == currentHour &&
        targetMinute == currentMinute &&
        targetSecond == currentSecond
    ) {
        window.flashTitle();
        window.blinkTitle();
        send(targetChannel, "==============================================");
        send(targetChannel, "= ミーティングの時間ですよ!                       =");
        send(targetChannel, "==============================================");
    }
}

補足
以下のメソッドがうまくうごいてくれなかった。なんでだろう。
window.flashTitle();
window.blinkTitle();

No Comments »

limeChatで禁止用語チェック と 自分の関連するキーワードがあればバルーンと音を鳴らす。

ちゃっちープログラムだな。

音はメッセンジャーからぱっくんちょ。

var target_channel = "#bot_test";
var replyFlg = false;

function event::onChannelText(prefix, channel, text) {
    // 禁止用語
    if (text.match(/(卑猥|ピン子|ぴんこ)/)) {
        send(target_channel, "んっ!");
        showBalloon("ん!", "なんて卑猥!");
    }
    // キーワード
    else if (text.match(/(nakaji|Nakajijapan)/)) {
        showBalloon(channel, prefix.nick + " >> "  + text);
        playSound("type.wav");
    }
}
No Comments »