Twitterbot作り 〜リプライさせよう〜
ぼんじゅーる、銀次です。
今回で特定の言葉に反応してリプライすることができるbotが作れると思います。
今まで、長文でパートが多いのに読んでくださいありがとうございました。
次回でbot作り記事は終了です。
超初心者の銀がbotを作れた - 銀さんのbot 〜不完全〜で紹介した
「2009-08-08 - プログラミングを始める10の理由([php][twitter]phpでtwitterのbotを作る(返信編))」
を見ながら、私の記事も見ていただくと良いかな〜と思います。
元記事からのコピペ多々あります。
ではスタート。
2009-08-08 - プログラミングを始める10の理由の[php][twitter]phpでtwitterのbotを作る(返信編)
のソースをコピーしてください。
新規ファイルボタンを押して、コピーしたソースをペーストしてください。
このソースをちょいちょい変えます。
まず、
$host = "http://twitter.com/statuses/mentions.xml?count=1"; //@返信一覧の最新一件
を
に変更。
次は、
$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作者になる時の注意です。