EasyBotter 非公式wiki

replyTimelineChangeByUser

最終更新:

匿名ユーザー

- view
だれでも歓迎! 編集
//通常のフォローユーザ、特定のユーザ、Bot、ごとにタイムライン反応用パターンファイルを変えるサンプルです。
//Bot宛に決まった台詞で話しかけることで特定のユーザリストに追加されます。
//タイムライン反応を作成するときに、特定のユーザリストを見て、反応ファイルを変更します。
//動作保証はしません
 
 
//EasyBotter 本体
 
//====================
//function makeReplyTweets
//冒頭($replyTweets = array(); のあとあたり)に以下の2行を追加
        $aryAdduser = array();
        $aryDeluser = array();
 
//「if(empty($status) || $status == "[[END]]"){」の前に以下を追加
 
            //タイムライン反応するユーザリストに追加
            if (stristr($status, "[[REPTL]]")) {
                $user = (string)$reply->user->screen_name;
                $aryAdduser[] = $user;
                $status = str_replace("[[REPTL]]", "", $status);
            }
 
            //タイムライン反応するユーザリストから削除
            if (stristr($status, "[[NOREPTL]]")) {
                $aryDeluser[] = (string)$reply->user->screen_name;
                $status = str_replace("[[NOREPTL]]", "", $status);
            }
 
 
//「return $replyTweets;」の前に以下を追加
 
        //--------------------
        //タイムライン反応ユーザのファイルへの追加と削除
        $userfname = "replyTLusers.txt";
        if (count($aryAdduser) > 0 || count($aryDeluser) > 0) {
            if (file_exists($userfname) == false) {
                touch ($userfname);
                chmod($userfname, 606);
            }
            $buf = file($userfname);
            $fp = fopen($userfname, "a+");
            flock($fp, LOCK_EX);
            $users = array();
            foreach($buf as $u) {
                $u = trim($u);
                array_push($users, $u);
            }
 
            //追加
            $users = array_merge($users, $aryAdduser);
            $users = array_unique($users);
 
            //削除
            foreach ($aryDeluser as $u) {
                for ($i = 0; i < count($users); $i++) {
                    if (strcmp($users[$i], $u) == 0) {
                        unset($users[$i]);
                        break;
                    }
                }
            }
            //ファイルへの書き込み
            ftruncate($fp, 0);
            foreach ($users as $u) {
                fputs($fp, $u."\n");
            }
            fclose($fp);
        }
        //--------------------
 
 
//====================
//makeReplyTimelineTweets
 
//「$replyTweets = array();」の前に以下を追加する
 
        $org_repfile = $replyPatternFile;	//デフォルトのファイル名を保管
 
 
 
//「//リプライパターンと照合」の前に以下を追加する
 
            //ユーザリストを読み込む。
            $fname = "replyTLusers.txt";
            $users = array();
            if (file_exists($fname)) {
              $tmp = file($fname);
              foreach($tmp as $u) {
                $users[] = trim($u);
              }
            }
            //■■特定の人には別パターン■■
            $userName = (string)$tweet->user->screen_name;
 
            switch(true){
            case stristr($userName, "bot")://botと名のつくアカウント名に対して
                $replyPatternFile = "bot_pattern.php";//bot_pattern.phpを適用する
                $this->_replyPatternData[$replyPatternFile] = $this->readPatternFile($replyPatternFile);
                break;
            case in_array($userName, $users):
                echo " $userName -  特定ユーザ用反応 $text<br />";
                $replyPatternFile = "xxx_pattern.php"; //xxx_pattern.phpを適用する
                $this->_replyPatternData[$replyPatternFile] = $this->readPatternFile($replyPatternFile);
                break;
            default://それ以外
                echo " $userName -  デフォルト反応 $text<br />";
                $replyPatternFile = $org_repfile;        //デフォルトのパターンファイル名
            }
 
//====================
//====================
//通常の@でリプライを返すパターンファイルに以下を追加。台詞などは適時変更OK。[[NOREPTL]] と [[REPTL]] が入っていることが必要。
 
    "話し?かけないで" => array(
        "[[NOREPTL]]{name}さんにたくさん話しかけるのをやめます。",
    ),
    "話し?かけて" => array(
        "[[REPTL]]{name}さんにたくさん話しかけます。",
    ),
 

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

目安箱バナー