Skype PHP Bot

↑これの続き

github で複数ファイルを一度に pull request する仕方がよく分からないので、
とりあえずここで叫んでみるテスト。

Skype API wrapper class に付属する plug-in の log を使うと
以下のようなファイルが出来ますが、このファイルが当初よく
分かりませんでした。

yoya_awm-ffxxxxxxxxxxxx1d.20081205.log
yoya_bot-yoya_awm-27xxxxxxxxxxxx05.20090506.log
yoya_awm-yoya_bot-e1xxxxxxxxxxxx9d.20090506.log
※ 念の為、x は隠してます。

ぱっと見、発言したユーザと一致していたので、ユーザ毎に
切り出しているのかと勘違いしたのですが、よくよく見ると他の人の
発言も入っていて、コードを読みつつ以下のように理解しました。

 - グループチャットで一人で作成した場合は
   => -..log
 - 特定の人にチャットしたり、そこに人を呼んで増やしたりした場合は、
   => --..log

これを ..log にすれば、
ピンと来るかなと以下のように改造してみました。

改造内容

まずは呼び出し側。
- => ファイル名の対応表を作って、
botインスタンスにパラメータとして渡す。

$files = array(
    'yoya_awm-yoya_bot-c7xxxxxxxxxxxxd2' => 'yoya_bot',
);

$bot->loadPlugin(
    "log",
    array(
        'dir'               => '/home/yoya/log/skype',
        'files'             => $files,
        'chat_topic_filter' => null,
        'chat_id_filter'    => null,
        ));

でもって、Skype/Bot/Plugin/Log.php は以下のように処理。
__construct でパラメータチェックしつつ受け取る。

        $this->files = $parameter['files'];
    } else {
        $this->files = array();
    }
_append で $chat_id からファイル名を作る所に細工。
    if (isset($this->files[$chat_id])) {
        $chat_id = $this->files[$chat_id];
    }

▼実行結果:

% cat yoya_bot.20090805.log
2009/08/05 00:00:26     [SAID]  よや(yoya_awm)  うーうー

\(^O^)/ どうでしょうね。> 誰と無く。

↑一応、改変した Log.php を晒してみたり…