Twitter bot 作成 定期的につぶやくbot (PHP)

Twitter botの作成法を紹介します。

面倒なOAuth認証は abraham / twitteroauthライブラリを使用します。
(2013/02/23追記:codebird-phpというライブラリもよさげだそうです。いずれ試してみるかもしれません。)

今回は定期的につぶやくbotをPHPで作成してみます。

環境的なこと


PHPが動くマシンが必要です、WindowsでもLinuxでも(Macでも)OKです。
botなので24時間動かせる環境が望ましいかもしれません(レンタルサーバを借りるなどがオススメです)。
 

開発の流れ

以下手順で定期的につぶやくbotが完成します。

1 アプリからつぶやくためのtokenを取得する アプリからTwitterへアクセスできるようにするtoken(パスワード的な文字列)を取得
2 TwitterにつぶやくPHPスクリプトを書く 起動すると一発Tweetするだけの単純なPHPスクリプトを書く。
3 PHPスクリプトを定期的に起動する 定期的にPHPスクリプトが起動するようにする

 

1. アプリからつぶやくためのtokenを取得する


アプリからつぶやくのに必要なのは以下4つの文字列です。
Consumer key
Consumer secret
Access token
Access token secret
My applications | Twitter Developersで上記文字列の発行を行います。
 
Create a new applicationをクリックします。

Name アプリの名前です。~から等とアプリ名として表示されるアレです。
Description アプリの概要。特に使用しませんが何か入れておきましょう。
Website アプリのサイトです。特に使用しませんが何か入れておきましょう。
Callback URL: 自分以外にアプリを使ってもらう際にTwitter認証後に戻る用のURLのようです。
特に使用しませんが何か入れておきましょう。

上記を入力し、規約に同意し、Create Your Twitter applicationボタンをクリックします。
無事成功したら、OAuth settingsの項目に、
Consumer key、Consumer secretが表示されていることを確認します。

次にSettingsのタブのApplication typeの設定で、
AccessをRead and Writeにしておきます。(Readのみだとアプリからつぶやくことはできません。)

再びDetailタブに戻り、Create My Accecss Tokenボタンをクリックします。
Access token、Access token secretが表示されていることを確認します。

また、Access levelがRead and writeになっていることも確認します。
 

2. TwitterにつぶやくPHPスクリプトを書く


以下にサンプルコードを紹介します( tweet_test.php )

<?php

	main();
	
	//********************************************************************************************
	/**
	 * @brief		main関数
	 *				サンプルコードのmain関数です。
	 * @author		@loftkun
	 */
	//********************************************************************************************
	function main()
	{
		Logput("main() : start");
		
		//つぶやく文字列を決定
		$tubuyaki = "【定期つぶやき】モヤモヤさまぁ~ず2が好きな方はフォローお願いします。";
		
		//つぶやく
		$result = TwitterPost($tubuyaki);
		
		Logput("main() : end");
	}
	
	//********************************************************************************************
	/**
	 * @brief		TwitterPost関数
	 *				つぶやくサンプルです。
	 * @author		@loftkun
	 *
	 * @param[in]	$tubuyaki		つぶやく文字列
	 *
	 * @return		true	成功
	 *				false	失敗
	 */
	//********************************************************************************************
	function TwitterPost($tubuyaki)
	{
		Logput("TwitterPost() : start");

		//Twitterizerライブラリを取り込む
		require_once("./twitteroauth.php");//環境によってパスの書き方は変わります。
		
		//token文字列
		//https://dev.twitter.com/appsで発行したtokenを設定して下さい。
		$consumer_key		="hoge";
		$consumer_secret	="hoge";
		$oauth_token		="hoge";
		$oauth_token_secret	="hoge";
		
		//TwitterOAuthのインスタンスを生成
		$twitter = new TwitterOAuth(
			$consumer_key, $consumer_secret, $oauth_token, $oauth_token_secret
		);

		//メソッドを指定(ここではつぶやくメソッドを指定)
		$method = "statuses/update";
		
		//パラメータを指定(ここではつぶやく文字列を指定)
		$parameters = array("status" => $tubuyaki);
		
		//メソッドを実行(ここではつぶやきます。)
		$response = $twitter->post($method, $parameters);
		
		//戻り値取得
		$http_info = $twitter->http_info;
		$http_code = $http_info["http_code"];

		if($http_code == "200" && !empty($response))
		{
			//つぶやき成功
			Logput("TwitterPost() : success end");
			return true;
		}
		else
		{
			//つぶやき失敗
			Logput("TwitterPost() : faile end");
			return false;
		}
	}
	
	//********************************************************************************************
	/**
	 * @brief		おまけ。Logput関数
	 *				標準出力とログファイルにログを吐き出します。
	 *				文頭に現在時刻、文末に改行をつけてくれます。
	 * @author		@loftkun
	 * @param[in]	$log		ログ文字列(末尾に改行は不要)
	 */
	//********************************************************************************************
	function Logput($log)
	{
		//現在時刻を付加
		$date = date('Y/m/d(D) H:i', time());
		$log = $date." ". $log;
		
		//標準出力に出力(コンソール画面とか、ブラウザからログが見える)。
		echo $log . "<br>";
		//文字化けする場合はソースファイルの文字コードを変えるか、ここで適切に変換しましょう
		//echo mb_convert_encoding($log . "<br>", "SJIS", "UTF-8");
		
		//ログファイルへ出力(追記モードです。ログサイズを監視する処理を入れておいたほうが無難です。)
		$fp = fopen("./tweet_test.log", "a+");//環境によってパスの書き方は変わります。
		fputs($fp, $log. "\n");
		fclose($fp);
	}
?>

上記コードの動作にはOAuth.phpとtwitteroauth.phpが必要です。
abraham / twitteroauthから入手し、tweet_test.phpと同じディレクトリに格納しておきます。

動作ログの例

2013/01/21(Mon) 20:47 main() : start
2013/01/21(Mon) 20:47 TwitterPost() : start
2013/01/21(Mon) 20:47 TwitterPost() : success end
2013/01/21(Mon) 20:47 main() : end

 

3. スクリプトを定期的に起動する


あとは、PHPスクリプトを定期的に起動すればbotの完成です。
Linuxではcronが一般的です。
レンタルサーバの場合はcronの設定画面が用意されていることが多いのでそちらを利用します。
また、crontabコマンドが使える場合、crontab -eコマンドでviが起動するので設定を書き込む方法もあります。

Windowsではタスクスケジューラを使用します。
コントロール パネル->システムとセキュリティ->管理ツール->タスクスケジューラ から新規タスクを作成します。
トリガはおこのみで毎時設定など。
タスクから、php ~.php 等と書いたbatファイルを定期的に起動するように仕掛けておけばOKです。

以上、定期的につぶやくbotの作成法でした。

2件のコメント

  1. ピンバック:エンジニアインターン ドットインストールを用いてtwitterのbotを作ろう! | IT系就活のためのインターンシップ・新卒採用求人情報なら「エンジニアインターン」

  2. ピンバック:ドットインストールを用いてtwitterのbotを作ろう! | IT系就活のための新卒採用求人ならエンジニア就活

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です