PHPでランダムツイートをするTwitter BOTを作ってみました。
MontBlanc.です。
ある試みをするにあたって、Twitterで自動でURLを自動ツイートするBOTを作成したかったので、作ってみました。
もくじ
必要なもの
Twitterアカウント(とTwitterアプリのアカウント+トークン)
これが無いと始まらない!!!笑
また、Twitterアプリケーションというものを作成・使用します。
サーバーとCRON
今回はさくらインターネットのサーバーコントロールパネルのCRON設定を使っています。
加えてBOTのスクリプトを仕込むためPHPファイルをアップするためのサーバーも必要です。
TwistOath
今回はこちらにお世話になりました。
https://github.com/mpyw/TwistOAuth
まずは準備
まずはBOTに使用するTwitterアカウントを作成します。
既存のアカウントでも問題なし。
アプリケーションを作成する
作成、もしくは既存のアカウントにログインした状態でTwitterの開発サイトにアクセスします。

「Create New App」からアプリ作成に入ります。
作成するアプリの情報入力に移動するので、下記を入力

規約に同意の上、作成を選択するとアプリが生成されます。
アクセスキーとトークンを取得する
次に以下の情報を取得します。
・Consumer Secret
・Access Token
・Access Token Secret
先ほど作成したアプリを選択肢して、情報画面へ移動。
Consumer Key,Secretはタブ内の「Key and Access Tokens」に記載があります。
Access Tokenのふたつは同ページの「Your Access Token」下、「Create my access token」を押して生成が可能です。
これらの情報をメモなどしてひかえておきます。
ツイートするためのPHPを用意する
次にTwitterアプリにアクセスして、どのようにツイートするphpを用意します。
仕組みとしては、「phpファイルにアクセスすると、list.txtの行からランダムの行を選択してツイートする」ような流れになります。
TwistOathをダウンロード
下記からTwistOathをダウンロードします。
ツイートするphpを作成する
ファイルの構成はこんな感じ。
└ list.txt → ツイートする内容を1行ごとに記述
└ twitter-bot.php → ツイートするスクリプト
└ TwistOAuth.phar
phpは以下↓
<?php require_once('TwistOAuth.phar'); $consumer_key = "XXXX"; $consumer_secret = "XXXX"; $access_token = "XXXXX"; $access_token_secret = "XXXX"; $filelist = file('list.txt'); if( shuffle($filelist) ){ $message = $filelist[0]; } // TwitterAPIに接続するあらゆる正常時の処理はこのブロックの中で行う try { // クレデンシャル生成 $to = new TwistOAuth($consumer_key, $consumer_secret, $access_token, $access_token_secret); // ツイート $status = $to->post('statuses/update', ['status' => $message ]); // レスポンス確認(異常時にはcatchにジャンプするため、ここへの到達は成功を意味する) var_dump($status); } catch (TwistException $e) { // エラーを表示 echo "[{$e->getCode()}] {$e->getMessage()}"; } ?>
ツイートの内容を記載するlist.txtは行毎にツイートしたい内容を記入します。
テストだよ〜 あばばばば なんてこった
これで、ファイル一式をサーバーにアップロード、”twitter-bot.php”にアクセスすると、phpが読み込まれ、ツイートがされるようになります。
CRONを使って設定した時間にPHPを発動するようにする
次にtwitter-bot.phpが定期的に発動するようにCRONの設定を行います。
cronとは、常駐プログラムの一種で、ユーザの設定したスケジュールに基づいて指定したコマンドやスクリプトなどを自動実行してくれるプログラムのことです。
今回は筆者が利用しているさくらインターネットでのCRON設定方法です。
サーバーコントロールパネルへアクセス
まずはさくらのインターネットにログインし、サーバーコントロールパネルにアクセスします。
(会員メニューログイン > 契約情報 > サーバ設定)
そこから左の”アプリケーションの設定“からCRONの設定にアクセスします。
CRONを設定する
次にCRONの設定をします。
新規項目の追加を選択し、実行コマンド欄に以下のコマンドを入力。
ディレクトリ名ではtwitter-bot.phpがある階層までを設定します。
次にCRONを発動する期間を設定、私は以下のように設定しました。
月,日,時に*、分に*/30を入力。これで「30分毎」の設定になります。
コマンドが正しく入力されていれば、Twitterに指定した時間ごとにランダムでツイートされるようになります。
※短い期間で同じ内容を参照してしまうとTwitter側に「重複したツイート」と認識され、表示されない場合があるの注意!
今回の方法でBOT化したツイッターアカウント
Tweets by mini4lab
30分毎に自動的にツイートが更新されていきます。
まとめ
以上の方法でTwitterBOTが作成できました!
複数のサービスで連携が必要という点ではめんどくさいかもしれませんが、PHPコピペでほぼ出来るので、結構簡単にBOTを作成することができましたb
他にも自動フォローや自動返信など色々出来そうなので今後もちくちくいじっていきたいと思います。
ではでは〜。
参考サイト
作り方概要:http://qiita.com/tsunet111/items/9309801cd3e3bcf6e32a
Twitter Oath:http://webkaru.net/php/twitter-bot/
CRON:http://wisteriahill.sakura.ne.jp/sakura_cron/index.html
TwistOath:http://www.braveryk7.com/wordpress/it/234/