サーバーが(ry (5) TwitterBot – TLと@にreply

というわけでBotの基本、誰かの発言にreplyとか@で送ってもらったメッセージにreply。

前のこれがupdate(発言)。
$twitter->statuses->update("んゅ?");

今回見るのはTLなのでこれで。

<code>
$arg = array("since_id"=>xxxxxx);
$tl = $twitter->statuses->home_timeline($arg);
</code>
xxxxを最後に取得したステータスIDにしておくとそれ以降が取得できる。

とりあえず取得した発言を処理処理。
<code>
foreach($tl as $at){
  // 発言したひとの名前(@~~用)
  $screen_name = $at->user->screen_name;
  // 発言
  $text = $at->text;
  // 発言ID (in_reply_to用)
  $reply_id = $at->id;
  // とりあえずRTには反応しない
  if(strpos($text, "RT") !== false){
    continue;
  }
  // 自分宛を取り除いて、それ以外にも@があったら反応しない
  $raw = str_replace("@Mint_bot", "", $text, $count);
  if(strpos($text, "@") !== false){
    continue;
  }

  // 宛先を作るよ
  $message = "@".$screen_name." ";
  if($count > 0){
    // リプライあり
    if(strpos($raw, "元気?") !== false){
      $message .= "今日も元気にがんばってます~";
    }else{
      continue;
    }
  } else {
    // リプライなし
    if(preg_match("/むくり|おはよう/u", $raw) === 1){
      $message .= "おはようございます♪";
    }else{
      continue;
    }
  }

  // データを設定
  $arg = array("status"=>$message, "in_reply_reply_to_status_id"=>$reply_id);
  // つぶやく
  $twitter->statuses->update($arg);
}
</code>

疲れた・・・実際のソースと違うから即動かないかもしれないけどこんな感じです。