twitterでbotを作る番外編3・空返信をなくす
これにちょっとバグがありました。返信リストがうまく取得出来なかった場合、先頭に@をつけた空返信を発してしまうというもの。
対策は、つぶやきにユーザー関数を使っている場合…
$nameがnullの場合、戻り値にもnullに代入。ポスト時に空かどうか調べて、空だったらポストしない。
//ゴチャゴチャするので、返信のセリフ組み合わせはユーザー定義関数で。 $message = serif($reply_name,$name,$com); //かえって来た値がnullじゃない場合のみ投稿する if ($message != null){ tweet($message ,$username,$password); } //中略 function serif($reply_name,$name,$com){ //中略 if($reply_name != null){ //$reply_nameが空じゃなかったらスクリーンネームに@を付ける $reply_name = "@$reply_name"; //RTに対する返信もしないように戻り値をnullに代入 if(stristr($com, "RT")){ $kara = null; $return = $kara; } else if(stristr($com, "占い")){ $key = array_rand($uranai); $post = $uranai[$key]; $return = $reply_name." ".$post; } //中略 //戻り値。 return $return; }else{ //$reply_nameが空のときはnullになる $kara = null; return $kara; } }
全て前回の付け足しです。他にも書き方はいろいろあると思います。
とにかく、$reply_nameその他が空だったら書き込む動作にいかない、って考えればいいかと。
phpを少し理解できるのなら、別の方法でも書けると思います。
最初っから組み込んでいればいいものを、スミマセン。とりあえず。