YENLAND TIME :  

 Top >  Library  |  印刷する印刷ページ       はてなブックマークに追加 Buzzurlにブックマーク Yahoo!ブックマークに追加 このページを Google Bookmarks に追加 RSS

大区分

その他

中区分

PC

小区分

Twitter

項目

2. Twitter Botの作成方法

入力者 山下章太 更新日 20121028


※記載していた内容が古くなってきましたので、2012年10月時点の内容に更新しています。



インターネットでは、ボット(Bot)というものがありますが、 Twitter(ツィッター)ではよく見かけることがあります。

詳しくは、『プログラミングができなくても作れるTwitter botの作り方』 というページに出ています。

ダウンロードは、こちらより行って下さい。

ファイルをダウンロードすると、下記のファイル(PHP)が入っています。

  • bot.php (botの動作のパターンを書くファイル。cronで実行するのもこのファイルです)
  • data.txt (発言させたい文章を書き込むデータファイル)
  • EasyBotter.php (botを動かすためのメインのスクリプト)
  • log.dat(返信履歴を記録するためのファイル。)
  • /PEAR(フォルダ)(botを動かすためのライブラリ。)
  • reply_pattern.php (特定の単語に特定の文章を返すためのデータファイル)
  • setting.php (botにアクセスするためのキーを書き込む設定ファイル)

以前のバージョンからはかなり変更されていますが、TwitterがOAuth認証になってから、 「Access Token」と「Access Token Secret」を利用することが必要になっています。

「setting.php」に「Access Token」と「Access Token Secret」などの情報を入力します。

OAuth認証取得用ページ

発言するコメントは、「data.txt」に入れておく必要があります。

このサイトの場合は、下記のようなBotを作成して、ランダムに掲載されている情報を表示しています。

YENLAND Bot: @yenbridge

「data.txt」には、掲載するコメントを置いておきますが、こちらのファイルが自動更新されないと困りますので、 YENLANDでは、「data.txt」作成用のモジュールを別途用意して、「data.txt」を自動更新しています。

利用の際の注意点

ここでは、「EasyBotter」を利用する際の留意点を幾つか記載します。

エンコード

Twitterのエンコードは、「utf-8」となっていますので、エンコードが上手くできていないと、 文字化けが発生します。
「utf-8」形式で保存できるエディタを利用して、編集する必要があります。



実行するファイルの場所

「EasyBotter.php」を実行することで、TwitterのBotに発言させますが、Cronなどで実行するファイルが同じ場所にない場合は起動しません。

具体的には、「EasyBotter.php」の28行目あたりに下記のコードがありますが、
$dir = getcwd();
として場所を取得しているため、Cronなどで実行するファイルが、「EasyBotter.php」と異なる場所に存在する場合は、エラーが発生します。

Cronで実行するファイルと「EasyBotter.php」が異なる場所にある場合は、 下記のようにファイルの場所を、直接記載する必要があります。

【変更前】
$path = $dir."/PEAR";

【変更後】
$path = "/home/xxxxx/domains/xxxx.net/html/tw/PEAR";



TwitterのAPIについて

Twitterの使用は、定期的に見直しされて変更されています。

ダウンロードしたファイルが、古いAPI(起動させるためのコード)を参照している可能性がありますので、 古いAPIを参照している場合は、変更して下さい。

変更するのは、EasyBotter.php の一番下ですが、赤字のように変更します。 コメントアウト(//)の箇所が、もともと入っているコードです。


function setUpdate($value){
$url = “http://api.twitter.com/1/statuses/update.xml”;
//$url = “https://twitter.com/statuses/update.xml”;
return $this->_setData($url,$value);
}

function getFriendsTimeline(){
$url = “http://api.twitter.com/1/statuses/friends_timeline.xml”;
//$url = “http://twitter.com/statuses/friends_timeline.xml”;
return $this->_getData($url);
}

function getReplies($page = false)
{
$url = “http://api.twitter.com/1/statuses/mentions.xml”;
//$url = “http://twitter.com/statuses/replies.xml”;
if ($page) {
$url .= ‘?page=’ . intval($page);
}
return $this->_getData($url);
}

function getFriends($id = null)
{
$url = “http://api.twitter.com/1/statuses/friends.xml”;
//$url = “http://twitter.com/statuses/friends.xml”;
return $this->_getData($url);
}

function getFollowers()
{
$url = “http://api.twitter.com/1/statuses/followers.xml”;
//$url = “http://twitter.com/statuses/followers.xml”;
return $this->_getData($url);
}

function followUser($screen_name)
{
$url = “http://api.twitter.com/1/friendships/create/”.$screen_name.”.xml”;
//$url = “http://twitter.com/friendships/create/”.$screen_name.”.xml”;
return $this->_setData($url);
}





   はてなブックマークに追加 Buzzurlにブックマーク この記事をLivedoorクリップにクリップ! Yahoo!ブックマークに追加 このページを Google Bookmarks に追加 RSS