<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Screw-Axis &#187; TuiBotter</title>
	<atom:link href="http://screw-axis.com/category/tuibotter/feed/" rel="self" type="application/rss+xml" />
	<link>http://screw-axis.com</link>
	<description>flexible, elastic and principled.</description>
	<lastBuildDate>Tue, 31 Jan 2012 02:09:44 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>[Tuitter] OAuth認証機能を追加</title>
		<link>http://screw-axis.com/2010/03/17/tuitter-oauth/</link>
		<comments>http://screw-axis.com/2010/03/17/tuitter-oauth/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 08:20:38 +0000</pubDate>
		<dc:creator>nao58</dc:creator>
				<category><![CDATA[TuiBotter]]></category>
		<category><![CDATA[Tuitter]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://screw-axis.com/?p=791</guid>
		<description><![CDATA[少し手が空いたので、以前より要望のあった Tuitter/TuiBotter の OAuth 対応をやってみました。 TuitterをOAuthで使う TuiBotter環境設定 あまり難しく考えないで、サクッと。おかげ [...]
Related posts:<ol>
<li><a href='http://screw-axis.com/2010/03/29/tuitter-twitter-profile-update/' rel='bookmark' title='[Tuitter] Twitterのプロフィール設定変更機能を追加'>[Tuitter] Twitterのプロフィール設定変更機能を追加</a></li>
<li><a href='http://screw-axis.com/2009/12/28/tuibotter/' rel='bookmark' title='[TuiBotter] Twitterボット専用PHPフレームワーク'>[TuiBotter] Twitterボット専用PHPフレームワーク</a></li>
<li><a href='http://screw-axis.com/2009/12/18/tuitter/' rel='bookmark' title='[Tuitter] オブジェクト指向型Twitterクライアント'>[Tuitter] オブジェクト指向型Twitterクライアント</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://screw-axis.com/wp-content/uploads/2010/03/oauth.jpg"><img src="http://screw-axis.com/wp-content/uploads/2010/03/oauth.jpg" alt="" title="OAuth" width="240" height="160" class="alignright size-full wp-image-792" /></a>少し手が空いたので、以前より要望のあった Tuitter/TuiBotter の OAuth 対応をやってみました。</p>
<p><a href="http://dev.screw-axis.com/doc/tuitter/ja/tutorial/oauth/">TuitterをOAuthで使う</a><br />
<a href="http://dev.screw-axis.com/doc/tuibotter/ja/tutorial/setting-environment/">TuiBotter環境設定</a></p>
<p>あまり難しく考えないで、サクッと。おかげで外部ライブラリが結構な環境依存になってしまいましたが。<br />
<span id="more-791"></span><br />
まずOAuthクライアントですが、自作するのも手間だったのでPECLのOAuthを使うようにしています。<br />
最初は<a href="http://github.com/abraham/twitteroauth">twitteroauth</a>など配置するだけのライブラリを使おうかとも思ったのですが、いずれにしろ libcurl が必要ですし、ライブラリの場所を指定する手間も発生します。おまけに PECL/oauth を入れると OAuthException の定義が干渉しあって twitteroauth は動かなくなってしまうことが判明したので、思い切ってPECLのみの対応で割り切りました。</p>
<p>実装は単純で、従来の Tuitter クラスを継承して、新たに TuitterOAuth というクラスを作ります。コンストラクタの引数だけが異なりますが、インスタンス化してしまえば以前と全く同様に使えるという寸法です。<br />
つまり、以下のようなコードがあったとすると</p>
<pre name="code" class="php">
$tuitter = new Tuitter($user, $pass);
$tuitter->sendMessage("Hellow");
$user = $tuitter->getUser('nao58');
    :
</pre>
<p>最初のインスタンス作成部分を修正するだけでOAuth対応になります。</p>
<pre name="code" class="php">
$tuitter = new TuitterOAuth(
     $consKey, $consSec, $acKey, $acSec);
$tuitter->sendMessage("Hellow");
$user = $tuitter->getUser('nao58');
    :
</pre>
<p>TuiBotter側に至っては、INIファイルの記述を書き換えるだけで対応完了です。</p>
<p>ただ、ベーシック認証に比べると複雑なことをやっているため、動作がちょっと重くなったような&#8230;ま、ここはトレードオフとしてください。</p>
<p>Related posts:<ol>
<li><a href='http://screw-axis.com/2010/03/29/tuitter-twitter-profile-update/' rel='bookmark' title='[Tuitter] Twitterのプロフィール設定変更機能を追加'>[Tuitter] Twitterのプロフィール設定変更機能を追加</a></li>
<li><a href='http://screw-axis.com/2009/12/28/tuibotter/' rel='bookmark' title='[TuiBotter] Twitterボット専用PHPフレームワーク'>[TuiBotter] Twitterボット専用PHPフレームワーク</a></li>
<li><a href='http://screw-axis.com/2009/12/18/tuitter/' rel='bookmark' title='[Tuitter] オブジェクト指向型Twitterクライアント'>[Tuitter] オブジェクト指向型Twitterクライアント</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://screw-axis.com/2010/03/17/tuitter-oauth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[TuiBotter] Twitterボット専用PHPフレームワーク</title>
		<link>http://screw-axis.com/2009/12/28/tuibotter/</link>
		<comments>http://screw-axis.com/2009/12/28/tuibotter/#comments</comments>
		<pubDate>Mon, 28 Dec 2009 02:30:34 +0000</pubDate>
		<dc:creator>nao58</dc:creator>
				<category><![CDATA[TuiBotter]]></category>
		<category><![CDATA[Tuitter]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://screw-axis.com/?p=758</guid>
		<description><![CDATA[というわけで、Twitterボット専用フレームワークです。 TuiBotter &#8211; Object-oriented PHP framework for Twitter-Bot 最大の特徴は、イベントドリブンで [...]
Related posts:<ol>
<li><a href='http://screw-axis.com/2010/03/17/tuitter-oauth/' rel='bookmark' title='[Tuitter] OAuth認証機能を追加'>[Tuitter] OAuth認証機能を追加</a></li>
<li><a href='http://screw-axis.com/2010/03/29/tuitter-twitter-profile-update/' rel='bookmark' title='[Tuitter] Twitterのプロフィール設定変更機能を追加'>[Tuitter] Twitterのプロフィール設定変更機能を追加</a></li>
<li><a href='http://screw-axis.com/2009/12/18/tuitter/' rel='bookmark' title='[Tuitter] オブジェクト指向型Twitterクライアント'>[Tuitter] オブジェクト指向型Twitterクライアント</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://screw-axis.com/wp-content/uploads/2009/12/tuibotter.jpg"><img src="http://screw-axis.com/wp-content/uploads/2009/12/tuibotter.jpg" alt="" title="TuiBotter" width="240" height="160" class="alignright size-full wp-image-759" style="margin-left: 10px;" /></a><a href="http://screw-axis.com/2009/12/18/tuitter/">というわけ</a>で、Twitterボット専用フレームワークです。</p>
<p><a href="http://dev.screw-axis.com/doc/tuibotter/">TuiBotter &#8211; Object-oriented PHP framework for Twitter-Bot</a></p>
<p>最大の特徴は、イベントドリブンでボットが書けること。例えば「フォローされたら、フォローバックする」というコードを書くには、「フォローされた」というイベントに渡ってくる「フォロワー」オブジェクトに対して、「フォローする」というメソッドを投げるだけで実装できます。<br />
実際にコード例を見ながら、簡単に説明します。<br />
<span id="more-758"></span></p>
<pre name="code" class="php">
class GreetingBot implements TuiBotter_Event_BeFollowed
{
  public function eventBeFollowed(Tuitter_User $user, Tuitter $tuitter)
  {
    if(!$user->isFollowing()){
      $user->follow();
      $user->sendDM('フォローありがとう!');
    }
  }
}
</pre>
<p>基本的には、このBehaviourという「振る舞い」をあらわすクラスを作ることが、そのままボットの人格を作ることになります。</p>
<p>1行目: ボットの名前(GreetingBot)と、必要なイベント(TuiBotter_Event_BeFollowed)<br />
3行目: 「フォローされた」イベント<br />
5行目: フォローしてきたユーザを、こちらから既にフォローしていなかったら&#8230;<br />
6行目: フォローする<br />
7行目: DMを送る</p>
<p>これだけで完了です。</p>
<p><a href="http://dev.screw-axis.com/doc/tuibotter/ja/ref/TuiBotter_Events/">イベント</a>は他にも「TLが更新された」「自分が言及された」「自分の発言がRTされた」など種々あり、これらを自由に組み合わせることでボットの人格を比較的容易に形成できます。</p>
<p>動作するのは、PHP5以上。パースにはXMLを用いましたので、json_decodeが含まれていなくても動作します。<br />
ただし、将来的に検索モジュールを追加した場合、必要になるかもしれません。</p>
<p>Related posts:<ol>
<li><a href='http://screw-axis.com/2010/03/17/tuitter-oauth/' rel='bookmark' title='[Tuitter] OAuth認証機能を追加'>[Tuitter] OAuth認証機能を追加</a></li>
<li><a href='http://screw-axis.com/2010/03/29/tuitter-twitter-profile-update/' rel='bookmark' title='[Tuitter] Twitterのプロフィール設定変更機能を追加'>[Tuitter] Twitterのプロフィール設定変更機能を追加</a></li>
<li><a href='http://screw-axis.com/2009/12/18/tuitter/' rel='bookmark' title='[Tuitter] オブジェクト指向型Twitterクライアント'>[Tuitter] オブジェクト指向型Twitterクライアント</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://screw-axis.com/2009/12/28/tuibotter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

