twitterのbotが自動フォロー返しなくなった

このQ&Aのポイント
  • 最近まで動いていたTwitterのbotが、フォロワーが1000人を超えたあたりから自動フォロー返しをしなくなってしまいました。EasyBotterを使用しており、bot.phpファイルに$response = $eb->autoFollow(); を追加し、EasyBotter.phpファイルに自動フォロー返しの処理を記述しています。
  • 質問をしたところ、回答として「最新のAPIを確認し、公式でフォロー数の規定を確認してください」とのことでした。APIに関する知識が不足しているため、最新のAPIの確認方法が分かりません。どう対処すれば良いでしょうか?
  • 公式のフォロー数規定は超えていないようですので、問題はAPIに関連している可能性があります。APIの最新情報を入手するためにはどのような手順を踏めば良いでしょうか?
回答を見る
  • ベストアンサー

twitterのbotが自動フォロー返しなくなった

基本はEasyBotterで作ってあります 【バージョン】 Ver2.04beta 【設置鯖名】 @PAGES 【PHPのバージョン】5 【手動】 フォロー返し以外は手動も自動も正常に動いています 【実行】 GAE-Cron 【実行間隔】 2分間隔 bot.phpに $response = $eb->autoFollow(); を入れて、 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 $rscreen_name){ $value = array("status"=>"@{$rscreen_name} フォローしました"); $response = $this->setUpdate($value); $result = $this->showResult($response); $results[] = $result; } } を入れてあります。 最近まで動いていたのですが、 フォロワーが1000人を超えたあたりからなぜか動かなくなりました。 というのをEasyBotter初心者質問スレ3(http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1287944674/)で質問したところ、 「最新のAPI確認 公式でフォロー数規定確認 」 という回答をいただきました。 確認してみたのですが 公式のフォロー数規定は超えてないようです 最新のAPIというあたりから勉強不足でよくわからないのですが、 どうしたらいいのでしょうか? よろしくおねがいします

  • 310ao
  • お礼率86% (303/349)
  • PHP
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • bwa
  • ベストアンサー率100% (1/1)
回答No.1

TwitterのAPIの仕様変更が原因らしいです。 参考URLの案内で解決できます。

参考URL:
http://blog.tseb.net/2011/06/easybotter205.html
310ao
質問者

お礼

bot.phpたたいたら一気にフォローメッセージが・・・! わああありがとうございますできました!!助かりましたー!

