ブログに関する役立つ知識をまとめています
PHP

【Twitter API】PHPで指定した時間に自動でつぶやくbotアプリを作る方法

今回はPHPとデータベースを使って、

「指定された時間」に「ランダムな内容」を自動的にツイートしてくれる本格的なBotアプリを作る方法を紹介します。

事前準備

(1) Twitter Appにアクセスします。リンク: https://apps.twitter.com/

(2) [Create New App]で新規アプリを作ります。

(3) 各種Keyを入手します。

・Consumer Key (API Key)

・Consumer Secret (API Secret)

・Access Token

・Access Token Secret

(4) 余裕があったらTwitter API documentを理解する。

PHPでTwitter APIを使えるようにする

今回はTwitteroauthというPHP向けのライブラリを使います。

インストール方法は簡単で、

https://github.com/abraham/twitteroauth

からダウンロードします。

インポートできればどこに置いても構いません。

 実際にPHPコードを書く

はじめにcommon.phpというファイルを作ります。

一つ目のブロックはTwitter APIを操作するためのKeyを定義する部分で、さきほど(1)で取得したKeyのことです。

二つ目のブロックはMySQLデータベースにアクセスするために必要なKeyです。

MySQLデータベースにツイート用のテーブルを作成する

自動ツイートするためのツイートを保存するためのデータベースとしてMySQLを使います。

別のデータベースやメモ帳をデータベースとして使うという方は読み飛ばしていただいて結構です。

データベースのテーブルとしては、今回の場合は「ID」と「message」という2つカラムを作って、

IDを長さ5のINT型でオートインクリメントにします(レコードを追加したら自動的に1足していく)。

messageを長さ140のvarchar型でツイートしたい内容を入れていきます。

ツイートは140文字までしかつぶやけないのでmessageの長さは140文字以内に設定しておきましょう。

メイン処理用のPHPコードを書く

次にTwitter APIを叩くためのコードであるautoTweet.phpを作ります。

ソースコードは以下のようになります。

require_once()を使ってtwitteroauthライブラリと先ほど書いたcommon.phpを使えるようにします。

3行目のuseですが、これはtwitteroauthライブラリのTwitterOAuth()クラスを使うために必要です。

4,5行目の$dsnと$pdoに関してはMySQLデータベースにアクセスするためのおまじないだと思ってください。

メイン処理は9行目からとなりますが、

MySQLデータベースにアクセスするため、try…catch構文を使ってエラーが出た時に例外処理をしておきます。

1. 11~12行目でSQL文を実行する

SQL文は

SELECT * FROM テーブル WHERE id=(SELECT MAX(id) FROM テーブル)」

となっていますが、

これは「あるテーブル」の「id」が「SELECT MAX(id) FROM テーブル」であるところを取り出してください。という命令です。

この「SELECT MAX(id) FROM テーブル」というのは、「あるテーブル」の中からidが最大であるものを取り出してくださいという意味です。

2. データベースから取り出したレコードから最大id(=登録されている総ツイート数)を取得する

ここで取り出したレコードを$rowに格納してif文を使っていますが、これはデータベースからレコードを取り出したはずが何も取り出せていなかったという状況避けるために書いています。

3.ランダムにツイートを選ぶ

mt_rand()関数を使ってランダムに生成された整数を生成します。

mt_rand()関数には引数が二つあって、

第一引数は生成される整数の最小値、第二引数は最大値となっています。

第二引数に総ツイート数を指定することによってツイート数より多い整数が指定されて意味不明なことがおきないようにしています。

そして20~22行でSQL文を実行して呟くツイートを取得します。

4. ツイートする

最後に、3. で取得した文章をツイートします。

TwitterOAuthオブジェクトを生成して、このオブジェクトのOAuthRequest()関数を使ってツイートをします。

OAuthRequest()関数は、

第一引数にAPIのURL、第二引数にリクエストメソッド、第三引数にパラメータを指定します。