- ベストアンサー
TwitterのBotをEasyBotter2.0+@Pagesの無料サーバで運用しています。
- 自動フォロー返し時にリプライを送る方法に関して質問です。
- フォローしたユーザーに対してランダムなリプライを送りたいですが、現在はDしか送信されません。
- PHPの基礎知識がなく、解決方法を探しています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
EasyBotter2.0のソースを覗いてみました。 自動フォロー返しで処理をしようとしているのであれば、autoFollow関数に改造を加えているのかと思われますが、ランダムなリプライを送りたいのであれば、これはデータをテキストファイルから読みだしている形ですがpostRandom関数(というより実際に発言データをランダムに抽出しているmakeTweet関数)の方も参照してみてはいかがでしょうか。 質問に書かれているソースのように、単に$valueに複数のステータスを入れても、setUpdateの先でランダムで取り出してくれるわけではないので、ランダムなリプライはできません。(というか、setUpdateの先では$value["status"]は単一の文字列としか扱っていないので、ここに複数の文字列を入れようとしても意味ありません。 ランダムにリプライするなら$value["status"]に設定する以前に複数データから1個のデータをランダムに取り出しておく必要があります。 例えばrand関数を用いて $rnd_reply = array( 0 =>"@{$rscreen_name} A", "@{$rscreen_name} B", "@{$rscreen_name} C", "@{$rscreen_name} D" ); $value = array(); $value["status"] = $rnd_reply[rand(0,3)]; とするのも一つの方法です。
その他の回答 (1)
- magicalpass
- ベストアンサー率58% (378/648)
どうしてこれでランダムに出力できると判断しているのか謎ですが、Dしか出ないのは実質的に配列にDしか格納されていないからです。同じキーで代入したら、新しいものが順番に上書きされるので、最後のものしか残りません。 $value = array( "status"=>"@{$rscreen_name} A", "@{$rscreen_name} B", "@{$rscreen_name} C", "@{$rscreen_name} D", ); のように2番目以降のキーを省略するか、 $value = array( "status1"=>"@{$rscreen_name} A", "status2"=>"@{$rscreen_name} B", "status3"=>"@{$rscreen_name} C", "status4"=>"@{$rscreen_name} D", ); のように違うキーを使う必要があります。
お礼
早速のご回答ありがとうございます! よく分からないなりにも、前者の方は試した(つもり)のですが、 その時は動かなかったので、もう一度これで正確にやってみます。 (Dの後の,が無かったかも・・・) それでダメだったら後者の方でやってみて、ちょっと 様子を見たいと思います。 ありがとうございました!!
補足
magicalpassさんの回答を両方共、2日間ずつ試しましたがダメでした。 エラーは出ませんが、出力をしない状態です。 現在は以前のように、一つのリプライパターンで正常に動いています。 ですので、引き続き募集させていただければ幸いです。
お礼
ありがとうございました!!できました!! 今回のことでかなり勉強になりました~。 完成形はこんな感じになりました。 //■■フォローした時にリプライを送る■■ foreach($followList as $rscreen_name){ $rnd_reply = array( 0 =>"@{$rscreen_name} A", "@{$rscreen_name} B", "@{$rscreen_name} C", "@{$rscreen_name} D" ); $value = array(); $value["status"] = $rnd_reply[rand(0,3)]; $response = $this->setUpdate($value); $result = $this->showResult($response); $results[] = $result; }