EasyBotter.phpを以下のように改造します。
例によってあまり賢い方法ではありません……。
class EasyBotter {
// 途中省略
// 文章を変換する
private function convertText($text, $reply = FALSE){
// 途中省略
// 追加ここから
// カウントダウン
if(strpos($text, "{countdown}") !== FALSE){
$text = $this->convertCountDown($text);
}
// 追加ここまで
// フッターを追加
$text .= $this->_footer;
return $text;
}
// カウントダウンを変換
private function convertCountDown($text) {
$return_text = "";
// デリミタで分割
$event_array = explode( ",", $text);
$target_array = explode("-", $event_array[0]);
// 目標の日付
$target_date = mktime(0, 0, 0, $target_array[1], $target_array[2], $target_array[0]);
// 今日の日付
$current_date = mktime(0, 0, 0, date("n"), date("j"), date("Y"));
// 差を計算
$interval = ($target_date - $current_date) / 86400;
// 日付を日本語表記に
$event_array[0] = date("Y年n月j日", $target_date);
if($interval > 0) {
// 日程より前
$return_text = $event_array[0].$event_array[1]."の".$event_array[2]."まで、あと".$interval.$event_array[4]."……。";
} elseif($interval == 0) {
// 当日
$return_text = "今日は".$event_array[1]."の".$event_array[2]."当日だ。任務了解。明朝より作戦行動に入る。";
} elseif($interval == -1) {
// 昨日
$return_text = $event_array[0].$event_array[1]."は、昨日".$event_array[2]."を完了している……任務、完了。";
} else {
// 2日前以前
$return_text = $event_array[0].$event_array[1]."は、".abs($interval).$event_array[4]."前に".$event_array[2]."を完了している……。";
}
return $return_text;
}
// 以降省略
}
パターンファイルやランダムファイルの方では、例えば以下のように記述しています。
2012-4-26,ガンダムエース6月号,発売,{countdown},日
2012-5-3,SUPER COMIC CITY 21 1日目,開催,{countdown},日