ASECOのChatBotで日本語を使えるようにする
設定ファイル chatbot.xml で日本語(マルチバイト文字)を使うと文字化けしてしまうのをナントカしてみる(;´ω`)
ASECOに付いてくるXMLパーサーが問題なのは判ってるが、 これを弄ると影響が大きそうなので plugin.rasp_chatbot.php 内部で独自?にXMLをパースすることにする。
plugin/rasp/pugin.rasp_chatbot.php 23行目辺り?
function loadSettings()
{
$settings = $this->Aseco->xml_parser->parseXML('chatbot.xml');
$settings = $settings['SETTINGS'];
foreach ($settings as $key => $value)
{
if ( $key == 'WATCHFOR' )
{
continue;
}
unset($settings[$key]);
$settings[$key] = $value[0];
}
/* 赤の部分を削除 or コメントアウト
$this->textmsgs = array();
foreach ($settings['WATCHFOR'][0]['TEXT'] as $val)
{
$t1 = split('\|', $val);
$key = $t1[0];
unset($t1[0]);
$this->textmsgs[$key] = $t1;
}
*/
$this->BotTag = $settings['BOTTAG'];
$this->kicktext = $settings['KICKTEXT'];
$this->bantext = $settings['BANTEXT'];
$this->kickwords = split(',', $settings['KICKWORDS']);
$this->banwords = split(',', $settings['BANWORDS']);
$this->blacklistwords = split(',', $settings['BLACKLISTWORDS']);
// 青の部分を追加
$xml = file_get_contents('chatbot.xml');
$settings = simplexml_load_string($xml);
$this->textmsgs = array();
foreach($settings->watchfor->text as $val)
{
$t1 = split('\|', $val);
$key = $t1[0];
unset($t1[0]);
$this->textmsgs[$key] = $t1;
}
}
ぶっちゃけ、CHAT応答の部分だけASECO付属のXMLパーサーの代わりにPHP5のSimpleXMLモジュールで読み直してるだけです(笑)
応答ワードはchatbot.xmlで<watchfor>~</watchfor>の間に「<text>監視ワード|応答ワード</text>」といった感じで書いていきます。
例)
<text>ぬるぽ|ガッ!!</text> <text>nurupo|$o$f00ガッ!!$z</text> <text>こんばんわ|いらっしゃいませ~~</text>
ちなみに<text>監視ワード|応答ワード1|応答ワード2|応答ワード3</text>って感じにかくと、応答ワード1~3がランダムに選ばれます
また、監視ワードは<watchfor>~</watchfor>の上から順番にチェックされHitした時点で終了してしまうので
<text>www| 何がおかしい!!(;´Д`)</text> <text>wwwww| $o笑いすぎ!$z(つД`)</text>こう書くと、「wwwww」でも上の「www」でHitしてしまい(wwwwwの)「$o笑いすぎ!$z(つД`)」は表示されません
なので、長い監視ワードほど上の方に書いた方がよさそうです
おっと、chatbot.xml は 文字コードUTF-8で保存してくださいね