関連するQ&A

  • TwitterのBotをEasyBotter2.0+@Pagesの無料

    TwitterのBotをEasyBotter2.0+@Pagesの無料サーバで運用しています。 そこでPHPプログラムの書き換えに関して質問です。 自動フォロー返し~こちらからのフォロー時にリプライを飛ばすのを 下記のようにやっています。 //■■フォローした時にリプライを送る■■ foreach($followList as $rscreen_name){ $value = array( "status"=>"@{$rscreen_name} A", "status"=>"@{$rscreen_name} B", "status"=>"@{$rscreen_name} C", "status"=>"@{$rscreen_name} D", ); $response = $this->setUpdate($value); $result = $this->showResult($response); $results[] = $result; } 3行目~6行目のA,B,C,D4種類のリプライをランダムに 出力したいのですが、上記だとDしか出力しません。 PHPの基礎知識がなく、けっこう調べたのですが 分かりません・・・ どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • ツイッターbot:特定のアカウントへのリプライの事

    http://pha22.net/twitterbot/2.0/faq.php http://www26.atwiki.jp/easybotter_wiki/pages/1.html 主にこちらのサイトを参考にしてツイッターのボットを製作しています。 一応それなりに動いて稼働してはいますが、特定のアカウントに対して別のリプライパターンを読み込ませる、というところで躓いております。 上記のサイトはもちろん他のサイトも参考にしてphpを打ち込みましたが、如何せんphpへの理解がまだまだ足りておらず、どこが分からないのかもよく分かっていません。 曖昧な質問で申し訳ありませんが、こうしたらどうか?などのアドバイスをお待ちしております。 EasyBotter ver2.1.1 サーバー:@pages エディタ:Terapad FTP:FFFTP cron:My Free Web Cron Service 【】の部分を書き換えた //■■特定の人には別パターン■■ $userName = (string)$reply->user->screen_name; switch(true){ case stristr($userName, "【ユーザーID】")://【ユーザーID】と名のつくアカウント名に対して $replyPatternFile = "bot_pattern.php";//bot_pattern.phpを適用する $this->_replyPatternData[$replyPatternFile] = $this->readPatternFile($replyPatternFile); break; default://それ以外 $replyPatternFile = $org_repfile; //デフォルトのパターンファイル名 } と $org_repfile = $replyPatternFile; //デフォルトのファイル名を保管 は指定の場所にコピペ済みです。

  • twitterAPIを利用してツイート一覧を取得

    <?php //twitteroauth.phpを読み込み require_once dirname(__FILE__) .'/twitteroauth.php'; //検索ワード配列 $keyword_list = array("OKWave","yahoo知恵袋"); //最大検索数 $countmax = 10; //twitterAppsで取得 $consumerKey = '*****'; $consumerSecret = '*****'; $accessToken = '*****'; $accessTokenSecret = '*****'; $to = new TwitterOAuth( $consumerKey, $consumerSecret, $accessToken, $accessTokenSecret ); //Twitterで検索するワード //複数の場合はORかANDを使う $key = ""; $size = count($keyword_list); for($i=0;$i<$size;$i++){ $keyword = $keyword_list[$i]; $key .= $keyword; if($i<$size-1){ $key .= " AND "; } } //オプション設定 //countmaxは最大検索数 $options = array('q'=>$key,'count'=>$countmax,'lang'=>'ja'); //検索 $json = $to->OAuthRequest( 'https://api.twitter.com/1.1/search/tweets.json', 'GET', $options ); $jset = json_decode($json, true); //tweetidを取得 foreach ($jset['statuses'] as $result) { //ローマ字の名前 $screen_name = $result['user']['screen_name']; //ユーザーID(数字) $id = $result['user']['id']; //ユーザー名 $name = $result['user']['name']; //ユーザーアイコン画像URL $link = $result['user']['profile_image_url']; //該当ツイート $content = $result['text']; //更新日 $updated = $result['created_at']; $time = date("Y-m-d H:i:s",strtotime($updated)); //不明なものはprint_rで見ればいい //print_r($result); echo "<img src='".$link."''>"." | ".$screen_name." | ".$id." | ".$name." | ".$content." | ".$time." "; } ?> このコードで特定のワードを含んだツイートを取得して【並び替えてから】表示したいのですが、並び替えがうまくできません。 ランダムや新着順、リツイート順などで並び替えることは可能でしょうか。 可能であれば、並び替えの為に必要なコードを教えていただけませんか。

    • ベストアンサー
    • PHP
  • Basic認証: PHP_AUTH_USERが

    環境:CentOS6.3, PHP Version 5.3.3, Apache/2.2.15 (CentOS) ,MySQL Server version 5.1.61 (Client API versionも同じ) です。テーブルmembers にname,password の2欄があり、データがそれぞれ、taro , abc と入っています。  ここで phpを下記のように書きました。 1 <?php 2 // データベースに接続      中略 7 8 // 認証処理(Basic認証) 9 if (!isset($_SERVER["PHP_AUTH_USER"])) { 10 header("WWW-Authenticate: Basic"); 11 header("HTTP/1.0 401 Unauthorized"); 12 exit; 13 }else{ 14 var_dump(($_SERVER)." --line_a"."<br />"); 15 print ("ユーザ名:". $_SERVER['PHP_AUTH_USER']." --line_b"."<br />"); 16 17 // 入力されたアカウントが正しいかチェック 18 $result = mysql_query( "SELECT COUNT(id) AS rows FROM `account` WHERE name = $_SERVER [ 'PHP_AUTH_USER' ] AND password = $_SERVER ['PHP_AUTH_PW' ]", $conn); 19 20 echo( $_SERVER [ 'PHP_AUTH_USER' ]."-".$_SERVER ['PHP_AUTH_PW' ]."--line_c"."<br />"); 21 echo($result."--line_d"."<br />"); 以下略 これでブラウザから認証を経てログインすると、 string(20) "Array --line_a " ユーザ名:taro --line_b taro-ptaro--line_c --line_d となって、$result に値が入りません。 18行の WHERE句を外し、 $result = mysql_query( "SELECT COUNT(id) AS rows FROM `account`", $conn) or die("result取得エラー") ; とすると、 string(20) "Array --line_a " ユーザ名:taro --line_b taro-abc--line_c Resource id #3--line_d となり、$result にResource id #3 が返ります。 WHERE句で name = 'taro'  を指定し、 $result = mysql_query( "SELECT COUNT(id) AS rows FROM `account` WHERE name = 'taro' ", $conn) or die("result取得エラー");  とすると、 string(20) "Array --line_a " ユーザ名:taro --line_b taro-abc--line_c Resource id #3--line_d となり、やはり、$result にResource id #3 が返ります。password を追加し、WHERE name = 'taro' AND password = 'abc' としても、Resource id #3--line_d と出ます。 ところが、18行の taro を $_SERVER [ 'PHP_AUTH_USER' ] に置き換え、 $result = mysql_query( "SELECT COUNT(id) AS rows FROM `account` WHERE name = $_SERVER [ 'PHP_AUTH_USER' ] AND password = 'abc'", $conn) or die("result 取得エラー") ; string(20) "Array --line_a " ユーザ名:taro --line_b result 取得エラー となって、$result に値が入りません。 $_SERVER [ 'PHP_AUTH_USER' ] を’’で囲んでも同じ。 何故でしょうか? どのようにすれば不具合の解決ができるでしょうか?

    • ベストアンサー
    • PHP
  • ある文字を含む文字列のみ配列にする

    何度もすみません。 array(XX) { [0]=> array(2) { ["text"]=> string(YY) "りんご美味しい" ["name"]=> string(Z) "あいこ" } [1]=> array(2) { ["text"]=> string(XX) "富士山登りたい" ["name"]=> string(Z) "みほ" } [2]=> array(2) { ["text"]=> string(XX) "動物園行きたい" ["name"]=> string(Z) "なほ" } [3]=> array(2) { ["text"]=> string(XX) "メロン美味しい" ["name"]=> string(Z) "ゆい" } [4]=> array(2) { ["text"]=> string(XX) "お腹すいた" ["name"]=> string(Z) "まこ" } [5]=> array(2) { ["text"]=> string(XX) "数学やだー" ["name"]=> string(Z) "あいこ" } ……… } のような配列$textがあり、そこから["text"]に $keyword = array("りんご","メロン") の文字列を含むものだけ取り出したいです。 今までもらった回答を参考に $key_text = array(); foreach($text as $key => $v1){ foreach($keyword as $v2){ if(strpos($v1[text], $v2) !== false){ $key_text[] = $key; } } } と書いてみたのですが、上手く動作しません。 よろしければどこが間違っているかご指摘ください。 お願いします。

    • ベストアンサー
    • PHP
  • Twitter BOTのアイコン変更について

    Twitter BOTのアイコン変更について http://twbot.blogspot.com/2010/03/easybotter2pearhttpoauth.html?spref=tw 上記のサイトを参考に、Twitter BOTのアイコン変更をしたいと思っています。 同じく、上記サイトからDLできるソースをそのまま設置しbot.phpを実行したのですが 以下のエラーが表示され、アイコン変更は出来ませんでした。 エラー内容 Fatal error: Call to undefined method HTTP_OAuth_Consumer::sendRequest2() in /home/***/public_html/***/bot.php on line 11 line 11 のソース $response = $eb->consumer->sendRequest2('http://twitter.com/account/update_profile_image.xml', null, "POST", array('image' => 'fc.jpg','mime' => 'image/jpeg')); OAuthの関係かと思ったのですが、通常の動作(post)は出来、困惑しております。 どなたが御知恵を拝借頂けますと助かります。 宜しくお願い致します。

    • 締切済み
    • PHP
  • 配列について

    下記の配列から値を取り出して表示させたいのですが上手くいかず困っています。 array(3) { [0]=> object(stdClass)#2849 (2) { ["name"]=> string(29) "1月" ["count"]=> string(1) "1" } [1]=> object(stdClass)#2848 (2) { ["name"]=> string(29) "2月" ["count"]=> string(1) "2" } [2]=> object(stdClass)#2847 (2) { ["name"]=> string(29) "3月" ["count"]=> string(1) "1" } } <li>1月(1)</li> <li>2月(2)</li> <li>3月(1)</li> 上記のような一覧表示させるにはどのようにすればいいのでしょうか? 下記のようにすると<li>3月</li><li>1</li>となってしまいどうすればいいのかわかりません。 <?php $eventlist = get_meta_values('event_2'); foreach ( $eventlist as $key=>$value) { foreach ( $value as $key2=>$value2) { echo '<li>' . $value2 . '</li>'; } } ?> どうかよろしくお願いします。

    • 締切済み
    • PHP
  • Twitterフォロワー数 取得 API xml

    【 Twitterフォロワー数 取得 API xml 】 twitterのフォロワー数を取得しwebsiteに表示したいです。 下記のcodeを記述したのですが、 取得出来ない場合があります。 (Aのサイトですと表示されBのサイトですと表示されない) <?php $urlt = str_replace(0xefbbbf, '', file_get_contents('http://api.twitter.com/1/statuses/user_timeline.xml?id=□□□□□□')); $xmlt = simplexml_load_string($urlt); print $xmlt->status->user->followers_count; ?> ※上記の □□□□□□ 部分には 表示させたいtwitterのscreen_nameかidをいれます。 どうしてもわからずこちらに質問させて頂きました。。。 よろしくお願いいたします。。

    • 締切済み
    • PHP
  • EasyBotterの改造◆特定のフォロワーへ返信しない動作を簡潔にす

    EasyBotterの改造◆特定のフォロワーへ返信しない動作を簡潔にする方法。 →→Pha様のEasyBotterを使用させていただき、bot運営をしております。現在順調に動いております。改造の質問になります。本家サイトの掲示板にてヒントはいただき調べてはいるのですが、こちらでもう少しヒントをいただきたく質問させていただきます。 「特定のフォロワーからのリプライに対し、返信をしない」の動作に関してなのですが、 この動作自体は非公式wikiの"特定の人を除外"で出来る事は分かっているのですが、 これをいちいちEasyBotter.phpをいじらず簡潔に、都度変更出来るようにしたいと思っております。 改造方法としては… ■1 上記"特定の人を除外"のソース↓ ------- $bottername = array("abcd","efgh"); if($this->_screen_name == $replyName || in_array($replyName, $bottername)){ ------- ↑の$bottername部分を、外部ファイル(txt…?)で別途用意し、読み込ませるようにする。 ■2 外部ファイルのtxtの中身を書き換えられるフォームを作る。 と、考えてしまっているのですが、改造の手段として根本的に違っていますでしょうか… フォームに入力した内容をテキストに書き出す、というphpのソースは 色々検索していたら出てきたのですが、そもそも外部で呼び出すファイルがテキストで良いのか テキストファイルで良い場合は、どのように記述するのかもあやふやで…。 ------- $bottername = "notreplyid.txt"; if($this->_screen_name == $replyName || in_array($replyName, $bottername)){ ------- に書き換えて、notreplyid.txtにリプライしないフォロワーのIDを書けば 出来るなんて簡単な話ではないですよね…。 そふぃ様のPHP入門のページを読んではいるのですが まだ1つずつ理解をしているので時間がかかってしまっています。 まだまだ勉強しはじめたばかりで不相応な事をしているのは承知しておりますが、 行き詰ってしまったために、何かきっかけをいただきたく質問させていただきました。 ちょっとしたことでも結構ですので、何かヒント(特にPHPのここを勉強すると理解できる、 このソースを改造すれば出来るかも、お叱りの言葉等々…)いただけないでしょうか。 何卒、宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • twitterのOAuth認証+xml抽出(php

    こんにちは。 PHPのプログラムで分からない部分があるので質問させてください。 twitterAPIを用いてアカウントの情報のxmlを取得し、simplexmlで解析して ・フォロワー数 ・フォロー数 ・リストされている数 ・ツイート数 ・認証アカウントかどうか といったステータスをsimplexml_load_fileで読み込んで、抽出して変数に入れたいのですが・・・ (この変数に入れたステータスで色々と計算をする予定です) エラーが出てファイルを読み込んでくれません。 ユーザー情報を取得するAPIが認証を通さないといけないため、OAuthを用いて認証しています。 認証が必要のないAPIで返ってきたxmlは問題無くsimplexml_load_fileが使えます。 ちなみにさくらのレンタルサーバーのスタンダードで、PHPのバージョンは5.2.17です。 色々試してみたのですが、何が原因なのか分からないので、ご教授お願いします。 <コード> <?php // twitteroauth.phpを読み込む。 require_once("twitteroauth.php"); // Consumer keyの値 $consumer_key = "******"; // Consumer secretの値 $consumer_secret = "*****"; // Access Tokenの値 $access_token = "******"; // Access Token Secretの値 $access_token_secret = "******"; // OAuthオブジェクト生成 $to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret); $req = $to->OAuthRequest("http://api.twitter.com/1/users/show/id.xml","GET",array("user_id"=>"******")); $xml = simplexml_load_file($req) or die("XMLパースエラー"); ?> <実行結果> Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "<?xml version="1.0" encoding="UTF-8"?> <user> <id>*******</id> <name>******</name> <screen_name>******</screen_name> <location>九州</location> <description>webクリエイ ・・・(以下略)・・・ ;。 &am in /home/*********/www/newfile.php on line 20 XMLパースエラー

    • 締切済み
    • PHP

専門家に質問してみよう