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で保存してくださいね