EasyBotterを使ってTwitter botを作りました

EasyBotterを使ってTwitter botを作りました

EasyBotterを使って用意したテキストを決まった時間にランダムにツイートするbotを作りました。

以前twitterのアカウントを変更したときに、リプライや関連サービスのデータを消したくなくて旧アカウントを再取得して残していました。
せっかくアカウントがあるわけだし活用したいと思ってゲーム用アカウントにしようとしたのですが、2アカウントを使い分けるのが面倒で断念。。
「自分で呟くのが面倒ならbotに呟いてもらえばいいじゃない」というわけでbotを作ることにしました。

ダウンロード

こちらからEasyBotterをダウンロードします。
バージョンは2.1.3でした。

ファイルの編集

EasyBotterでは用意したテキストをツイートするbotの他に、誰かからの@に返信するbotやタイムラインに流れてきた単語に反応するbotなども作れるそうですが、今回は用意したテキストを淡々とツイートするbotを作りたいので、以下の3つのファイルの必要な箇所だけ修正しました。

data.txt

ランダムに呟きたいテキストデータのファイルです。
data.txtのままでも問題ありませんが、私はファイル名をdata.phpに変更しました。

<?php
$data = array(
"テキスト1",
"テキスト2",
"テキスト3",
"テキスト4",
);

bot.php

実際にプログラムを実行するときに動かすファイルです。
コメント形式で記述例が用意されているので、それを参考に編集します。

今回は動作テスト用に「テキストデータ用ファイルを読み込んでランダムにツイートする」ように編集しました。

$response = $eb->postRandom("data.php"); 

動作確認後は以下の記述に変更しました。
「自動でフォロー返しをして、bot.phpを実行したときに15時だったらテキストデータ用ファイルを読み込んでランダムにツイートする」botにします。

$response = $eb->autoFollow();
if(date("G") == 15 && date("i") == 0){
    $response = $eb->postRandom("data.php");
}

setting.php

botに使うアカウントやOAuth認証用のキー、アクセストークンなどの設定を記述するファイルです。

<?php
//設定
$screen_name = "【twitterアカウント(@は付けない)】"; //botのid名
$consumer_key = "【Consumer key】"; // Consumer keyの値
$consumer_secret = "【Consumer secret】"; // Consumer secretの値
$access_token = "【Access Token】"; // Access Tokenの値
$access_token_secret = "【Access Token Secret】"; // Access Token Secretの値

OAuth認証のキーの取得方法

OAuth認証用のキーとアクセストークンを取得するためには、twitterの開発者ページでアプリケーションの登録が必要です。

bot用のアカウントでtwitterにログインした後、Twitter Developersへアクセスして、ページ右上のプルダウンから「My applications」を選択します。

「My applications」を選択

Twitter Appsのページで「Create New App」をクリックします。

「Create New App」をクリック

Create an applicationのページでアプリケーションの登録をします。
「Name」にはアプリケーションの名前を入力します。他の人と被る名前は登録できません。ツイートしたときに「via~」で表示されます。
「Description」にはアプリケーションの説明を10文字以上で入力します。
「Website」にはアプリケーションの説明サイトのURLの入力欄です。ツイートしたときの「via~」のリンク先になります。 入力したら、ページ下部の「Yes, I agree」にチェックを入れて、「Create your Twitter application」をクリックします。

アプリケーションの登録

ツイートの読み込みだけではなく書き込みもできるようにアクセス権限を変更します。
Permissionsタブで移動し、「Read and Write」を選択して「Update Settings」をクリックします。

アクセス権限を変更

アクセス権限が「Read and Write」に変更したのを確認してAPI Keysタブで移動し、ページ下部の「Create my access token」をクリックしてアクセストークンを取得します。
クリック後、取得したアクセストークンが表示されるのですが念のためアクセス権限を確認しておいたほうがいいかもしれません。私のときはうまくプログラムが動かないなーと思っていたら、ここが「Read only」になって読み込み専用のアクセストークンになっていました。どうやら、なかなか設定変更が反映されないことがあるらしく、そういうときは画面をリロードするといいみたいです。「Regenerate my access token」をクリックすると、アクセストークンを再取得することができます。

アクセス権限を確認

ページ右上の「Test OAuth」をクリックします。

「Test OAuth」をクリック

Consumer key、Consumer secret、Access token、Access token secretが表示されるので、これをsetting.phpへ書き込みます。

Consumer key、Consumer secret、Access token、Access token secretが表示

ファイルのアップロード

「EasyBotter」フォルダのファイルをサーバーにアップロードして、以下の3つのファイルのパーミッションを666に変更します。

  • data.txt
  • reply_pattern.php
  • log.dat

bot.phpの動作確認

bot.phpのアドレスをアドレスバーに入力し、以下のように表示されたら正常に動作しています。

Twitterへのpostに成功しました。
@XXXXXに投稿したメッセージ:○○○○○○○○○○

あとはCRONなどでbotを定期的に実行する仕組みを作れば作業完了です。
私は毎時0、15、30、45分にbot.phpを実行するようCRONを設定しました。

【8/20追記】さくらインターネットでのCRON設定方法

以下の記事にまとめています。

今回作ったbot

miauler_bot(@pi_cot)
説明ページはこちら

参考サイト

下のボタンを押すと拍手送信&メッセージフォームが開きます。→WEB拍手お返事