PHPでTwitterのBotを作ってみた(1)

Twitter APIを勉強していたのですが、TwitterでBotを作りたくなって作ってみました。
自動投稿とリプライに反応するBotが出来ました。
所要時間は調整も入れて2〜3時間ほど。
簡単に説明も入れながら作り方をおさらいしときます。

追記:現在のTwitter APIの最新バージョンはv1.1です。
記事記載当時と多少異なっている部分がありますのでご注意ください。
気が向いたら最新版のやつ書きます!


僕の作ったbotはこちら→
@RTkawase_bot
為替情報をつぶやきます。リプライもします。
@yu_okini_Bot
@yu29ozakiのお気に入りに追加したツイートをつぶやきます。

必要なファイル:TwitterOAuth.zip

アップしておきましたので、ダウンロードして適当なファイルに解凍しておいてください。

まず、OAuthの基本から。
OAuthとはIDやパスワードを利用するアプリ側に知らせる必要なく認証が出来るというもの。
簡単にいうと、パスワードを教えなくても認証できるよってことね。

TwitterではこのOAuthが比較的簡単に実装できます。
アプリの登録が必要なので、https://dev.twitter.com/から登録してね。

Twitter Developer Site Login

Twitter Developer Site Login

まず、Loginします。

Twitter Developer Site Login

Twitter Developer Site Login

Twitterのアカウント名とパスワードを入力してLoginを押します。

Twitter Developer Site My Application

Twitter Developer Site My Application

My Applicationを選びます。

Twitter Developer Site Create Application

Twitter Developer Site Create Application

Create a new applicationを選びます。

Twitter Developer Create new application

Twitter Developer Create new application

アプリケーション名(かぶらなければ何でも良い)とアプリの説明、ウェブサイトURL(実行するphpのパスでよい)を入力します。

Twitter Developer Create a new application

Twitter Developer Create a new application

もちろんYes, I agree!

Twitter Developer Create a new application

Twitter Developer Create a new application

ちょー読みづらい文字を入力し、Create application!

Twitter Developer Create a new application

Twitter Developer Create a new application

これでできました。この位置にアプリケーションのconsumer_keyとconsumer_secretが入ります。

Twitter Developer Create a new application

Twitter Developer Create a new application

次にユーザーキーとシークレットを設定します。Settingをクリック

Twitter Developer Create a new application

Twitter Developer Create a new application

今回は投稿も行なうので、Application TypeのAccessをRead, WriteまたはRead, Write and Access direct messagesにしておきます。

Twitter Developer Create a new application

Twitter Developer Create a new application

ためらわずにUpdate this Twitter application’s settingを押す!

Detailsをクリックして戻ったら、下の方にYour access Tokenという部分があります。
ここでボタンを押すとAccess Tokenが取得できます。アクセス権限を間違えても取得後も再取得できます。

Twitter Developer Create a new application

Twitter Developer Create a new application

アクセストークンはRecreateも出来るよ。

以下、最低限の機能を使うためのサンプルコード

//twitteroauth.phpを読み込む。
//パスはあなたが置いた適切な場所に変更してください
//cronなどで実行する場合はフルパスで書いてあげたほうが良いと思う…
require_once("./twitteroauth.php");

//hogemogeアプリのアプリ情報
//これはTwitterのDeveloperサイトで登録すると取得できます。
// Consumer keyの値
$consumer_key = "***********";
// Consumer secretの値
$consumer_secret = "******************";

//@hogemoge_botのアカウント情報
//これもTwitterのDeveloperサイトで登録すると取得できます。
// Access Tokenの値
$access_token = "***********";
// Access Token Secretの値
$access_token_secret = "******************";

// OAuthオブジェクト生成
$to = new TwitterOAuth(
		$consumer_key,
		$consumer_secret,
		$access_token,
		$access_token_secret);

// TwitterへPOSTする。パラメーターは配列に格納する
$req = $to->OAuthRequest(
	"http://api.twitter.com/1/statuses/update.xml",
	"POST",
	array("status"=>"※ここに投稿したい内容を記述。")
		);

以上。
簡単でしょ?笑

投稿だけならこれでいけます。
これをcronかなにかで呼び出してあげればOK!

次回は、これにいろいろ細工してもっとBotっぽくしてみたいと思います。

そういえば、この前Postfixで自動返信メールのシステムを作ってたんだけど、メールに反応するっていうのも面白いかも。

return top