twitterbotの作成

みなさんこんばんは
この前twitterbotをphpで作成したので作成方法を紹介したいと思います。
今回はeden.phpというライブラリを利用して実装しました。
手順は以下の通り

1.botとなるアカウントを作成
2.TwitterAPIを使うためにアプリケーションをTwitter applicationsに登録
3.eden.phpのダウンロード
4.eden.phpをアプリケーションと同じディレクトリに移動
5.アプリケーションのコーディング
6.cronの設定

ざっとこんな感じです。
初めてやったことを紹介したいと思います。

Twitter applicationsの登録

まずはここにアクセス→https://dev.twitter.com/apps
「Create a New Application」をクリック
Name、Description、Website、CallbackURLを適当に入力(笑)
「Create your Twitter application」をクリック
するとアプリケーションが登録されます。
このままだとツイートする権限がないので権限の設定を引き続き行います。
「Setting」タブをクリック
Application Typeのaccessを「Read only」から「Read and Write」に変更
「Update this Twitter application's settings」をクリックし変更を保存
これでアプリケーションが登録され自動ツイート出来るようになりました。
twitter_key、twitter_secret、access_token、access_secretをソースコードで記入することになります。

eden.phpのダウンロード

まずはここにアクセス→http://www.eden-php.com/
ここからダウンロードしてください。
eden.phpとはtwitterfacebookなどのAPIを簡単に使えるphpのライブラリです。
今回も非常に簡単にbotが作成できて良かったです^^

アプリケーションのコーディング

ソースコードは以下の通り。

<?php
//eden.phpをinclude
include('eden.php');
eden('debug')->output('Hello World'); //--> Hello World
$tweets = eden('twitter')->tweets('twitter_key', 'twitter_secret', 'access_token', 'access_secret');
$tweets->tweet(ツイートしたい文字列);
?>

HelloWorldは無視してください(笑)
twitter_key、twitter_secret、access_token、access_secretに関してはTwitter applicationsで取得したものを記述してください。
基本的には上記のコードだけでツイートすることができます。
こんなに少ないコード量で実現出来るとは思っていませんでした!
eden.phpすごい!^^b
自分のbotではツイートしたい文字列を配列で作成し、乱数を発生させてランダムでツイートするように書き換えました。そこで問題が発生しその際にtwitterの仕様を一つ知りました。
それは、「連続投稿制限がかけられており、最新の10ツイート以内に同じ内容のツイートがされてると投稿できない」というものです。
自分はツイートする文字列の少なさも影響しましたが...。この制限があったのでdate関数を使って時間も同時にツイートすることにしました。
しかしそのときもエラーが発生しましたorz
今度はタイムゾーンの設定が行われていないとのことでしたので下記のコードを追加で書き足しました

<?php
//タイムゾーンの設定を東京に
date_default_timezone_set('Asia/Tokyo');
・
・
・

これでうまく行きました!

cronの設定

これでツイートする機能までは出来たので、あとは定期的に実行する設定を行うだけです。
そこで登場するのがcronです。
cronとは指定したスケジュールでコマンドやシェルスクリプトなどを自動実行してくれるプログラムです
(引用:http://e-words.jp/w/cron.html
まずはcronのスケジュール設定を行うので下記のコマンドを実行

crontab -e

crontab -eとはcronを利用してプログラムをどのようなスケジュールで実行するのかを設定するファイルを作成するコマンドです。コマンドを実行したら下記のように記述します。
今回は30分毎にツイートする設定を行います。

*/30 * * * * 対象となるアプリケーションのパス

cronの実行スケジュールを記述するには6項目入力する必要があります。
左から、分、時、日、月、曜日、コマンドです。
毎月毎週何曜日の何時何分に実行するといった設定をすることができるということです。
上記コードでは*/30で30分毎というのを設定しています。
記述したら保存して設定した内容を確認してみましょう。
下記のコマンドを実行してください。

crontab -l

crontab -lで設定した内容を確認できます。先ほど記述した内容が確認できればokです。
これで完成!自動でツイートされるのを待ちましょう!^^b


...と思いましたが、ツイートされませんでした。
実行するスクリプトを指定するシバン(#!から始まる1行目に記述されてるやつ)を記述する必要があるとのことでした。
そこで下記のコードをファイルの先頭に書き足します。

#!/usr/bin/php

これでうまく行きました!
ちなみに、cronが実行するとmailが届きましたと標準出力でメッセージが送られます。
こういう標準出力や標準エラー出力がしつこかったのでリダイレクトして表示させないようにしました。
コマンドcrontab -eを実行して下記のように書き換えました

*/30 * * * *  対象となるアプリケーションのパス > /dev/null 2>&1

すでに設定した行の後ろに「 > /dev/null 2>&1」を付け足しました。
/dev/nullとは内容を捨てるだけのゴミ箱のようなものだそうです。
ここにリダイレクトすることで表示させなくさせました。

以上でbot作成完了です!
今回は先輩方から教えてもらったこともあり完成できました!
ありがとうございました!
もっと勉強ですねー頑張ります!

何か間違いがありましたらコメントお願いします。