OAuthで返信するbotを作ってみる
はい。ついめ〜じが一段落しましたので(まだ根本的解決には至っていませんがひとまず)
お待ちかねのOAuth対応botですよ!
OAuthなんてかったるくていちからプログラミングなんてしてられない!ので、他の方のスクリプトや文書を使わせていただきましょう!
ほぼ、こちらを参考にさせていただきました。
が、出来ましたか?
できたらcurlで作っていた今までのスクリプトを少し変えるだけで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 = ""; //最終発言をとっておくテキスト。書き込み可に $filename = "./tmp/data.txt"; $host = "http://twitter.com/statuses/mentions.xml"; //返信一覧 $fp = @fopen($filename,'rb') or die("ファイルが開けません"); flock($fp, LOCK_EX); $line = fgets($fp, 64); fclose($fp); // OAuthオブジェクト生成 $to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret); //保存しておいたステータスid取得。このid以降の返信を読み込む。なかったり読み込めなかったら最新1件 if(!empty($line)){ $req = $to->OAuthRequest($host,"GET",array("since_id"=>$line)); } else{ $req = $to->OAuthRequest($host,"GET",array("count"=>"1")); } //XML文字列をオブジェクトに代入する $XML = simplexml_load_string($req); //順に返信 $i = count($XML)-1; $j = 0; while($i >= $j) { $var = $XML->status[$i]->text; $com = ereg_replace("\@$username", "", $var); $reply_name = $XML->status[$i]->user->screen_name; $name = $XML->status[$i]->user->name; //ゴチャゴチャするので、返信のセリフ組み合わせはユーザー定義関数で。 $message = serif($reply_name,$name,$com); //そのままポストの関数へ… $result = $to->OAuthRequest("https://twitter.com/statuses/update.xml","POST",array("status"=>$message)); print $result;//この行はなくてもいい。確認用 $i--; } //最終発言リプライのidを保存してる部分。先頭を調べて… $string = $XML->status[0]->id; //空じゃなかったら書き込み if(!empty($string)){ $dat = (string)$string; file_put_contents($filename,$dat,LOCK_EX); } //これでメインの処理は終わり //セリフ生成のユーザー定義関数 function serif($reply_name,$name,$com){ //配列を用意して… $uranai=array("大吉","中吉","小吉","末吉","吉","凶"); $janken=array("ぐー","ちょき","ぱー"); //スクリーンネームに@を付ける $reply_name = "@$reply_name"; //特定語句に反応する部分 if(stristr($com, "占い")){ $key = array_rand($uranai); $post = $uranai[$key]; $return = $reply_name." ".$name."さんの運勢…".$post; } else if(stristr($com, "じゃんけん")){ $key = array_rand($janken); $post = $janken[$key]; $return = $reply_name." ".$name."さん、勝負だ!じゃんけん…".$post; } else{ //このままだと鸚鵡返し。色々工夫してみて下さい $return = $reply_name." ".$com; } //戻り値 return $return; }
カスタマーキーや、トークンさえわかってしまえば、あとは便利なライブラリがあるので簡単ですね。
アイコン変えるのはどうだろう、難しいのかな。
とりあえず今日はこれで