phpでtwitterのbotを作る(TLに反応OAuth版)
の、OAuth版です。
<?php // twitteroauth.phpを読み込む。パスはあなたが置いた適切な場所に変更してください require_once("twitteroauth.php"); // Consumer keyの値 $consumer_key = ""; // Consumer secretの値 $consumer_secret = ""; // Access Tokenの値 $access_token = ""; // Access Token Secretの値 $access_token_secret = ""; // OAuthオブジェクト生成 $to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret); //最新のTLのステータスIDを保存しておくファイルです。パーミッションは書き込み可に。 $filename = "./tmp/tllast.dat"; //過去の開いて取得 $fp = @fopen($filename,'rb') or die("ファイルが開けません"); flock($fp, LOCK_EX); $line = fgets($fp, 64); fclose($fp); //自分がフォローしているfriendsのリストです。 $host = "http://twitter.com/statuses/friends_timeline.xml"; //ユーザーの発言一覧 //一番最初の時やファイルが壊れた時、最新1件のみ発言を取得する if(!empty($line)){ $req = $to->OAuthRequest($host,"GET",array("since_id"=>$line)); } else{ $req = $to->OAuthRequest($host,"GET",array("count"=>"1")); } $XML = simplexml_load_string($req); $i = count($XML)-1; $j = 0; while($i >= $j) { $var = $XML->status[$i]->text; $reply_name = $XML->status[$i]->user->screen_name; $name = $XML->status[$i]->user->name; if($reply_name != $username){ if( !preg_match ( "/@[a-zA-Z0-9-_]{3,}/", $var ) ){ if( preg_match ( "/おやす|寝る/u", $var )){ $message = "@".$reply_name." おやすみ!"; tweet($message); } if(preg_match ( "/おはよ|むくり/u", $var )){ $message = "@".$reply_name." おはよう!"; tweet($message); } if(preg_match ( "/ただいま/u", $var )){ $message = "@".$reply_name." おかえり"; tweet($message); } } } $i--; } //ファイルに最新id書き込み $last_id = $XML->status[0]->id; $dat = (string)$last_id; file_put_contents($filename,$dat,LOCK_EX); //ポスト部分の関数 function tweet($message) { global $to; $result = $to->OAuthRequest("https://twitter.com/statuses/update.xml","POST",array("status"=>$message)); print $result;//この行はなくてもいい。確認用 } ?>
特に何もいうことはないかなー…
tweet($message)って関数を作ったけど
$to->OAuthRequest("https://twitter.com/statuses/update.xml","POST",array("status"=>$message));
って書いても処理は一緒です。お好きな方どうぞ。