約 5,321,043 件
https://w.atwiki.jp/easybotter_wiki/pages/26.html
※wikiの編集が分からなくて、追加してほしい項目がある場合はページ下の「コメント」から誰かに頼んで下さい。 改造方法を紹介するスレにあった「単語拾い」をver.2.0で使いたい [#c1629660]備考 [#e06b9c91] 自動フォロー返しした時にリプライで知らせたい [#ycc2942f] 鍵付きの人へ何度も話しかけてしまう場合 [#q1c3b296] 正規表現を使った言葉返しで、言葉遊びをさせる(文字列の並びを変える。) [#x3c977be]備考 [#ucd102de] 自動フォローではなく特定のリプライを貰った時のみ対象にフォロー要請&リプライする(新API対応版) [#v3f312b5]備考:フォロー告知をDMにしたい場合(リムーブは出来ません。) [#b0266ba0] 特定のリプライ反応をリプライではなくTL発言にする [#wb35bfa8] 一度のリプライでリプライ回数の制限する コメント [#fd6efe73] 改造方法を紹介するスレにあった「単語拾い」をver.2.0で使いたい [#c1629660] EasyBotter.php内 if(strpos($text,"{tweet}") !== FALSE !empty($reply)){ $tweet = preg_replace("@\.?\@[a-zA-Z0-9-_]+\s@u","",$reply- text); $text = str_replace("{tweet}",$tweet,$text); } //フッターを追加 $text .= $this- _footer; の直前に、以下を追記する。 //■■ここから名詞拾い■■ if(strpos($text,"{ran_meishi}") !== FALSE !empty($reply)){ //アプリケーションID $apiKey = "***********************"; $apitweet = preg_replace("@\.?\@[a-zA-Z0-9-_]+\s@u","",$reply- text); $apiurl = "http //jlp.yahooapis.jp/MAService/V1/parse?appid=".$apiKey." filter=9 sentence=".$apitweet; $apirss = file_get_contents($apiurl); $apixml = simplexml_load_string($apirss); //配列「meishi」を作る $meishi = array(); // 特定の単語、指定字数以下の名詞を弾きながら配列に名詞を追加 foreach($apixml- ma_result- word_list- word as $apiitem) { //拾いたくない単語 if ((ereg("ダタラ|モスマン|モコイ", $apiitem- surface)==False) (mb_strlen($apiitem- surface) 3*2)){ $meishi[]=$apiitem- surface; } } //リプライの中に名詞がない場合の単語をセット(複数設定可) if ($meishi[0] == ""){$meishi = array(" #60;censored ","×××","■■■");} //名詞をランダムに選ぶ $ran_meishi = $meishi[array_rand($meishi)]; //名詞を変換する $text = ereg_replace("{ran_meishi}", "$ran_meishi", $text); } 備考 [#e06b9c91] ぼっと倉庫がソースです。 使い方はこちらのサイトの解説をよく見ること。 自動フォロー返しした時にリプライで知らせたい [#ycc2942f] EasyBotter.php内 //自動フォロー返し function autoFollow(){ $response = $this- getFollowers(); $followList = array(); foreach($response as $user){ $follow = (string)$user- following; if($follow == "false"){ $followList[] = (string)$user- screen_name; } } foreach($followList as $screen_name){ $response = $this- followUser($screen_name); } } とある部分を探す。 foreach($followList as $screen_name){ $response = $this- followUser($screen_name); } の直後に //■■フォローした時にリプライを送る■■ foreach($followList as $rscreen_name){ $value = array("status"= "@{$rscreen_name} フォロー完了しました!"); $response = $this- setUpdate($value); $result = $this- showResult($response); $results[] = $result; } を入れる。 「フォロー完了しました!」は自由に変更してもOK。 鍵付きの人へ何度も話しかけてしまう場合 [#q1c3b296] BBSより転載です。 EasyBotter.php内 //自動フォロー返し function autoFollow(){ (略) if($follow == "false"){ を //自動フォロー返し function autoFollow(){ (略) if($follow == "false" $user- protected == "false"){ と変更する。 鍵付きの人へフォロー返しを行いません。 正規表現を使った言葉返しで、言葉遊びをさせる(文字列の並びを変える。) [#x3c977be] EasyBotter.php内 //リプライを作る (略) //リプライパターンと照合 (略) for($i=1;$i count($matches);$i++){ $p = "$".$i; $status = str_replace($p,$matches[$i],$status); } を探す。 $status = str_replace($p,$matches[$i],$status); を //■■言葉遊びする■■ if(preg_match("/言葉遊び/u",$status)){ $kotoba_asobi = $this- mb_str_shuffle($matches[$i],"UTF-8"); }else{ $kotoba_asobi = $matches[$i]; } $status = str_replace($p,$kotoba_asobi,$status); に変更する。 EasyBotter.php内ラスト } ? の直前に function mb_str_shuffle($str,$enc){ $buff = array(); while ($len = mb_strlen($str,$enc)) { $buff[] = mb_substr($str,0,1,$enc); $str = mb_substr($str,1,$len,$enc); } shuffle($buff); return implode( ,$buff); } を追記する。 備考 [#ucd102de] mb_str_shuffle()はどう書く?org betaソースです。 「言葉遊び」部分はリプライパターンに応じて変更して下さい。 この一例はリプライパターンで「『$1』…言葉遊びしてみたよ~♪」とリプライさせる時の例になります。 「『$1』…言葉遊びしてみたよ~♪」とリプライする時のみ、$1を言葉遊びさせます。 言葉遊び:$1が「あいうえお」だとすると、「あおういえ」「うえあおい」等とランダムに文字列を入れ替えます。 自動フォローではなく特定のリプライを貰った時のみ対象にフォロー要請&リプライする(新API対応版) [#v3f312b5] 「フォローして」「リムーブして」とリプライをした時にBOTに対象への処理を行う。 ※実際は「フォローして」「リムーブして」等の簡単な言葉ではないものを推薦。「フォローして。○○○(BOTの名前)」等。 reply_pattern.php $data = array();内に //半自動フォロー、リムーブ "フォローして"= array( "[[AUTOFOLLOW]]フォローしました", "[[AUTOFOLLOW]]フォローしたよ", ), "リムーブして"= array( "[[AUTOREMOVE]]リムーブしました", "[[AUTOREMOVE]]リムーブしたよ", ), を追記。 EasyBotter.php内 //リプライを作る (略) //リプライパターンと照合 (略) $re["status"] = "@".$reply_name." ".$status; を探す。 $re["status"] = "@".$reply_name." ".$status; を switch(true){ //半自動フォロー case stristr($status, "[[AUTOFOLLOW]]") $status = str_replace("[[AUTOFOLLOW]]","",$status); $followreq = $this- consumer- sendRequest("http //api.twitter.com/1/friendships/create.json",array("screen_name" = $reply["user"]["screen_name"]),"POST"); $re["status"] = "@".$reply["user"]["screen_name"]." ".$status; break; //半自動リムーブ case stristr($status, "[[AUTOREMOVE]]") $status = str_replace("[[AUTOREMOVE]]","",$status); $removereq = $this- consumer- sendRequest("http //api.twitter.com/1/friendships/destroy.json",array("screen_name" = $reply["user"]["screen_name"]),"POST"); $re["status"] = "@".$reply["user"]["screen_name"]." ".$status; break; //その他 default $re["status"] = "@".$reply["user"]["screen_name"]." ".$status; } に書き換える。 備考:フォロー告知をDMにしたい場合(リムーブは出来ません。) [#b0266ba0] switch(true){ case stristr($status, "AUTOFOLLOW") $statusxxx = str_replace("AUTOFOLLOW","",$status); $followreq = $this- consumer- sendRequest("http //api.twitter.com/1/friendships/create.json",array("screen_name" = $reply["user"]["screen_name"]),"POST"); $followreq = $this- consumer- sendRequest("https //api.twitter.com/1/direct_messages/new.json",array("screen_name" = $reply["user"]["screen_name"],"text" = "$statusxxx"),"POST"); $re["status"] = ""; break; (略) } if(stristr($status, "AUTOFOLLOW")){continue;} 特定のリプライ反応をリプライではなくTL発言にする [#wb35bfa8] EasyBotter.php内 //リプライを作る (略) //リプライパターンと照合 (略) $re["status"] = "@".$reply_name." ".$status; を探す。 $re["status"] = "@".$reply_name." ".$status; を switch(true){ //TL発言 case stristr($status, "[[TLH]]") $status = str_replace("[[TLH]]","",$status); $re["status"] = $status; $rpid = (string)$reply- id; file_put_contents($this- _logDataFile,$rpid); break; //その他 default $re["status"] = "@".$reply_name." ".$status; } に書き換える。 reply_pattern.php $data = array();内 ""= array( "[[TLH]]あれ…誰か呼んだ?", "その言葉はわからないです", ), と記入。 ランダムで 「[[TLH]]あれ…誰か呼んだ?」 が選ばれた時、リプライではなくTL上に「あれ…誰か呼んだ?」と発言する。 一度のリプライでリプライ回数の制限する EasyBotter.php内 //古い順にする $replies = array_reverse($replies_); if(count($replies) != 0){ //リプライの文章をつくる $replyTweets = $this- makeReplyTweets($replies, $replyFile, $replyPatternFile); の下に //リプライ回数の制限 ここから $reply_max = 3;//1回のreply実行でリプライできる最大数 if(count($replyTweets) $reply_max){//$replyTweetsが$reply_maxよりおおきかったら //$replyTweetsが$reply_max件になるまで配列から要素を削除 while(count($replyTweets) $reply_max){ array_splice($replyTweets,array_rand($replyTweets),1);//ランダムで1件削除 } } //リプライ回数の制限 ここまで を追加する コメント [#fd6efe73] "特定のリプライ反応をリプライではなくTL発言にする "についてなんですが、TLHとはなんでしょうか? -- みゅ子 (2010-09-16 01 23 26) TL発言=TLH これに限らず分からないのならまずは検索して調べましょ -- zero (2010-09-16 21 05 38) zeroさんありがとうございます。"TLH twitter"で検索したのですがいまいちよく分からず;次からはもっと検索してみます。すみませんでした。 それと「特定のリプライ反応をされる単語」は何処で設定できるのでしょうか?><; -- みゅ子 (2010-09-17 22 17 33) TL上の特定の単語に反応してTL発言をする、というのは可能ですか? -- フィル (2010-10-26 19 32 23) TLに反応してTL発言をするのはリプライ反応をTL発言にするの応用でできます。 -- ナナシスター (2010-11-03 18 05 32) リプライに関してreply_patternにない場合にはdata.txtからランダム発言ではなく、何も返さないようにするにはどうすればよいのでしょう -- 774 (2010-11-23 23 36 19) 「フォローした時にリプライを送る」で{name}を使いたいのですがうまくできません。どなたかご教授いただけませんでしょうか。自分でも調べてみたのですがわかりません。 -- りん (2010-12-20 16 41 08) フォロー要請&リプライする をするとどうもエラーになるのですが・・・原因分かる方いますか? -- なな (2011-04-12 23 51 31) ↑まだ分からないならBBSのTwitterBotPHP質問スレの方へ -- 通りすがり (2011-04-19 00 37 45) TLHとリプライサンプルの「([^\s、。]+?)は好き?"」「"$1おいしいです"」は併用できませんか?(動きませんでした) -- なし (2011-06-18 19 01 07) 「単語拾い」で、拾った発言を返す文章はdata.txtに書くのでしょうか? -- 774 (2011-07-07 00 35 47) ↑reply.txt -- 名無しさん (2011-07-07 20 24 33) ↑「reply_pattern.php」ではありませんか? -- (2011-07-08 01 02 17) 自動フォロー返しした時にリプライで知らせたいをDMで知らせることはできるのでしょうか。 -- 名無しさん (2011-09-06 17 27 09) 非公式RTに反応させることはできないでしょうか? -- 名無しさん (2011-09-10 01 30 13) 過去ログ内で紹介されてましたけど、EasyBotter.phpの中でRTを検索するとそれらしきところが出てきます。あとは御自分でドウゾ -- 名無しさん (2011-09-13 20 22 51) 名詞拾いで、TLの名詞を拾って、その言葉を盛り込んでTLでつぶやくというのは出来ますか? 出来るのならどこをどう改編したら良いでしょうか。 -- 名無しさん (2012-05-24 22 02 30) リプライをもらったツイートに対してfavをする機能はどのように実装しますか -- 名無しさん (2012-07-02 20 27 11) 特定の言葉がTL上にあるとき、favをする機能の実装はどうすればできますか -- 名無しさん (2012-07-02 20 30 28) Ver2.5を新APIにしたら半自動フォロー&リムーブが出来なくなりました…コピペしただけなので、こうなった理由が分からず困ってます; -- 名無しさん (2012-10-19 23 35 08) ↑Twitterがまた仕様変更したようですね。easybotterの作者さんが修正版を近々出すそうなので待ちましょう。 -- 名無しさん (2012-10-20 15 07 20) 新APIにしてから、viaが自分の設定したのとAPIで2重反応されます。私だけでしょうか? -- 名無しさん (2012-11-15 16 01 40) バージョン2.1.1でも『特定のリプライ反応をリプライではなくTL発言にする』機能を使いたいのですが、どうすれば使えますか? -- 七種 (2012-12-29 23 36 47) 2.1.2だと上記の半自動フォローが使えないと思うのですがどう修正すればいいのでしょう…リプを返す所までは修正出来ましたがフォローを返せません… -- 名無しさん (2013-01-31 12 13 29) http //badosyan3.blog84.fc2.com/blog-date-201301.html -- 名無しさん (2013-02-01 21 11 41) ↑途中送信失礼しました。「自動フォローではなく特定のリプライを貰った時のみ対象にフォロー要請&リプライする(新API対応版) [#v3f312b5]」の部分は↑のサイトの方が参考になるかも…? -- 名無しさん (2013-02-01 21 12 29) ↑ありがとうございます、無事フォロー出来ました! -- 名無しさん (2013-02-02 02 53 34) 2.1.2で単語拾いを使うにはどうすればいいのでしょうか。エラーが出て使えません…。 -- 名無しさん (2013-02-20 03 29 33) 自動フォロー返しした時にリプライで知らせたい、の通りにやるとバージョン2.1.2では動きません。どなたか分かる方いらっしゃいませんか? -- 名無しさん (2013-02-21 13 32 05) 自動フォローではなく特定のリプライを貰った時のみ対象にフォロー要請&リプライする(新API対応版)↑の参考URLが見れません。どなたか方法わかる方いらっしゃいますでしょうか。 -- 名無しさん (2013-06-13 15 44 15) ↑自動フォローではなく特定のリプライを貰った時のみ対象にフォロー要請&リプライする(新API対応版)の参考URLが見れないのですがどなたか参考になるページを教えていただけないでしょうか。 -- 名無しさん (2013-06-13 15 45 08) 名詞拾いの件ですがリプライの単語を拾うのではなくTL上の単語を拾わせるにはどこをどう変えればいいですか? -- 名無しさん (2013-06-21 01 19 04) 自動フォローではなく特定のリプライを貰った時のみ対象にフォロー要請&リプライする(新API対応版) [#v3f312b5]と、備考:フォロー告知をDMにしたい場合(リムーブは出来ません。) [#b0266ba0]の部分について直してみました。あっているという保証はできませんが試してみてください -- 名無しさん (2013-08-02 16 07 13) 「自動フォローではなく特定のリプライを貰った時のみ対象にフォロー要請&リプライする(新API対応版) [#v3f312b5]」ですが「http //api.twitter.com/1/friendships/create.json」では動かないようです。「http //api.twitter.com/1.1/friendships/create.json」に修正したら動きました。 -- 名無しさん (2013-08-18 10 22 38) 上のコメントの方へ。ここはEBの古いバージョンの記述なので、新APIはvなしのものからv1になったときの新APIのことだと思いますよ。APIv1.1のはver.2.1版に書いたほうがよかったかもしれません。 -- 名無しさん (2013-08-18 23 58 15) いつの間にか function followUser($id) でエラー161に成ってる状態が続いていまして、フォロー返しが出来なく成ってしまいました。手動では出来ます。何が問題なのか分かりませんでしょうか? -- 名無しさん (2015-03-22 19 56 28) 名前 コメント
https://w.atwiki.jp/easybotter_wiki/pages/27.html
※wikiの編集が分からなくて、追加してほしい項目がある場合はページ下の「コメント」から誰かに頼んで下さい。 TL反応でも会話終了( [ [ END ] ] )を機能させたい。 [#d3c85f4b] コメント [#g7968718] TL反応でも会話終了( [ [ END ] ] )を機能させたい。 [#d3c85f4b] EasyBotter.php内 //タイムラインへの反応を作る function makeReplyTimelineTweets($timeline, $replyPatternFile){ (略) $replyTweets[] = $re; } return $replyTweets; } とある部分の $replyTweets[] = $re; を if(!stristr($status,"[[END]]")){$replyTweets[] = $re;} と変更する。 コメント [#g7968718] 名前 コメント
https://w.atwiki.jp/easybotter_wiki/pages/24.html
すべて外部サイトですので、各自責任を持って利用して下さい。 PHP的な問題は、教えてgooやYahoo!知恵袋でPHP質問してみるのも良いかもしれません。 PHPマニュアル お勧めPHP解説サイト cronサービス EasyBotter関連 PHPマニュアル PHP.net マニュアル よく使いそうなリンク:date関数, パターン修飾子 お勧めPHP解説サイト PHPやるなら見ておいたほうがいいサイト PHP プログラミング言語資料簡単な説明だけですが、パッとみるにはとても見やすいサイトです。 そふぃのphp入門初心者向けに1から説明されています。 PHPエラー一覧PHPエラーについて簡単に説明されています。 正規表現一覧メタ文字について簡単に説明されています。 関数リファレンス一覧 EasyBotterで緊急時BOT停止する方法 cronサービス Twitter Bot目的外でcronサービスを利用している人も沢山います。 日本人お断り、なんてことにならないよう節度ある利用をお願いします。 設置サーバーとcronサーバーとの相性もあります。 手動では動くのに、cronでは動かないなんてことも有りますので自分に合ったcronサービスを見つけて下さい。 GAE-cron ClubGAEを使った国内のcronサービス。ソース公開もあり、自分でcronサービスを設置することも出来る。 SetCronJob 海外のcronサービス無料と有料とある。登録して1か月使用されていなければ、有料コースまたはアカウント削除する催促のメールが届く Free Web Cron Service 海外のcronサービス無料。AOL、google、Yahoo、OpenID、Blogger、WordPressのアカウントがあるか、なくてもアカウント取得して使える。~~※OpenIDでログインすると、他の人の設定も見えたり変更もできるので注意 webcron.org 海外のcronサービスフランスの有料cronサービス。1週間の試用期間がある。料金はユーロで支払方法はクレジットカードかPayPal cron-job.org 海外のcronサービス無料。サーバー名に.jpが付いている物は登録出来ない?2分間隔などにしていると削除される? Cronjob.de 海外のcronサービスcron-job.orgと同じくドイツのサービス。有料と無料コースとある。日本のISPだと制限あり? EasyBotter関連 「簡単じゃない twitter bot」の作り方メモ
https://w.atwiki.jp/easybotter_wiki/pages/20.html
まずはbot.phpに書かれている説明と公式サイトの"基本の設定"解説を熟読しよう。 wikiを見ても分からないところが出てきたら質問スレッドで質問しよう! bot.phpやEasyBotter.phpを編集する上で、基本使いそうなPHP制御構造等はTwitter Bot関連リンクにお勧め解説サイトをリンクしています。 ※wikiの編集が分からなくて、追加してほしい項目がある場合はページ下の「コメントを書く」から誰かに頼んで下さい。 最初はきちんとPOST投稿されていたのに、Twitterへ投稿反映されなくなった!(bot.phpで「投稿しました」表示は出る) 最初はきちんとPOST投稿されていたのに、Twitterへ投稿しなくなった!(bot.phpへアクセスしても真っ白) POSTを○分おきにしたくてif(***)を使っているのですが、リプライまで○分おきになっちゃう! 会話終了機能が機能しないその1 その2 最初はきちんとPOST投稿されていたのに、Twitterへ投稿反映されなくなった!(bot.phpで「投稿しました」表示は出る) 発言パターンが少ないのではありませんか? 現在Twitterでは同一発言投稿が出来なくなりました(ある条件で解除されます。) 新しい発言を10つ位用意して、もう一度動かしてみましょう。 最初はきちんとPOST投稿されていたのに、Twitterへ投稿しなくなった!(bot.phpへアクセスしても真っ白) EasyBotterでは1つの発言(TL、リプライ)に対して、1度しか返信しません。 もう一度反応させたい場合は、違う発言を行って反応させてみましょう。 POSTを○分おきにしたくてif(***){}を使っているのですが、リプライまで○分おきになっちゃう! {}を閉じ忘れていませんか? リプライの記述まで{}内に入っていませんか? 一度bot.phpの中身を ?php //============================= //EasyBotterを呼び出します //============================= require_once("EasyBotter.php"); $eb = new EasyBotter(); $response = $eb- reply(2,"data.txt","reply_pattern.php"); ? とリプライ反応だけにしてみて、一つずつ追加して行きましょう。 会話終了機能が機能しない 場合によっては機能しないことがあるようです?応急処置。 その1 EasyBotter.php内 if(empty($status) || $status == "[[END]]"){ を if(empty($status) || stristr($status,"[[END]]")){ と変更する。 その2 EasyBotter.php内 //リプライを作る function makeReplyTweets($replies, $replyFile, $replyPatternFile){ (略) $replyTweets[] = $re; とある部分の $replyTweets[] = $re; を if(!stristr($status,"[[END]]")){$replyTweets[] = $re;} と変更する。
https://w.atwiki.jp/easybotter_wiki/pages/31.html
//通常のフォローユーザ、特定のユーザ、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}さんにたくさん話しかけます。", ),
https://w.atwiki.jp/easybotter_wiki/pages/14.html
cronは後回し、まずは手動でOAuth認証のためのAccess TokenとAccess Token Secretを取得する setting.phpをテキストエディタで編集しよう bot.phpをテキストエディタで編集しよう ファイルをサーバーにアップロードしようver1.42から引き継ぎの場合 bot.phpにアクセスしよう botアカウント(例:aaa_bot)へ話しかけてみよう補足 ランダムPOSTもしてみよう補足 自動フォロー返しを機能させよう TL反応をさせてみよう 最後に… 番外:cronで自動的に動かす cronは後回し、まずは手動で EasyBotter2.04beta.zipをDLしてきたらそれを解凍。 EasyBotter2.04betaフォルダの中に、いくつかファイルがあると思う。 最初はファイル名など一切変えず、簡易的に、最小限の機能を動作させてみる。 OAuth認証のためのAccess TokenとAccess Token Secretを取得する ※Twitterにはbotアカウントでログインしておくこと!! setting.phpの編集をよく見て、"このサイトでOAuth認証のキーを取得する"の通りにやってみる。 setting.phpをテキストエディタで編集しよう ここで一番大事なのは文字コードに注意して編集、保存する。 $screen_name = ""; //botのid名$access_token = ""; // Access Tokenの値$access_token_secret = ""; // Access Token Secretの値 を自分に合わせて編集するだけでOK。 編集し終わったら保存を忘れずに。 bot.phpをテキストエディタで編集しよう こちらも文字コードには気をつけて編集する。 bot.phpの中身は ?php//=============================//EasyBotterを呼び出します//=============================require_once("EasyBotter.php");$eb = new EasyBotter();$response = $eb- reply(2,"data.txt","reply_pattern.php");? だけにして保存しよう。 (この設定では、2分間のリプライに対して追リプライをするようになります。) ファイルをサーバーにアップロードしよう PHP5が使えるサーバーで、PHPが使えるフォルダ以下に適当な名前のフォルダ(例:twitbot)を作る。 使用するファイルすべてをフォルダへアップロードしましょう。 twitbot┣ PEARフォルダ(中身も全部)┣ bot.php┣ data.txt┣ EasyBotter.php┣ log.dat┣ reply_pattern.php┗ setting.php アップした.phpファイルと.datファイル(ログファイル)は、サーバーによってはパーミッションを変更(属性変更)しなければなりません。 パーミッション値は各サーバーのFAQ等に載っているはずですので、確認して下さい。 大抵はlog.datのパーミッションを変更するだけでOKです。 ref(http //image02.wiki.livedoor.jp/e/i/easybotter_wiki/f88d16c9813c1397.png, 600) (アップロードの例。もちろん細部はレンタルサーバで異なる) 「ファイルをサーバーにアップロードしよう」項目はPHP以前にホームページ作成の基本知識です。~~これが分からなければEasyBotter設置は難しいです。ホームページ作成の知識から学びましょう。~~それが出来ないのであれば、厳しく言うと諦めた方が吉(プログラムの暴走などはサーバーへの負担、他のユーザーへ迷惑を掛ける原因になりえます。)~~簡易的にTwitter Botを作れるtwitter bot GENERATORを利用することをお勧めします。 ver1.42から引き継ぎの場合 一部のファイルは引き継ぎ可能です。 2.0と違う所はServicesフォルダとreply_random.phpは不要になるので、削除しても構わない。 OAuth認証が済んでいる人は、setting.phpの4つのキーはすでに取得したものを記入する。 リプライ(パターン外の反応)を使うならtw.txtをdata.txtにファイル名を変えるか、bot.php内のdata.txtになっているところのファイル名をtw.txtに変える。 TLリプライを使うときは、reply_pattern.phpをコピーして使えますが、ファイル名を変えることを忘れずに! 詳しくは下のTL反応させてみようの注意にて。 ※reply_pattern.php内の$reply_patternを、$dataに変更しておく必要があります。 任意のフォルダ名┣ PEARフォルダ(中身も全部)┣ bot.php┣ data.txt(tw.txtにあたるもの)┣ EasyBotter.php┣ log.dat┣ reply_pattern.php(リプライ用ファイル)┣ reply_pattern.phpのファイル名を変えたもの(TLリプライを使う場合) 例 tl_pattern.php┗ setting.php となります。■色のものは1.42から引き継いで使えるもの bot.phpにアクセスしよう サーバーへアップロードしたbot.phpにアクセスしてみよう(例:http //~/twitbot/bot.php) 真っ白なページに「2分以内に受け取った@はないようです。」と表示されれば準備は整いました! 英語で何やら文字が並んでいる場合は、PHPエラーが発生しています。 OAuth認証コードに間違いはないか、パーミッション値が合っているか、setting.phpやbot.phpでどこかおかしな記述をしていないかチェックし直そう。 botアカウント(例:aaa_bot)へ話しかけてみよう @aaa_bot おはよう!@aaa_bot 今日の運勢教えて! のどれかを、自分の本アカウントから発言し、botへリプライしてる。 その後、サーバーへアップしたbot.php(例:http //~/twitbot/bot.php)へアクセスする。 Twitterへの投稿に成功しました。~~@aaa_botに投稿したメッセージ:@本アカウント名 Good morning, master. http //twitter.com/aaa_bot/status/******** か Twitterへの投稿に成功しました。~~@aaa_botに投稿したメッセージ:@本アカウント名 おはようございます、御主人様 http //twitter.com/aaa_bot/status/******** のいずれかが表示されれば、botのリプライ機能は成功です! http //twitter.com/aaa_bot/へアクセスし、投稿されているかチェックしてみよう。 補足 初期のままでは 「おはよ」「今日の運勢」「こんにちは」「こんにちわ」「こんちは」「こんちわ」「◯◯は好き?」「会話終了」 という言葉を含まないリプライへは、data.txtの中のどれか1行を追リプライします。 ランダムPOSTもしてみよう bot.phpの中身を ?php//=============================//EasyBotterを呼び出します//=============================require_once("EasyBotter.php");$eb = new EasyBotter();$response = $eb- reply(2,"data.txt","reply_pattern.php");$response = $eb- postRandom("data.txt"); ? にして保存しよう。再度bot.phpをサーバーへアップロードする。 $response = $eb- postRandom("data.txt"); を追加することにより、bot.phpへアクセスした際data.txtの中のどれか1行を発言するようになります。 その後、サーバーへアップしたbot.php(例:http //~/twitbot/bot.php)へアクセスする。 Twitterへの投稿に成功しました。~~@aaa_botに投稿したメッセージ:コメント http //twitter.com/aaa_bot/status/******** と表示されればランダムPOSTは成功です! "コメント"は いろはにほへと ちりぬるをわかよたれそ つねならむうゐのおくやま けふこえてあさきゆめみし ゑひもせすん のいずれか。 補足 $response = $eb- postRandom("data.txt"); ではなく $response = $eb- postRotation("data.txt"); を追加した場合、data.txtの中の1行目を発言します。 2回目にアクセスした時は2行目を発言します。 !実際はすべて1行目を発言している。 1行目を発言した際、1行目にあった文章を一番下の行へ移動させ、2行目だったものが1行目になり、txtが改変保存される。 次回アクセス時に1行目(その本来2行目だったもの)をまた発言する。 ※注意※~~この機能を利用する場合はdata.txtのパーミッションを、ログファイル用パーミッション値へ変更すること!!(例:666) 自動フォロー返しを機能させよう 自分の本アカウントと、aaa_bot互いにフォロー/フォロワー関係を解除して下さい。 Twitterの仕様変更により、フォロー返しは最新APIへの変更をしないと動作しません。 bot.phpの中身を ?php//=============================//EasyBotterを呼び出します//=============================require_once("EasyBotter.php");$eb = new EasyBotter();$response = $eb- reply(2,"data.txt","reply_pattern.php");$response = $eb- postRandom("data.txt");$response = $eb- autoFollow();? にして保存しよう。再度bot.phpをサーバーへアップロードする。 $response = $eb- autoFollow(); を追加することにより、bot.phpへアクセスした際、botアカウントをフォローしている人つまりフォロワーを自動でフォローするようになります。 本アカウントでTwitterにログインし、botアカウントをフォローする(この時、まだbotアカウントで本アカウントをフォローしない!) その後、サーバーへアップしたbot.php(例:http //~/twitbot/bot.php)へアクセスする。 (リプライ、POSTと違って自動フォロー返し云々のメッセージは表示されません。) http //twitter.com/にアクセスし、botアカウントが本アカウントをフォローしていれば自動フォロー返しは成功です! TL反応をさせてみよう bot.phpの中身を ?php//=============================//EasyBotterを呼び出します//=============================require_once("EasyBotter.php");$eb = new EasyBotter();$response = $eb- reply(2,"data.txt","reply_pattern.php");$response = $eb- postRandom("data.txt");$response = $eb- autoFollow();$response = $eb- replyTimeline(2,"reply_pattern.php");? にして保存しよう。再度bot.phpをサーバーへアップロードする。 $response = $eb- replyTimeline(2,"reply_pattern.php"); を追加することにより、bot.phpへアクセスした際、TL上の反応語句に反応し対象へリプライするようになります。 本アカウントとbotアカウントがフォロー/フォロワーの状態で こんにちは と、本アカウントで発言する。 その後、サーバーへアップしたbot.php(例:http //~/twitbot/bot.php)へアクセスする。 Twitterへの投稿に成功しました。~~@aaa_botに投稿したメッセージ:こんにちはこんにちは! http //twitter.com/aaa_bot/status/******** と表示されればTL反応は成功です! !!注意!!~~botを実際運用する時は、TL用のパターンファイルを別に用意して下さい。(例:tl_pattern.php)~~リプライのパターンファイル(reply_pattern.php)をTL反応と共有してしまうと、多様な言葉に反応しスパムbot化してしまいます!! 最後に… このページでは一通り最低限の機能を動作させる為に、なるべく初期設定のままで解説を行いました。 が、実際に稼動させる際について注意したいのがdata.txtの扱い方です。 通常POSTとリプライで共有している状態かと思いますが、通常POST用とリプライ用で別にファイルを作ることをおすすめします。 例:通常POST用→data.txt リプライ用→replydata.txt data.txtをコピーして改名するか、新規テキストファイルを作り(※文字コード等に注意)編集しましょう。 これでEasyBotterで出来る機能すべてを使いました。 あとはPHPを学び、EasyBotter.phpやreply_pattern.phpを編集することで色々な機能を自分なりにつけていこう。 番外:cronで自動的に動かす 「cronは後回し!まずは手動で動かそう!」の項目すべてが問題なく終了したら、次はcronを使って自動化してみよう。 ここで使うcron(クーロン、クローン、クロン)とは定期的に自動でファイルにアクセスしてくれるものです。 毎回手動でアクセスしていては疲れますね。 それを時間設定してプログラムで自動的にファイルにアクセスしてくれるもの(叩くという言い方するところもあり)と考えてくれればいいです。 手動で1分毎、2分毎にアクセスしていれば疲れるように、自動プログラムとはいえcronの間隔が短ければ短いほどサーバーの負担は大きくなります。 それをよく考えて、適度な時間に設定しましょう cronサービスは自分の環境に合ったものを探そう設置サーバーとcronのサーバーの相性が悪くて、うまく作動しないこともあります。~~無料サーバー+無料cronの組み合わせは精度が低い場合が多いです。気になるようでしたら~~有料サーバー+有料cronにするか、自宅サーバー化して動かすかにしましょう。~~精度が低くて話にならないとクレーム付けるのはお門違いです。 有料サーバーが提供しているcronを使用する場合は、各レンタル元の注意はちゃんと読みましょう~~レンタル元から最短でも何分間隔でと書かれています。設置解説を公開している所もありますが、意味が分からなければ~~まずその単語を理解してからにしましょう。解説サイトや掲示板でレンタル元が指定した時間より短い間隔で○分で~~動かしていると言っているところもありますが、乗せられないように。 ~~間違った設定はレンタル元も監視しているとはいえ、一時的に他ユーザーを巻き込んで停止処分されてしまいます。~~すでにいくつかのレンタルサーバーで、巻き添えを食らって一時停止を食らった人達もいます。注意しましょう。~~無理だと思ったら削除して、他で提供しているcronに変えた方がいいです cronの間隔は最低でも2分以上にしようあまり間隔が短いと、サーバーに負荷が掛かる&うまく動作しないことがあります。
https://w.atwiki.jp/easybotter_wiki/pages/34.html
最新APIへの変更 Twitter側の仕様変更がありましたので、EasyBotterで使用しているTwitter APIを最新のものに変更しなければなりません。 以下の解説は2011年8月12日現在の情報です。 APIとは? APIとは「Application Program Interface」または「Application Programming Interface」のことです。 参考:Wikipedia アプリケーションプログラミングインタフェース EasyBotterではリプライやタイムラインの取得、フォロー・フォロワーのIDや名前を取得、などの際にTwitterAPIを使用しています。 古いTwitter APIを使用し続けていると、挙動がおかしくなったり、全く機能しなくなるおそれがありまです。 今後もTwitter側の仕様変更などでAPIが変更になる場合があるかも知れませんので、公式情報を定期的に確認しましょう。 API更新方法 EasyBotter.php のパーミッションを 666 に変更してから、 次のスクリプトを replace.php など適当な名前でEasyBotter.phpと同じディレクトリにアップロードして、 ブラウザなどから実行してください。 またはbot.phpの中に ?php ~~ ? の~~の部分を貼り付けて、bot.phpから実行してもかまいません。 ただしbot.phpから実行する場合、書き換え処理が終了したら、このコードは削除してください。 自動で更新するのが不安な場合は、下記の表に従って手動で書き換えても大丈夫です。 ?php $target = "EasyBotter.php"; echo file_put_contents($target,str_replace( replies.xml , mentions.xml , preg_replace("/ps? \/\/twitter.com\/([a-z\/_]+)/","p //api.twitter.com/1/$1", file_get_contents($target))))?"多分完了しました。確認して下さい" "失敗しました"; ? EasyBotter.php の下部にまとまっている API 群が、下記の通り書き換わったかを漏れ無く確認して下さい。 コピー&ペーストの際に余計な文字(スペース等)が入ったり、必要な部分を消したりしないよう注意しましょう。 https //twitter.com/statuses/update.xml ↓ http //api.twitter.com/1/statuses/update.xml http //twitter.com/statuses/friends_timeline.xml ↓ http //api.twitter.com/1/statuses/friends_timeline.xml http //twitter.com/statuses/replies.xml ↓ http //api.twitter.com/1/statuses/mentions.xml http //twitter.com/statuses/friends.xml ↓ http //api.twitter.com/1/statuses/friends.xml http //twitter.com/statuses/followers.xml ↓ http //api.twitter.com/1/statuses/followers.xml http //twitter.com/friendships/create/".$screen_name.".xml ↓ http //api.twitter.com/1/friendships/create/".$screen_name.".xml
https://w.atwiki.jp/easybotter_wiki/pages/21.html
まずはbot.php/setting.phpに書かれている説明と、EasyBotter公式サイト、設定手順・エラー解決編を熟読しよう。 wikiを見ても分からないところが出てきたら質問スレッドで質問しよう! bot.phpやEasyBotter.phpを編集する上で、基本使いそうなPHP制御構造等はTwitter Bot関連リンクにお勧め解説サイトをリンクしています。 ※wikiの編集が分からなくて、追加してほしい項目がある場合はページ下の「コメントを書く」から誰かに頼んで下さい。 object(SimpleXMLElement)#10 (2) ~~エラーが出ます"Incorrect signature"エラー "Status is a duplicate."エラー Fatal error Uncaught~~エラーが出ます bot.phpを実行した時、ブラウザ側が文字化けする object(SimpleXMLElement)#10 (2) {~~エラーが出ます "Incorrect signature"エラー object(SimpleXMLElement)#10 (2) { ["request"]= string(20) "/statuses/update.xml" ["error"]= string(19) "Incorrect signature" } というエラーが出る。 setting.phpに間違いは有りませんか? OAuth認証コードが古いものだったりしませんか? OAuth設定項目のアプリケーション設定がBrowserになっていませんか?Clientにして下さい。 他には data.txt なり指定されたテキストファイルの文字コードが shift-jis ではありませんか? 文字コードがおかしいと投稿時にエラーがでます。 指定するテキストファイルは全て UTF-8 に変換してください。 "Status is a duplicate."エラー object(SimpleXMLElement)#10 (2) { ["request"]= string(20) "/statuses/update.xml" ["error"]= string(22) "Status is a duplicate." } というエラーが出る。 「duplicate」つまり重複です。Twitterでは同じ発言を繰り返し投稿できません。少なくとも10ツイートはあける必要があります。 これはランダム投稿用データが少ない時に発生します。 また、bot.phpでpostRandom()が同時に動く時も発生する可能性があります。 Fatal error Uncaught~~エラーが出ます Fatal error Uncaught table border="1" cellspacing="0" tr td colspan="3" bgcolor="#aaaaaa" align="center" b Exception trace /b /td /tr tr td align="center" bgcolor="#cccccc" width="20" b # /b /td td align="center" bgcolor="#cccccc" b Function /b /td td align="center" bgcolor="#cccccc" b Location /b /td /tr tr td align="center" 0 /td td HTTP_OAuth_Consumer_Request- send() /td td フルパス/PEAR/HTTP/OAuth/Consumer.php 250 /td /tr tr td align="center" 1 /td td HTTP_OAuth_Consumer- sendRequest( https //twitter. hellip; , Array, POST ) /td td フルパス/EasyBotter.php 517 /td /tr tr td align="center" 2 /td td EasyBotter- _setData( https //twitter. hellip; , Array) /td td フルパス/EasyBotter.php 528 /td /tr tr td align="center" 3 /td td EasyBotter- setUpdate(Array) /td td フルパス/EasyBotter.php 162 /td /tr tr td align="center" 4 /td td EasyBotter- re in フルパス/PEAR/HTTP/OAuth/Consumer/Request.php on line 214 Twitterサーバーと連繋がうまく行ってない時(重い時)よく出るエラーのようです。 ほかにも原因がある場合がありますが、よくわかっていません。 land.to鯖では反応するものがないと「*以内に受け取ったメッセージはありません」と表示はしますが、実際リプライを受け取って返そうとするとこのエラーが出ます。 curlが使えないことによるものだと思われます(ver1.42にOAuthをつけると、curlエラーが出て動かない。) Windows環境にてopensslが有効になってないと発生しました。 bot.phpを実行した時、ブラウザ側が文字化けする 例:"Status is a duplicate."エラーの時 Twitter縺ク縺ョ謚慕ィソ縺ォ螟ア謨励@縺セ縺励◆縲 繝ヲ繝シ繧カ繝シ蜷搾シ咫 id object(SimpleXMLElement)#10 (2) { ["error"]= string(22) "Status is a duplicate." ["request"]= string(22) "/1/statuses/update.xml" } EasyBotter.php rep.php reply_pattern.php setting.php bot.php data.txt の文字コードがUTF-8で保存してあるか確認してください。 備考:配布されているデフォルトのソースファイルではUTF-8N(UTF-8のBOMなし)になっています。
https://w.atwiki.jp/easybotter_wiki/pages/35.html
?php //============================= //EasyBotterを呼び出します //============================= require_once("EasyBotter.php"); $eb = new EasyBotter(); //$response = $eb- reply(2,"data.txt","reply_pattern.php"); //$response = $eb- postRandom("data.txt"); $response = $eb- autoFollow(); ?
https://w.atwiki.jp/easybotter_wiki/pages/29.html
※wikiの編集が分からなくて、追加してほしい項目がある場合はページ下の「コメント」から誰かに頼んで下さい。 特定のアカウントと会話(リプライ)させたくない [#o0aaf045]botと名の付くアカウントを制限する [#n9e81b80] 特定のアカウントを制限する [#v1124dd8] 特定のアカウントとのリプライ回数を制限したい [#hcd8233e]備考 [#ldfe0701]毎日ログをリセットしたい [#y24beea8] 特定のアカウントに対しては、別のリプライパターンを読み込ませたい [#g6a99bfa] 特定のアカウントは自動フォローしない [#hd86ba2c] コメント [#ub9d67da] 特定のアカウントと会話(リプライ)させたくない [#o0aaf045] EasyBotter.php内 //必要なつぶやきのみに絞る function selectTweets($response){ $replies = array(); foreach($response as $reply){ //自分自身のつぶやきを除外する $replyName = (string)$reply- user- screen_name; if($this- _screen_name == $replyName){ continue; } //RT, QTを除外する $text = (string)$reply- text; if(strpos($text,"RT") != FALSE || strpos($text,"QT") != FALSE){ continue; } $replies[] = $reply; } return $replies; } を探す。 botと名の付くアカウントを制限する [#n9e81b80] if($this- _screen_name == $replyName){ を //■■botを除外■■ if($this- _screen_name == $replyName || preg_match("@bot@i",$replyName)){ に変更する。 bot(大小文字関係なく)と名の付くアカウントに対してはリプライしなくなります。 特定のアカウントを制限する [#v1124dd8] if($this- _screen_name == $replyName){ を //■■特定の人を除外■■ $bottername = array("abcd","efgh"); if($this- _screen_name == $replyName || in_array($replyName, $bottername)){ とすることで、abcdとefghという名のアカウントに対してリプライしなくなります。 botと入ってないアカウント名のBOTを指定したい場合に使用して下さい。 特定のアカウントとのリプライ回数を制限したい [#hcd8233e] このサンプルはzkb_otさんのソースを参考にしています。 EasyBotter.php内 //リプライを作る (略) $status = ""; //リプライパターンと照合 if(!empty($this- _replyPatternData[$replyPatternFile])){ を探す。 $status = ""; の直前に //■■会話数制限(リプライ返し)■■ $filenameb = "kaiwalog.txt";//kaiwalog.txtに誰からリプライがあったか最新$botk1件記録する //$filenamebは存在するか? if(!file_exists($filenameb)){ touch($twit_logfile) or die( ファイル作成に失敗\n ); chmod($twit_logfile, 0606) or die( 権限変更に失敗\n );//※パーミッションは鯖によって違います } $botdata = file_get_contents($filenameb); $botdata2 = $botdata; $countk = substr_count($botdata2,(string)$reply- user- screen_name); $botdata = explode(",",$botdata); $kazu = count($botdata); $botkey = 1; $botk1 = "10";$botk1--;//記録件数 $botk2 = "2";//回までOK $bottername = array("abcd","efgh");//制限したいアカウント名をいれる if(preg_match("@bot@i",(string)$reply- user- screen_name) || in_array((string)$reply- user- screen_name,$bottername)){ if ($countk =$botk2){ $botkey = "0"; $botdata = implode(",",$botdata); }else{ while ($kazu $botk1){$botdatax = array_pop($botdata);$kazu = count($botdata);} $botdata=implode(",",$botdata); $botdata=(string)$reply- user- screen_name.",".$botdata; } }else{ while ($kazu $botk1){$botdatax = array_pop($botdata);$kazu = count($botdata);} $botdata=implode(",",$botdata); $botdata=(string)$reply- user- screen_name.",".$botdata; } file_put_contents($filenameb,$botdata); if($botkey == "0"){ continue; } を追記し、保存する。 空のkaiwalog.txtを作成し、EasyBotter.phpと共にサーバーへアップロードする。 kaiwalog.txtはログファイル用のパーミッションにする。 ※作成しなくても自動作成するようにしてありますが、自分で作成してうpするのが確実 備考 [#ldfe0701] リプライをくれたアカウント名を最新10件記録します。 そのうち、bot(大小文字関係なく)と名の付くアカウントから3回目のリプライにはリプライ返ししません(2回まではリプライをする。) abcdとefghという名のアカウントに対しても制限します。 ↑botと入ってないアカウント名のBOTを指定したい場合に使用して下さい。 毎日ログをリセットしたい [#y24beea8] bot.php内 $eb = new EasyBotter(); の直後に //■■リプライした人の記録リセット■■ if(date("H-i")=="00-00"){$fp = fopen("kaiwalog.txt", "w");fclose($fp);} を入れてください。 0時0分にアクセスした時、ファイルを真っ白にしてから処理を行います。 特定のアカウントに対しては、別のリプライパターンを読み込ませたい [#g6a99bfa] EasyBotter.php内 function makeReplyTweets($replies, $replyFile, $replyPatternFile){ if(empty($this- _replyPatternData[$replyPatternFile]) !empty($replyPatternFile)){ $this- _replyPatternData[$replyPatternFile] = $this- readPatternFile($replyPatternFile); } (略) foreach($this- _replyPatternData[$replyPatternFile] as $pattern = $res){ 1. if(empty($this- _replyPatternData[$replyPatternFile]) !empty($replyPatternFile)){ の直後に $org_repfile = $replyPatternFile;//デフォルトのファイル名を保管 を追記する。 2. foreach($this- _replyPatternData[$replyPatternFile] as $pattern = $res){ の直前に //■■特定の人には別パターン■■ $userName = (string)$reply- 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 $userName == "abcd" //abcdというアカウント名に対して case $userName == "efgh" //efghというアカウント名に対して $replyPatternFile = "xxx_pattern.php";//xxx_pattern.phpを適用する $this- _replyPatternData[$replyPatternFile] = $this- readPatternFile($replyPatternFile); break; default //それ以外 $replyPatternFile = $org_repfile;//デフォルトのパターンファイル名 } または //■■特定の人には別パターン■■ $userName = (string)$reply- user- screen_name; if(stristr($userName, "bot")){//botと名のつくアカウント名に対して $replyPatternFile = "bot_pattern.php";//bot_pattern.phpを適用する $this- _replyPatternData[$replyPatternFile] = $this- readPatternFile($replyPatternFile); }else if($userName == "abcd" || $userName == "efgh"){ $replyPatternFile = "xxx_pattern.php";//xxx_pattern.phpを適用する $this- _replyPatternData[$replyPatternFile] = $this- readPatternFile($replyPatternFile); }else{ $replyPatternFile = $org_repfile;//デフォルトのパターンファイル名 } を追記する。 特定のアカウントは自動フォローしない [#hd86ba2c] EasyBotter.php内 foreach($followList as $screen_name){ $response = $this- followUser($screen_name); } を foreach($followList as $screen_name){ //■■xxxはフォロー返ししない■■ if(!preg_match("@bot@i",$screen_name)){ $response = $this- followUser($screen_name); } } と変更する。 例ではbotと名のつくアカウントすべて。 コメント [#ub9d67da] 特定のアカウントへのリプライ回数制限を特定ではなく総てのIDに対して10回中4回以上制限するにはどこの記述を替えるのがいいでしょうか?ワイルドカード?とか思って調べてみたんですがうまく動きませんでした。どなたかわかる方いたら教えてください。 -- 名無しさん (2010-11-17 16 38 42) 「特定のアカウントに対しては、別のリプライパターンを読み込ませたい 」をそのままコピペすると、Warning Invalid argument supplied for foreach() が、環境によって出るみたい。その時、foreach((array)$this- _replyPatternData[$replyPatternFile] as $pattern = $res){ に変更すると、解決します。と報告。 -- ナナシ (2010-12-21 22 02 49) 「特定のアカウントに対して別のリプライパターン」を「時間分けポスト」と併用しているのですが、こちらが返したリプライに対するさらなるリプライに、反応語がないとArreyで返してしまいます。対策はありますでしょうか? -- 名無しさん (2011-01-21 08 09 06) 特定のアカウントのTLに対し、個別にリプライパターンを読ませたい場合、上記の「リプライパターンの個別設定」を利用しようとしてるのですがなぜかうまくいきません。どなたかわかりますでしょうか? -- 名無しさん (2011-02-03 00 14 56) 特定のIDに対してTL反応のみさせず、リプライには通常通り返信できるようにしたいのですが可能でしょうか? -- 名無しさん (2011-06-03 01 31 00) 「特定のアカウントとのリプライ回数を制限したい」で特定のIDは制限したまま、botの回数制限は外したいんですが、何か方法はありますか? -- 名無しさん (2011-06-12 23 08 26) ↑「特定のIDは制限したまま、botの回数制限は外したい~」解決しました。 -- 名無しさん (2011-06-16 17 52 22) 「特定のアカウント」ではなく、「特定の単語」でリプライパターンファイルを分ける方法があれば知りたいのですが -- 名無しさん (2011-12-14 00 13 44) 新verだと上記の記述が変わるので、使えないですよね・・・。 -- 名無しさん (2012-11-03 12 11 25) 一応変更したらうまくいった部分書いておきますね。「$userName = (string)$reply- user- screen_name; 」を「$userName = (string)$reply["user"]["screen_name"]; 」にするだけでちゃんと動きます。ただ、これで正解かは不明です。 -- もの (2012-11-03 14 41 52) 『特定のアカウントに対しては、別のリプライパターンを読み込ませたい』のリプライパターンは1アカウントで複数ファイルを用意できるのでしょうか? -- 未熟者 (2013-01-17 23 27 40) 特定のアカウントとのリプライ回数を制限したい [#hcd8233e]は2.1では機能しないのでしょうか。早急に必要なのですが、どこをどうしたら良いのかわからず…。 -- 名無しさん (2013-01-24 19 04 36) 上に書いた者ですが、会話回数制限も、 先に書かれていた方を参考にして 『(string)$reply- user- screen_name』の部分を全て『(string)$reply["user"]["screen_name"]』に置換したら『kaiwalog.txt』に記録され、2.1でも使えました。お騒がせしました。 -- 名無しさん (2013-01-26 15 21 04) TL反応の場合分けは$userName = (string)$tweet["user"]["screen_name"]でいけるとおもう -- 名無しさん (2013-07-17 17 57 45) 名前 コメント