OAuthを使用したPHPでのbotの作り方6
前々回OAuthを使用したPHPでのbotの作り方4 - 付箋的メモ帳の続き
いよいよbotの動作の中核にです。
まずは中身のソース
<?php include("前回の解説ソース"); // Access Tokenの値 $access_token = "アクセストークン"; // Access Token Secretの値 $access_token_secret = "アクセストークンシークレット"; $traceFlg = false; if($traceFlg){ toLog("---------------\n"); } //xmlが帰ってくる $xml = access($access_token,$access_token_secret); $filename = "Rep-timestamp.txt"; $since = timestamp($filename); //リプライがある if($xml != null){ if($traceFlg){ toLog("リプライ"); } //リプライ件数分処理 foreach ($xml->status as $value ){ //$status_number = $value->id; //個別発言のステータスナンバー $str = $value->text; //発言内容 $screen_name = $value->user->screen_name; //発言者のtwitterID $name = $value->user->name; $time = strtotime($since); $linetime = strtotime($value->created_at); if($screen_name != "botのアカウント"){ if($linetime > $time){ $message = rep($name,$str); $message = shufullMsg($message); if($message != ""){ $message = "@".$screen_name." ".$message;//リプライ用メッセージ作成 toLog("\n".$str." ■ ".$message."\n"); post($access_token,$access_token_secret,$message); $retcnt++; } } } } toLog("処理終了\n"); } toLog("通常ポスト"); $filename = "TL-timestamp.txt"; $since=""; if(file_exists($filename)){//存在チェック $fp = fopen($filename,"r"); $since=fgets($fp); fclose($fp); } $since = strtotime($since); $h = strtotime("- 1 hours"); if($h > $since){ if($traceFlg){ toLog("\n時間比較 一時間前:前回のポスト時刻 ".$h.":".$since."\n"); } timestamp($filename); $msg = nomal(); $message = shufullMsg($msg); post($access_token,$access_token_secret,$message); if($traceFlg){ toLog("通常メッセージ:".$message."\n"); } } toLog("メソッド終了\n"); //通常 function nomal(){ $message= array(//基本のセット "セリフ1", "セリフ2" ); $now = getdate(); if(($now["wday"]==0) | ($now["wday"]==6)){//日曜か土曜日 if($now["hours"] == 12){ array_push($message, "セリフ1", "セリフ2" ); }else if($now["hours"] == 15){ array_push($message, "セリフ1", "セリフ2" ); } }else{ if($now["hours"] == 6){ array_push($message, "セリフ1", "セリフ2" ); }else if($now["hours"] == 12){ array_push($message, "セリフ1", "セリフ2" ); }else if($now["hours"] == 15){ array_push($message, "セリフ1", "セリフ2" ); }else if($now["hours"] == 21){ array_push($message, "セリフ1", "セリフ2" ); } } return $message; } //リプライ用 function rep($name,$str){ $message = ""; /*パターンマッチスタート*/ if(preg_match("/美味しい(ね|ですね|ですよね)/u",$str) |preg_match("/おいしいしい(ね|ですね|ですよね)/u",$str) |preg_match("/うまかった(ね|ですね|ですよね)/u",$str) ){ $message = array( "セリフ1", "セリフ2" ); } return $message; } ?>
botの中核の処理はこれだけです。
最初にリプライを取得し、リプライに対して反応語句を選んでポスト。
次に通常ポストを選んでポストするだけです。
詳しい解説はまた次回。