今回から、
まずは時報bot
まずは、
<?php
require_once("twitteroauth.php");
// OAuthアプリ登録で取得したConsumer keyを設定
$consumer_key="";
// OAuthアプリ登録で取得したConsumer secretを設定
$consumer_secret="";
// OAuthトークン取得プログラムで取得したoauth_tokenを設定
$oauth_token="oauth_token";
// OAuthトークン取得プログラムで取得したoauth_token_secretを設定
$oauth_token_secret="oauth_token_secret";
// 発言を行うメソッドを指定
$method = "statuses/update";
// TwitterOAuthのインスタンスを生成
$twitter = new TwitterOAuth(
$consumer_key, $consumer_secret, $oauth_token, $oauth_token_secret
);
// 最大3回までリトライを試みる。
$retries = 3;
for($count = 0; $count < $retries; $count++) {
$date = date("Y/m/d H:i:s");
// プログラムの文字コードがUTF-8の場合はこのまま
$status = sprintf("只今の時刻は%sです", $date);
// プログラムの文字コードがSJISの場合はUTF-8に変換
//$status = mb_convert_encoding($status, "UTF-8", "SJIS");
// パラメータを指定(ここでは発言内容を指定)
$parameters = array("status" => $status);
// Twitterに発言をPOST
$response = $twitter->post($method, $parameters);
$http_info = $twitter->http_info;
$http_code = $http_info["http_code"];
// HTTPコードが200か304で、かつエラーメッセージがなければ成功
if(
($http_code == "200" || $http_code == "304") &&
!array_key_exists("error", $response)
) {
break;
}
// 1秒待つ
sleep(1);
}
?>
このPHPプログラムをcronなどで定期的に実行すれば、
上で挙げた時報botは日付部分がつぶやく時間によって変わる例ですが、
不定期に小倉百人一首をつぶやくbot
次に示す例は、
乱数を用いることで不定期につぶやくように実装しています。
<?php
require_once("twitteroauth.php");
// 1から6までの乱数を生成し、1でなければつぶやかないことで
// 6分の1の頻度で不定期なつぶやきを実現する
if(rand(1, 6) != 1) {
exit(0);
}
// OAuthアプリ登録で取得したConsumer keyを設定
$consumer_key="";
// OAuthアプリ登録で取得したConsumer secretを設定
$consumer_secret="";
// OAuthトークン取得プログラムで取得したoauth_tokenを設定
$oauth_token="oauth_token";
// OAuthトークン取得プログラムで取得したoauth_token_secretを設定
$oauth_token_secret="oauth_token_secret";
// 発言を行うメソッドを指定
$method = "statuses/update";
// TwitterOAuthのインスタンスを生成
$twitter = new TwitterOAuth(
$consumer_key, $consumer_secret, $oauth_token, $oauth_token_secret
);
$wakas = array(
"秋の田の かりほの庵の 苫をあらみ 我が衣手は 露にぬれつつ",
"春過ぎて 夏来にけらし 白妙の 衣ほすてふ 天の香具山",
"あしびきの 山鳥の尾の しだり尾の ながながし夜を ひとりかも寝む",
"田子の浦に うちいでてみれば 白妙の 富士の高嶺に 雪は降りつつ",
"奥山に もみぢふみわけ なく鹿の 声聞く時ぞ 秋はかなしき"
);
// 最大3回までリトライを試みる。
$retries = 3;
for($count = 0; $count < $retries; $count++) {
// つぶやく首を選定
$waka = $wakas[rand(0, count($wakas) - 1)];
// プログラムの文字コードがUTF-8の場合はこのまま
$status = $waka;
// プログラムの文字コードがSJISの場合はUTF-8に変換
//$status = mb_convert_encoding($waka, "UTF-8", "SJIS");
// パラメータを指定(ここでは発言内容を指定)
$parameters = array("status" => $status);
// Twitterに発言をPOST
$response = $twitter->post($method, $parameters);
$http_info = $twitter->http_info;
$http_code = $http_info["http_code"];
// HTTPコードが200か304で、かつエラーメッセージがなければ成功
if(
($http_code == "200" || $http_code == "304") &&
!array_key_exists("error", $response)
) {
break;
}
// 1秒待つ
sleep(1);
}
?>
このプログラムをcronを用いて10分間隔で実行すると、
botを作成する上でのTIPS
ここではbotを作成する上でのいくつかのテクニックを紹介します。
二重投稿対策
とくに気をつけないといけないのは、
たとえば、
その他、
エラー処理をしっかりやりましょう。
Twitterを毎日のように使っている方はご存知かもしれませんが、
定期的につぶやくbotはどの程度の頻度つぶやくべきか?
あまりフォローしていない人のタイムラインの場合、
また、
次回は、