Entry

2013年03月

[EasyBotter2.1]名前の@以降を消す、他

EasyBotterのバージョンアップにより、これまでネットで拾ってきた改造がそのまま使えない事態がしばしば。

これまでお世話になったお礼は他の人に還元しよう、というわけで、こちらで施した対策を羅列します。
※php知識ほぼゼロの素人改造ですので、参考程度にして実装テストはローカルでお願いします。
※また、おかしい点がありましたら教えて頂けると助かります。


ユーザーネーム中の半角@を全角の@に変換する2.1

参考→BOT作成メモ – 特定IDの呼び名を変更(下部)

EasyBotter.phpから以下を探します。

if(strpos($text,"{name}") !== FALSE){
    if(!empty($reply)){
        $text = str_replace("{name}",$reply["user"]["name"],$text);
}else{ $randomTweet = $this->getRandomTweet(); $text = str_replace("{name}",$randomTweet["user"]["name"],$text); } }

上記全体を下記に置き換える

if(strpos($text,"{name}") !== FALSE){
  if(!empty($reply)){
    $reply_name = str_replace("@","@",$reply["user"]["name"]);//アカウント名中の@を置換
    $text = str_replace("{name}",$reply_name,$text);
  }else{
    $randomTweet = $this->getRandomTweet();
    $reply_name = str_replace("@","@",$randomTweet["user"]["name"]);//アカウント名中の@を置換
    $text = str_replace("{name}",$reply_name,$text);
  }
}

応用:ユーザーネーム中の@以降を消す

参考→Yahoo!知恵袋「特定の文字以降を指定する正規表現が分かりません」

さきほどの置き換える部分をこちらにする

if(strpos($text,"{name}") !== FALSE){
  if(!empty($reply)){
    $reply_name = mb_ereg_replace("[@@].+","",$reply["user"]["name"]);
    $text = str_replace("{name}",$reply_name,$text);
  }else{
    $randomTweet = $this->getRandomTweet();
    $reply_name = mb_ereg_replace("[@@].+","",$randomTweet["user"]["name"]);
    $text = str_replace("{name}",$reply_name,$text);
  }
}

これでおそらくは@より前の部分で呼んでくれるはずです。

自動ふぁぼり機能2.1※もう使えないようです

こちらもおそらく強引なので自己責任で。
参考→BOTだってお気に入り ふぁぼり機能TwitterAPI1.1版

「タイムライン反応を作る」処理内「//リプライパターンと照合」の直前に貼る該当部分をこちらにする

//■■ここからふぁぼり
if(preg_match("/拾う単語|拾い単語/",$tweet["text"],$matches) === 1 && !preg_match("/\@/i",$tweet["text"])){
    $favoid = (string)$tweet["id_str"];
    $favuser = $tweet["user"]["screen_name"];
    if($tweet->favorited  == "true"){
        echo "favり済み $favuser--$text";
    }else{
        $value = array(
               "id"=>$favoid,"status"=>"",
               "in_reply_to_status_id"=>""
        );
        $favourl = "https://api.twitter.com/1.1/favorites/create.json";
        $this->_setData($favourl,$value);
        echo "★fav $favuser--$text";
    }
}  
//■■ここまでふぁぼり

おまけ

改造部分が後でわからなくなると困るので

//○○に関する改造ここから(該当URL)

//改造ここまで

でくくると良いかと思われます。

Pagination

  • Newer
  • Older
  • Page
  • 1