Twitterbot作り 〜リプライさせよう〜

ぼんじゅーる、銀次です。
今回で特定の言葉に反応してリプライすることができるbotが作れると思います。
今まで、長文でパートが多いのに読んでくださいありがとうございました。
次回でbot作り記事は終了です。


超初心者の銀がbotを作れた - 銀さんのbot 〜不完全〜で紹介した
「2009-08-08 - プログラミングを始める10の理由([php][twitter]phptwitterbotを作る(返信編))」
を見ながら、私の記事も見ていただくと良いかな〜と思います。
元記事からのコピペ多々あります。


ではスタート。
2009-08-08 - プログラミングを始める10の理由の[php][twitter]phptwitterbotを作る(返信編)
のソースをコピーしてください。
新規ファイルボタンを押して、コピーしたソースをペーストしてください。


このソースをちょいちょい変えます。

まず、

$host = "http://twitter.com/statuses/mentions.xml?count=1"; //@返信一覧の最新一件

$host = "http://twitter.com/statuses/mentions.xml?count=2";

に変更。


次は、

$var = $XML->status[0]->text;

$massage = ereg_replace("\@$username", "", $var);

$reply_name = $XML->status[0]->user->screen_name;

$reply_name = "@$reply_name";

$name = $XML->status[0]->user->name;

の下に

$var1 = $XML->status[1]->text;
$massage1 = ereg_replace("\@$username", "", $var1);

を加える。


そいでそいで

$massage = $reply_name." "ここらへんは自分で考えてね!";

if(! empty($reply_name)){
$massage = $reply_name." "ここらへんは自分で考えてね!";
}

に変更。


しかし、今のままでは特定の言葉に反応しません。
反応するように
$massage = $reply_name." "ここらへんは自分で考えてね!";
を変えましょう。
今回は例として「はらへ」にでもしましょうか。
「はらへ」という言葉に反応させましょう。
カナダさんのソースの1部を使って説明します。

$harahe = array("ポテトキャセロール",
"オートミールケーキ",
"チキンカレーキャセロール",
"ブラウニー",
"黒豆スープ");

と言うように言わせたいものを設定し、ソースに加えましょう。


if(! empty($reply_name)){
if(stristr($var, "はらへ")){
$key = array_rand($harahe);
$post = $harahe[$key];
$massage ="@".$reply_name." ".$name."麻呂さん、お腹すいたんですか?うーん、では".$post."食べますか?";
}
else{
$mes=array("");
$massage = $mes;  //はらへ以外のワードは無視。
}

にします。


$nameがbotにリプライした人の名前。
$postはこの場合は

ポテトキャセロール、オートミールケーキ、チキンカレーキャセロール、ブラウニー、黒豆スープ

のどれかが入ります。

もし私がカナダさんに「@ca_nada はらへ」とリプライしたとします。
そうするとカナダさんは

@silvernext 銀次麻呂さん、お腹すいたんですか?うーん、ではオートミールケーキ食べますか?

のような返信をしてくれます。


反応させたい特定ワードが1つ以上(ほとんどはそうだと思いますがw)のとき
else if を使ってください。


例えば、ちゅっという言葉に反応させたいなら

$kiss=array("台詞1",
"台詞2",
"台詞3",
"台詞4",
"台詞5");

を作って

if(! empty($reply_name)){
if(stristr($var, "はらへ")){
$key = array_rand($harahe);
$post = $harahe[$key];
$massage ="@".$reply_name." ".$name."麻呂さん、お腹すいたんですか?うーん、では".$post."食べますか?";
}
else if(stristr($var, "ちゅっ")){
$key = array_rand($kiss);
$post = $kiss[$key];
$massage ="@".$reply_name." ".$name.$post;
}


else{
$mes=array("");
$massage = $mes;  //はらへ以外のワードは無視。
}

みたいに。


最後に


//読み込んだ最新idが同じ場合はスルー、違う場合は相手への返信を投稿

if($dat != $s_name){

//投稿部分は前やったのと同じ

tweet($massage ,$username,$password);

//投稿と一緒に最新idをファイルに書き込み

file_put_contents($filename,$dat,LOCK_EX);

}


if($dat != $s_name){

if($var != $var1){←加えた行

tweet($massage ,$username,$password);

//投稿と一緒に最新idをファイルに書き込み

file_put_contents($filename,$dat,LOCK_EX);

}←加えた行

}

に変更。
で、リプライするソース完成。
仮にreply.phpにしましょうか。
あ、utf-8に変えてください。


そして、前の記事に紹介したやり方でcronを設定してください。
今回はhttp://(アドレス)/test/reply.phpです。
2分間隔で動かす設定にしてください。
エラーがなかったらちゃんと動くので、これで完成です。

これで定期的に発言し、特定の言葉に反応してリプライしてくれるbotの完成です。


次回はちょっとbot作者になる時の注意です。