「ver.2.0/応用/機能追加/postRandom」の編集履歴(バックアップ)一覧はこちら

ver.2.0/応用/機能追加/postRandom - (2010/06/23 (水) 21:44:10) の1つ前との変更点

追加された行は緑色になります。

削除された行は赤色になります。

始める前に最低限''左メニューから読める設置手順すべて''を熟読しよう。&br; &color(#ff0000){''※※注意※※&br;&size(24){PHPを一切勉強しない初心者は絶対にこの項目を行わないで下さい。};&br;ただ単にコピー&ペーストするだけでは何時まで経っても初心者のままです。一つ一つPHPを理解しよう!''};&br; bot.phpやEasyBotter.phpを編集する上で、基本使いそうなPHP制御構造等は[[Twitter Bot関連リンク]]にお勧め解説サイトをリンクしています。 ※wikiの編集が分からなくて、追加してほしい項目がある場合はページ下の「コメント」から誰かに頼んで下さい。 #contents *○月○日だけ違うファイルを読み込ませ、ランダムPOSTさせたい [#mc37f673] bot.php内 $response = $eb->postRandom("data.txt"); だと通常、data.txt内の一行をランダムにPOSTします。 これを switch(date("m.d")){ case "06.01": $postfile = "specialdata.txt"; break; default: $postfile = "data.txt"; } $response = $eb->postRandom($postfile);//ランダムPOST とすることで6月1日のみspecialdata.txt内の一行をランダムPOSTします。 **○月○日から△日までだけ違うファイルを読み込まる。 [#sabc59c4] bot.php内 $response = $eb->postRandom("data.txt"); だと通常、data.txt内の一行をランダムにPOSTします。 これを switch(true){ case (date("m") == 6 && date("i") > 9 && date("i") < 16): $postfile = "specialdata.txt"; break; default: $postfile = "data.txt"; } $response = $eb->postRandom($postfile);//ランダムPOST とすることで6月10日から15日の間のみspecialdata.txt内の一行をランダムPOSTします。 *ランダムPOSTで複数のファイルからランダムに発言させたい [#taae1569] bot.php内 $response = $eb->postRandom("data.txt"); だと通常、data.txt内の一行をランダムにPOSTします。 これを $randfile = array("one.txt","two.txt");//ランダムPOST-ファイル名 $response = $eb->postRandom($randfile[array_rand($randfile)]);//ランダムPOST とすることでone.txtかtwo.txtをランダムに選び、更にtxt内の一行をランダムにPOSTします。 人格を分けて発言させたい場合、one.txtに1人格目・two.txtに2人格目のセリフを入れましょう。 **人格名をフッターに追加したい場合 [#t7fb77c2] EasyBotter.php内 //ランダムにポスト function postRandom($datafile = "data.txt"){ (略) //idなどの変換 if(preg_match("@{.+?}@",$status) == 1){ $status = $this->convertText($status); } とある部分を探して下さい。これの直後に //■■人格名フッター追加■■ switch($datafile){ case "one.txt": $reply_pattern_name = " ▲▲▲"; $status .= $reply_pattern_name; break; case "two.txt": $reply_pattern_name = " ●●●"; $status .= $reply_pattern_name; break; } を追記する。 こうすることで例えばone.txt内の「あいうえお」と言うセリフをランダムPOSTする時、「あいうえお ▲▲▲」と言った形で発言します。 *ランダムPOSTで発言を重複させない様にする [#j9bda5e7] ソースは[[Twitter Bot BBS:http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1259840844/5-6]] EasyBotter.php内の //発言を作る function makeTweet($file, $number = FALSE){ の直前に //■■ランダムPOST・重複チェック■■ function rento_check($file){ if(empty($this->_tweetData[$file])){ $this->_tweetData[$file] = $this->readDataFile($file); } $rento_limit = 10; // n個前まで投稿を記録し、二重投稿を回避する $twit_logfile = "twit_log.txt"; //$twit_logfileは存在するか? if(!file_exists($twit_logfile)){ touch($twit_logfile) or die('ファイル作成に失敗\n'); chmod($twit_logfile, 0606) or die('権限変更に失敗\n');//※パーミッションは鯖によって違います } $Posttweets = file_get_contents($twit_logfile); // 読み込み $p_tw = explode("\n", $Posttweets); // 配列に格納 $status = $this->_tweetData[$file][array_rand($this->_tweetData[$file])]; while(true) { if(in_array($status, $p_tw)){ //発言にあるか?無ければ抜ける //発言をランダムに一つ選ぶ $status = $this->_tweetData[$file][array_rand($this->_tweetData[$file])]; }else{ break; } //無ければ抜ける } $p_tw2[0] = $status;//投稿ログをローテート for( $i = 1; $i < $rento_limit; $i++ ){ //1から$rento_limit直前まで if($p_tw[$i-1]) { $p_tw2[$i] = $p_tw[$i-1]; //古いのを送る。例:$p_tw2[1] = $p_tw[0] }else{ break; } //投稿が少ない時は抜ける } $p_tw_output = join("\n",$p_tw2); //配列結合 $fp = fopen('twit_log.txt', 'w'); //ファイルオープン flock($fp, LOCK_EX); // ファイルのロック(排他制御) fwrite($fp,$p_tw_output); //ファイル書き込み fclose($fp); //ファイルクローズ return $status; //違う文を戻り値として返す } を追記する。 //ランダムにポスト function postRandom($datafile = "data.txt"){ $status = $this->makeTweet($datafile); の $status = $this->makeTweet($datafile); を $status = $this->rento_check($datafile); へ変更する。 空のtwit_log.txtを作成し、アップロードする。※ログファイル用のパーミッションに。 ※なくても自動作成するように記述はしてありますが、動かない場合もありますので自分で作成してうpするのが確実 *コメント [#u24d7adf] #comment
※wikiの編集が分からなくて、追加してほしい項目がある場合はページ下の「コメント」から誰かに頼んで下さい。 #contents *○月○日だけ違うファイルを読み込ませ、ランダムPOSTさせたい [#mc37f673] bot.php内 $response = $eb->postRandom("data.txt"); だと通常、data.txt内の一行をランダムにPOSTします。 これを switch(date("m.d")){ case "06.01": $postfile = "specialdata.txt"; break; default: $postfile = "data.txt"; } $response = $eb->postRandom($postfile);//ランダムPOST とすることで6月1日のみspecialdata.txt内の一行をランダムPOSTします。 **○月○日から△日までだけ違うファイルを読み込まる。 [#sabc59c4] bot.php内 $response = $eb->postRandom("data.txt"); だと通常、data.txt内の一行をランダムにPOSTします。 これを switch(true){ case (date("m") == 6 && date("i") > 9 && date("i") < 16): $postfile = "specialdata.txt"; break; default: $postfile = "data.txt"; } $response = $eb->postRandom($postfile);//ランダムPOST とすることで6月10日から15日の間のみspecialdata.txt内の一行をランダムPOSTします。 *ランダムPOSTで複数のファイルからランダムに発言させたい [#taae1569] bot.php内 $response = $eb->postRandom("data.txt"); だと通常、data.txt内の一行をランダムにPOSTします。 これを $randfile = array("one.txt","two.txt");//ランダムPOST-ファイル名 $response = $eb->postRandom($randfile[array_rand($randfile)]);//ランダムPOST とすることでone.txtかtwo.txtをランダムに選び、更にtxt内の一行をランダムにPOSTします。 人格を分けて発言させたい場合、one.txtに1人格目・two.txtに2人格目のセリフを入れましょう。 **人格名をフッターに追加したい場合 [#t7fb77c2] EasyBotter.php内 //ランダムにポスト function postRandom($datafile = "data.txt"){ (略) //idなどの変換 if(preg_match("@{.+?}@",$status) == 1){ $status = $this->convertText($status); } とある部分を探して下さい。これの直後に //■■人格名フッター追加■■ switch($datafile){ case "one.txt": $reply_pattern_name = " ▲▲▲"; $status .= $reply_pattern_name; break; case "two.txt": $reply_pattern_name = " ●●●"; $status .= $reply_pattern_name; break; } を追記する。 こうすることで例えばone.txt内の「あいうえお」と言うセリフをランダムPOSTする時、「あいうえお ▲▲▲」と言った形で発言します。 *ランダムPOSTで発言を重複させない様にする [#j9bda5e7] ソースは[[Twitter Bot BBS:http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1259840844/5-6]] EasyBotter.php内の //発言を作る function makeTweet($file, $number = FALSE){ の直前に //■■ランダムPOST・重複チェック■■ function rento_check($file){ if(empty($this->_tweetData[$file])){ $this->_tweetData[$file] = $this->readDataFile($file); } $rento_limit = 10; // n個前まで投稿を記録し、二重投稿を回避する $twit_logfile = "twit_log.txt"; //$twit_logfileは存在するか? if(!file_exists($twit_logfile)){ touch($twit_logfile) or die('ファイル作成に失敗\n'); chmod($twit_logfile, 0606) or die('権限変更に失敗\n');//※パーミッションは鯖によって違います } $Posttweets = file_get_contents($twit_logfile); // 読み込み $p_tw = explode("\n", $Posttweets); // 配列に格納 $status = $this->_tweetData[$file][array_rand($this->_tweetData[$file])]; while(true) { if(in_array($status, $p_tw)){ //発言にあるか?無ければ抜ける //発言をランダムに一つ選ぶ $status = $this->_tweetData[$file][array_rand($this->_tweetData[$file])]; }else{ break; } //無ければ抜ける } $p_tw2[0] = $status;//投稿ログをローテート for( $i = 1; $i < $rento_limit; $i++ ){ //1から$rento_limit直前まで if($p_tw[$i-1]) { $p_tw2[$i] = $p_tw[$i-1]; //古いのを送る。例:$p_tw2[1] = $p_tw[0] }else{ break; } //投稿が少ない時は抜ける } $p_tw_output = join("\n",$p_tw2); //配列結合 $fp = fopen('twit_log.txt', 'w'); //ファイルオープン flock($fp, LOCK_EX); // ファイルのロック(排他制御) fwrite($fp,$p_tw_output); //ファイル書き込み fclose($fp); //ファイルクローズ return $status; //違う文を戻り値として返す } を追記する。 //ランダムにポスト function postRandom($datafile = "data.txt"){ $status = $this->makeTweet($datafile); の $status = $this->makeTweet($datafile); を $status = $this->rento_check($datafile); へ変更する。 空のtwit_log.txtを作成し、アップロードする。※ログファイル用のパーミッションに。 ※なくても自動作成するように記述はしてありますが、動かない場合もありますので自分で作成してうpするのが確実 *コメント [#u24d7adf] #comment

表示オプション

横に並べて表示:
変化行の前後のみ表示:
目安箱バナー