【Twitter bot 開発】三毛猫botを改良 その1

【三毛猫bot改良案】

・@〜ねこじゃらし、@〜またたび等、botに向かって返信すると単語によってつぶやき内容が変化する。

・話しかけてると「なつき度」が加算され、閾値を超えると猫botにフォローされる。

・感情パラメータが設定されており、機嫌の悪いときに@返信で話しかけると怒られる。

 

というような機能を最終的に実装したいのですが、いきなり全部やるのは無理なので、一番簡単そうな返信するとbotが「にゃー」とか話しかけてくる機能を実装する事にしました。

 

【実装手順】

「twitter bot php 返信」とかで検索するとベタのコードが掲載されているサイトがそれなりに見つかるのですが、APIとかデータの整形とか面倒くさいので、もっと簡単に楽して作れる方法は無いものかと探していたらとても素晴らしいフレームワークが見つかりました。

 

Tuitter / Tuibotter

 

この素晴らしいフレームワークを使って作成したのが以下のコードです。

「be_replied.php」 ※2010/02/07修正

class BeReplied implements TuiBotter_Event_BeReplied{
 public function eventBeReplied(Tuitter_Tweet $tweet, Tuitter $tuitter){	
	
	$say_num = rand(0, 5);
	$say[0] = "ゴロニャーン";
	$say[1] = "ニャン";
	$say[2] = "ゴロゴロゴロゴロ";
	$say[3] = "ニャンニャーン";
	$say[4] = "ニャン!";
	$say[5] = "ニャオーン";
	
	$tweet->reply($say[$say_num]);

 }
}

毎度の事ながら書き方が良く分かってないのですが、上記のコードとiniファイルやHeartBeat.phpなど、tuitter、tuibotterフレームワーク一式をアップロードして、GAEのcronでファイルを叩くと一応動作しているようです。

ただし、tuibotterのキャッシュの設定か、そもそもコード自体に記述が無いためか、今のところcronで実行される直前に話しかけたユーザーにしか@返信を行わないようになってます。(そのうち直します)

↑単なる勘違いでした。

コメント2件

  • nao58 | 2010.01.29 15:39

    はじめまして。Tuitter作ってる者です。
    ご利用ありがとうございます^^

    少しだけコードについて。
    イベントは引数に既に $tuitter オブジェクトを受け取っているので、再度インスタンス化する必要はありません。
    もし、その呟きに対して「返信」したいのであれば、同じく渡されている $tweet オブジェクト(元となる呟き)に対してreplyするのが良いんじゃないかと。
    15行目を削除して、16行目を
    $tweet->reply(‘@’.$tweet->….);
    に変える感じです。

    直近にしか返さないというのは不思議ですね。キャッシュの設定が上手くいっていないなら、逆に既に送った人も含めて全てに毎回返信してしまうはずです。

    まだ作ったばかりのライブラリなので、不具合等もあるかもしれません。
    何かあれば、連絡ください。
    よろしくお願いします。

  • t.okubo | 2010.01.30 12:07

    >nao58さん

    こんにちは。
    tuitterのおかげで簡単にbotが作れてとてもありがたいです!
    コードの修正点も指摘していただいてありがとうございます。後で修正しておきます。

    直近にしか返さなかったという件ですが、先ほど改めて確認したところ正常に動作していました。
    すみません。。。お手数おかけしました。

IT起業アカデミア