したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |
レス数が900を超えています。1000を超えると投稿できなくなるよ。

TwitterBotPHP質問スレ

321教えてください312:2010/05/17(月) 02:57:13
>>319
>>320
もちろん、試しながら聞いてます。
604だとポストすらしなくなって
317様の助言に、ついこのスレに長居してすみませんでした。

322名無しさん:2010/05/30(日) 14:33:44
質問です。
定期ポストを
cronを5分間隔で実行し、
bot.phpを5回繰り返し叩いたら、5回目でdata.txtを実行する
という指示にしたいのですが、
いまいちどの関数を利用したらいいのか判りません。
と言うのも、cronが正確に5分間隔ではないので、それに対応させたいのです。

今は、
if(date("i") < 5){
$response = $eb->postRandom("data.txt");
}

と実行してますが、なぜか30分に1回、2種類の発言が同時にツイットされてしまいます。
なぜ重複になるのかがわからず、積んでしまいました。
なので変えてみたいのですが、リファレンスサイトを見てますがいまいち判らず……(´・ω・`)

// 5回目で処理を実行する
$cnt = 1;
while( $cnt == 5 ){
 if ( $cnt <= 5 ){
  echo $cnt."回目なので処理を中断。";
  break;
 }else{
  $response = $eb->postRandom("data.txt");
  $cnt++;
 }
}


かなぁ?
と、おっかなびっくり実行しますが、手動で叩いても何も起こりませんでした。

wikiにあるリファレンスや説明サイトで勉強しながらですが、
早速積んでしまいましたので、何方か考え方などご教授願えましたら幸いです。

323322:2010/05/30(日) 19:20:02
すみません自己解決しました。
本当に過去色々と助言頂いてる先達の皆さんとphaさん
ありがとうございます!

324名無しさん:2010/05/30(日) 19:41:43
【ネット】けしからん!プロフで寝室を生配信している人妻が不倫相手を募集
http://s11.stripper.jp/mp/

325名無しさん:2010/05/31(月) 00:47:06
質問させて下さい。

http://wiki.livedoor.jp/easybotter_wiki/
ここ見ながら設定していったのですが、
「2分以内に受け取った@はないようです。」と表示されません。

認証については
http://pha22.net/twitterbot/
を参照。

鯖は@pages PHPは5、
DLしたファイルは上記サイトの様にほとんどいじっていません。

もう何がダメなのか解らない状態です。
色んなスレ見て、自己解決多くて原因が解りませんでした。

宜しくお願いします。

326名無しさん:2010/05/31(月) 01:13:41
>>325
EasyBotte r初心者質問スレ 2
http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1273843076/l100
こちらへ移動した上で1-3を熟読

327名無しさん:2010/05/31(月) 02:22:24
質問です
TL反応について
特定の相手に専用のパターンを読み込んで返す反応をしたいんですが
うまい方法が見つからず困っています
分不相応な希望だと思いますが教えていただけないでしょうか

328名無しさん:2010/05/31(月) 04:16:36
>>327
リプライ生成前にID判別する

329名無しさん:2010/05/31(月) 07:30:16
>>326
読んだ上で投稿させて頂いています。

330名無しさん:2010/05/31(月) 15:02:38
329です。スレ違い了解しました。

331名無しさん:2010/06/05(土) 14:42:53
質問させてください。
定期ポストを30分間隔でかつ30〜32分(00〜02分)の間に実行するようにしたいのですが
どういう風に考えればいいでしょうか? cronは3分間隔で動かしています。
if(date("i") >= 30 and date("i") < 33 or date("i") >= 00 and date("i") < 03){
$response = $eb->postRandom("data.txt");
}
という風に実行してみたのですが上手く動かず困っています。
1時間間隔なら
if(date("i") >= "00" and date("i") < 03){
$response = $eb->postRandom("data.txt");
}
で動いてくれたんですが…。助言をお願いします。

332名無しさん:2010/06/05(土) 15:55:16
>>331
and と &&、or と ||の力関係を確認

333名無しさん:2010/06/05(土) 23:43:27
>>332
確認して書き直したら無事に動きました!
ありがとうございました!

334名無しさん:2010/06/06(日) 16:04:02
Easybotter 2.0を改造して使ってたんだけどサーバーの問題なのか
タイムライン、リプライ、ランダムが一緒に動いた場合ランダムポストだけが
エラーになってる。
ランダムだけだとちゃんとポストするんだよね。
他の人のはいっぺんに出来ますか?

335名無しさん:2010/06/06(日) 21:13:57
>>334
できてますよ

336名無しさん:2010/06/09(水) 16:49:30
広告スレが多くなったので整理・誘導age

337名無しさん:2010/06/12(土) 00:46:09
広告スレが多くなったので整理・誘導age

338名無しさん:2010/06/16(水) 14:05:11
「TLの特定の言葉に反応する」は、対象のワードを100%拾いますが
例えば
「●●」というワードの場合は50%の確立でリプライ反応する
それ以外のワードは100%でリプライ反応する
…というように、反応する確率を変える事はできますでしょうか?

ご教授いただけると助かります

339名無しさん:2010/06/16(水) 18:17:29
こんにちは、どうしてもつまりがちなのでヒントをください。
ver2の奴を使っています。

botに深夜1時から5時の間は他の人から送られたリプライにリプライを返さない要は「おやすみ時間/停止時間」を作ろうと考えています。

bot.phpに
if(date("G") > 4 || date("G") < 1){
$response = $eb->reply(3,"rpl.php","reply_pattern.php");
}
else
{ return;
}
としたところ、時間外でもリプライにまったくもって反応しなくなりました。
いろいろググってみたのですが解決口が見えなかったのでご質問しました。
どうかご教授お願いします。

340名無しさん:2010/06/16(水) 21:53:05
>>339
return;の意味を理解していますか?
ただifを使うだけならreturnはいりません
elseで指定する必要はないです
それとdate("G") < 1はdate("G") == "0"で良いのではないでしょうか

341名無しさん:2010/06/17(木) 03:34:11
こんばんは。
最初はちゃんと自動フォロー&フォローしたらリプライ返してたのに、いきなりしなくなりました。

easybotter内を少し書き換えてます。

//自動フォロー返し
function autoFollow(){
$response = $this->getFollowers();
$followList = array();
foreach($response as $user){
$follow = (string)$user->following;
if($follow == "false" && $user->protected == "false"){
$followList[] = (string)$user->screen_name;
}
}
foreach($followList as $screen_name){
//■■xxxはフォロー返ししない■■
if(!preg_match("@bot$@i",$screen_name)){
$response = $this->followUser($screen_name);
}
}
//■■フォローした時にリプライを送る■■
foreach($followList as $rscreen_name){
$msggg=array("リプライ1","リプライ2");
$key = array_rand($msg);
$post = $msg[$key];
$value = array("status"=>"@{$rscreen_name} $post");
$response = $this->setUpdate($value);
$result = $this->showResult($response);
$results[] = $result;
}
}

どこかおかしいところはありますか?
ちなみに、きちんとフォローしたらリプライのリプライはします。
リプライはするけどフォローはしない状態です。

342341:2010/06/17(木) 11:46:42

ランダムポストの前に自動フォローをすると解決しました。
ありがとうございました。

343うら:2010/06/17(木) 12:18:45
>>338
できます。プログラムですからね。

例えば、リプライパターンを作成するところで、
もし特定ワードだった場合、作成したツイートを
1/2のランダムで空配列にしてしまえばよいかと。

344338:2010/06/17(木) 12:44:13
>うらさん
回答くださってありがとうございます…!
ええと、教えて下さった方法だと、EasyBotter.phpをいじるのでしょうか?
度々すみません、よろしくお願いします。

345名無しさん:2010/06/18(金) 01:03:37
>>344
例えば反応ワードに50%で反応して欲しい場合は
"反応ワード"=> array(
"リプライ用文章1",
"リプライ用文章2",
"",
"",
),
とすることで擬似的に50%に出来るという事だと思います。
空配列試した事ないので正常動作するかどうかは分かりませんが。
=弄るのはEasyBotter.phpではなくreply_pattern.phpですね。

346名無しさん:2010/06/18(金) 05:26:47
こんにちは。
こちらのスレや過去スレを参考にして、特定のIDへのタイムライン反応には@を付けてリプライするのではなく、定期ポストと同じようにつぶやくようにしたくてeasybotterを書き換えたのですが、エラーはでないのですが、いつも@を付けてしまいます。

どこか間違ってる部分はありますか?
以下easybotter.php内(//部分を書き加えました。)

//タイムラインへの反応を作る
   略
//リプライパターンと照合
foreach($this->_replyPatternData[$replyPatternFile] as $pattern => $res){
if(preg_match("@".$pattern."@u",$text, $matches) === 1 && !preg_match("/\@/i",$text)){
$status = $res[array_rand($res)];
for($i=1;$i <count($matches);$i++){
$p = "$".$i;
$status = str_replace($p,$matches[$i],$status);
}
break;

}
}
if(empty($status)){
continue;
}
if(preg_match("@{.+?}@",$status) == 1){
$status = $this->convertText($status, $tweet);
}
$reply_name = (string)$tweet->user->screen_name;
$in_reply_to_status_id = (string)$tweet->id;
//$userName = (string)$reply->user->screen_name;switch(true){
// case $userName == "aaaa":
// case $userName == "bbbb":
// $re["status"] = $status;
// break;
// default
$re["status"] = "@".$reply_name." ".$status;
// break;
//}
$re["in_reply_to_status_id"] = $in_reply_to_status_id;
if(!stristr($status,"[[END]]")){$replyTweets[] = $re;}
}
return $replyTweets;
}

347名無しさん:2010/06/18(金) 07:18:53
>>346
$userName = (string)$reply->user->screen_name;
が間違ってる
TLならreplyじゃない
何にするかはその周辺をよく見ればわかります
というは$userNameじゃなくて・・・・・

348346:2010/06/18(金) 10:52:07
>>347 さん
お返事ありがとうございます。
wikiの特定のIDに別のパターンを読み込む をコピペしたために分かりませんでした。
下記のように条件分岐の部分を書き換えたのですが、まだリプライする状態です。
まだ勘違いしてますでしょうか?

switch(true){
case $reply_name == "aaa"://abcdというアカウント名に対して
case $reply_name == "bbb"://efghというアカウント名に対して
$re["status"] = $status;
break;
default://それ以外
$re["status"] = "@".$reply_name." ".$status;
break;
}

349348:2010/06/18(金) 10:53:16
すみません。
>>348の訂正です。

$reply_name = (string)$tweet->user->screen_name;
switch(true){
case $reply_name == "aaa"://abcdというアカウント名に対して
case $reply_name == "bbb"://efghというアカウント名に対して
$re["status"] = $status;
break;
default://それ以外
$re["status"] = "@".$reply_name." ".$status;
break;
}

350338:2010/06/18(金) 11:03:22
>>345
あー、なるほど!そういう意味ですね。
理解できました。
ご丁寧にありがとうございました、助かりました!
早速そのように書いてみます。

アドバイスくださってありがとうございました。

351347:2010/06/18(金) 16:02:03
>>349
ほんとにTL反応部分を書き換えてます?
リプライ反応のところを書き換えてませんか?
自分が同じとおりにやったらきちんと動きますが・・・

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $reply_name = (string)$tweet->user->screen_name;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $in_reply_to_status_id = (string)$tweet->id;
switch(true){
&nbsp; &nbsp; &nbsp; &nbsp;case ($reply_name == "本垢"):
$re["status"] = $status;
&nbsp; &nbsp; &nbsp; &nbsp;break;

&nbsp; &nbsp; &nbsp; &nbsp;//その他
&nbsp; &nbsp; &nbsp; &nbsp;default:
&nbsp; &nbsp; &nbsp; &nbsp;$re["status"] = "@".$reply_name." ".$status;
}
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $re["in_reply_to_status_id"] = $in_reply_to_status_id;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $replyTweets[] = $re;

352名無しさん:2010/06/18(金) 19:24:15
>>351 さん
同じ部分を変更したのですが全く動きませんでした。
351さんのを一度コピペさせて頂いて実行すると、無事動きました。
もう一度書き直してみたいと思います。
ありがとうございました!

353名無しさん:2010/06/23(水) 02:18:23
リプライについて質問です。
easybotter2.04betaを使用しています。

誰かが「@自分のID」を含む発言をした場合のリプライについて、
RT、QTを除外するだけでなく「発言の最初に「@自分のID」がない場合」も除外したいと思い、
正規表現について調べました。(PHPの知識も皆無です)

そしてeasybotter.phpの「//RT, QTを除外する」部の下、368行目から以下の記述を追加しました。

//発言の最初が「@自分のID」のもののみリプライする
$text = (string)$reply->text;
if(strpos($text,"^@自分のID") = TRUE){
continue;
}


意図としては、
「@○○、よろしく」→リプライする、「よろしく、@○○」→リプライしない
というような動作を実現させたいのですが、
上記の編集の結果「@自分のID」を含む発言に対してもリプライしなくなってしまいました。
上記の部分を削除すると「@自分のID」を含む発言に対してリプライします。
cronはGAEcronで2分おきの実行です。
どなたか解決方法をご存じの方、いらっしゃいませんでしょうか?

354名無しさん:2010/06/23(水) 06:13:09
>>353
strpos()に正規表現は使えません

355名無しさん:2010/06/23(水) 20:33:05
初心者スレから誘導されて来ました。
早速ですが、質問させて下さい。

現在、こちらを参考にbotを作成し、正常に稼動しています。
少しずついじっているのですが、いずれ天気予報botのようなことをさせたいと考えています。

初心者スレにて質問させていただき、アドバイスをいただいたので、
それを元に自分でも調べつつ、以下のようにしたいと考えがまとまりました。

天気予報の組み込み方ですが、自分のbotへ「東京の明日の天気」等とリプが来た時
それに答える形でこちらからリプライする、というものにしたいのですが

1)「東京、明日」というリプライだとすると、そこからcityとdayをキーワードとして拾って
Livedoor Weather Web Serviceにアクセスして、東京の明日の天気を取得する。
2)このままツイートはせず、キャラクターの口調にあてはめさせる。
(例:東京の明日の天気は晴れだってよ、等)
3)問い合わせてきたアカウントに対してリプライする。

以上の動作を、通常の、リプライに対しリプライを返す、という流れの中に、
具体的にどのように上記を組み込めばいいのかが分かりません。
「情報を取得し、ランダムポストさせる」為のソースは、調べていくうちにいくつか見つけ、
なんとなく分かりかけてきたような気もするのですが、
本当にうっすらとで、雲をつかむような感じです;
そこから、リプライさせるにはどうしたらいいか?で煮詰まってしまいました。

勝手を言いまして申し訳ありませんが、アドバイスをいただけたら助かります。
よろしくお願いします。

356355:2010/06/23(水) 20:35:24
すみません、煮詰まって、ではなく行き詰って、です。
失礼しました。

357名無しさん:2010/06/23(水) 20:49:09
>>355
自分ちのbotにウェザーハックの142個所の今日・明日・明後日の天気予報を読ませているけど
まずは『東京の明日の天気』と一個所だけ言えるようになってから、日時(今日・明日・あさって)
場所(142個所)が言えるように選択を増やして行った方がいいよ

自分はうまく説明出来ないので、とりあえずヒントを公開していらっしゃる参考サイトを
ttp://suehiro-web.fool.jp/farfar/bot.html

358353:2010/06/25(金) 01:16:32
>>354
レスありがとうございます。やはり、その当たりの編集では実現できないようです。
どうすればそういう動作が実現できるか、ご存じないでしょうか?

359名無しさん:2010/06/25(金) 01:32:11
>>358
正規表現の使える別の関数を探せばいいじゃない
なんでも人に聞くようじゃ先進めないよ

360名無しさん:2010/06/25(金) 02:26:00
初めまして。
Easybotter2.0betaでbotを作り、正常に稼働しています。
phpも少しづつですが理解できるようになってきました。

いずれ、botにGoogle AJAX Language を利用し翻訳機能をつけたいと考えています。
(例・"@bot 「○○」を英語に訳して" に対し"「△△」です。"とリプライを返す)

自分なりに色々調べ、
翻訳元と翻訳先の言語を指定→APIを叩く→翻訳が出来ていれば出力する
という処理をするのはなんとなくわかりましたが、具体的にその処理をどこに組み込めば良いのか…と言うところで行き詰っています。
Easybotter.phpの改造が必要なのでしょうか?
それとも、それ用にスクリプトを書きpostさせるのでしょうか?

もしよろしければ、アドバイスをお願いします。

361名無しさん:2010/06/25(金) 03:07:01
>>360
Easybotter.php の改造が必要
"Google AJAX Language PHP"でぐぐればヒントは出てくる

362353:2010/06/25(金) 05:00:55
>>359
ありがとうございます。確かにそうですね!
色々調べた結果、strposが「文字列が最初に現れる位置を返す」関数だと知ったので、
「RT、QTを除外する」セクションを削除して代わりに以下のようにしました。

//先頭が「@自分のID」のもののみリプライする。
$text = (string)$reply->text;
if(strpos($text,'@自分のID') === 0 ){
continue;
}

これで、「発言の先頭が「@自分のID」」の時のみリプライするようになるかと思ったのですが、
結果は「何もリプライしなくなった」でした。

どなたかどこを間違っているかご指摘を頂けないでしょうか。
よろしくお願い致します。

363名無しさん:2010/06/25(金) 06:41:02
>>362
結果はわかってるじゃない
continue;=リプライしない
つまり?

364353:2010/06/26(土) 00:21:36
>>363
continue = リプライしない だったんですねwwwwwwwwwwww
すみません、おかげで完璧に動作するようになりました。ありがとうございました。
PHPにも興味が湧いたので色々勉強してみます。

ちなみに完成版のソースは「RT、QTを除外する」セクションを以下に置き換えてます。


//先頭が「@自分のID」のもののみリプライする。
$text = (string)$reply->text;
if(strpos($text,'@自分のID') !== 0 ){
continue;
}

365355:2010/06/27(日) 11:18:44
>>357
お礼が遅くなりまして申し訳ありません。
早速のアドバイス、ありがとうございました!
教えて下さったサイトは見た事がありませんでした、参考にさせていただきます。
何分ど素人ですので、まだ理解できない部分ばかりなのですが;
まずは、PHPリファレンスとともに何度も熟読してみようと思います。

全体的にうっすらとしか理解できていないので、具体的な質問もできない状態ですが
「ここはどうしたらいいか」というものがはっきりした時には、また質問させて下さい。

ありがとうございました!

366名無しさん:2010/06/27(日) 15:06:44
九真田曜子妊娠説浮上〜お笑いタレントの中堅とお付き合い
山下公園のベンチで抱き合い濃厚キスで目がうつろ・・・?
ある メディアが激写盗撮で所属事務所が告訴
http://speed01.heteml.jp/

367名無しさん:2010/06/28(月) 21:14:31
はじめまして。質問させていただきたいことがあるのでよろしくお願いします。
バージョンは2.0βです。

reply_pattern.phpで、
・同じ単語に反応するが、時間によって違うリプライを返す。
・同じ単語に反応し、時間に関係なく同じリプライを返す。
という風に実装したいのです。
例えば今は、

$hour = date('H');
if (0 <= $hour && $hour <= 11) { //0時〜11時
$data = array(
"(好き)" => array("俺も好きだよ"),
"(時間)" => array("今はAMだ"),
);
} elseif (12 <= $hour && $hour <= 23) { //12時〜23時
$data = array(
"(好き)" => array("俺も好きだよ"),
"(時間)" => array("今はPMだ"),
);
}

上のように、「好き」と言われた時はAMでもPMでも「俺も好きだよ」と返し、
「時間」と聞かれた時はAMかPMかで違うセリフを返す。という風にしています。
ただ、上記だともし「好き」の部分のリプライのセリフを変更したい時、
わざわざ2箇所変更をしなければならないのでちょっと手間になっています。
まだPHPはあまり詳しくないのですが、以下に修正してみたけど駄目でした…

$hour = date('H');
$data = array(
"(好き)" => array("俺も好きだよ"),
);

if (is_null($data)) {
if (0 <= $hour && $hour <= 11) { //0時〜11時
$data = array(
"(時間)" => array("今はAMだ"),
);
} elseif (12 <= $hour && $hour <= 23) { //12時〜23時
$data = array(
"(時間)" => array("今はPMだ"),
);
}
}

申し訳ありませんが、どこが間違ってるのかご指南いただけないでしょうか?
よろしくお願いいたします。

368名無しさん:2010/06/29(火) 10:54:41
$hour = date('H');

if($hour < 12){
$jikandata = array(
"今はAMだ",
);
}else{
$jikandata = array(
"今はPMだ",
);
}

$data = array(
"好き" => array(
"俺も好きだよ",
),
"時間" => $jikandata,
);

369367:2010/06/29(火) 23:04:16
>>368
ありがとうございます。

すみませんが、違うエラーが出たので引き続きお願いいたします。
まず申し訳ありません。>>367では説明しやすいようにいくつか中略して書かせてもらったのですが、
正確にはもう少し細かくて分かれているのです。
それで、>>368で教えてもらったことを参考に

$hour = date('H');

if($hour < 12){
$jikandata = array(
"時間" => array(
"今はAMだ",
"今は午前中だ",
),

"午前" => array(
"アタリだ!",
"アタリ!午前中だ!",
),

"午後" => array(
"ハズレだ!",
"ハズレ!まだ午前中だ!",
),
);
}else{
$jikandata = array(
"時間" => array(
"今はPMだ",
"今は午後だ",
),

"午前" => array(
"ハズレだ!",
"ハズレ!もう午後だ!",
),

"午後" => array(
"アタリだ!",
"アタリ!午後だ!",
),
);
}

$data = array(
"好き" => array(
"俺も好きだよ",
"俺もだよ",
),

"嫌い" => array(
"俺は好きだよ?",
"そんなこと言うなよ",
),

"(時間|午前|午後)" => $jikandata,
);


こう修正させていただき、「好き」などで話しかけると、きちんと「俺も好きだよ」などと呟いてくれるのですが、
「時間」など、if文中の単語で話しかけると、「Array」という文字を呟いてしまいます。
なにかまだ上記で間違っているでしょうか?
お手数ですがご教授お願いいたします。

370名無しさん:2010/06/29(火) 23:24:13
>>369
正常な例(好き)と比較して見れ
398なやり方はできない
落ち着いて見れば気付くはず
あとは自分で頑張って

371367:2010/06/30(水) 00:13:08
"(時間|午前|午後)" => $jikandata,

を、

"(時間|午前|午後)" => array(
$jikandata,
),

にする・・・とかではないですよね・・・
if文の中が間違っているのでしょうか?
すみませんけどそれだけでも教えていただきたいです。お願いします。

372名無しさん:2010/06/30(水) 22:16:07
すみません、今日の昼頃までは問題なく動いていたのですが、
夕方サーバー側のエラーで停止していまして、
サーバは再開した様子なのですが、
botが無反応になってしまいました。


手動で試してみたところ、以下のエラーが出てしまいます。


object(SimpleXMLElement)#5 (2) {
["request"]=>
string(20) "/statuses/update.xml"
["error"]=>
string(20) "Invalid / used nonce"
}
5分以内に受け取った@はないようです。



サーバーは@PAGESです。
どうもサーバー側の時間がずれているみたいなのですが、その所為でしょうか。
だとしたら、サーバー側で対処してもらうのを待つしかないのでしょうか?
すみませんが、お分かりになる方がいらっしゃいましたらご教授お願いいたします。

373名無しさん:2010/06/30(水) 22:23:04
>>372
私も同じ現象が起こってます。@pagesの20鯖ですね。
お分かりのようにInvalid / used nonceはサーバー側の時間がずれていると発生するものです。
サーバー時間が直らないとこのエラーが出て正常に動作しません。気長に待ちましょう^^;





@pages仕事汁。

374372:2010/06/30(水) 22:32:49
>>373
早速の返答どうもありがとうございました!
20鯖です。待つしかないのですね…。
理由がわかって安心しました。どうもありがとございました。



@pages仕事して下さいお願いします。

375名無しさん:2010/06/30(水) 23:26:33
調子いいこと言うねw
文句があるなら有料鯖池と思うが

376うら:2010/07/01(木) 12:26:21
>>371
念のため書きますと、リプライパターンファイルでは、
$data という配列に、反応語とリプライのセットを配列として定義しています。
EasyBotter.php 側では、$data 以外の配列は無視されます。
また、配列を表示させようとすると Array と表示されるのは php の仕様です。

中身を把握しながら、少しずつ定義を増やしていくと良いと思います。

377名無しさん:2010/07/01(木) 16:10:30
すみません、とても初歩的な質問なのですが、
EasyBotter2.04betaを使用させていただいてるのですが
reply_pattern.phpの最後を

?>

で閉じていないのは、大丈夫なのでしょうか?
自分のファイルを見ていてふと気付いて、
でも普通に動いているのでいいのかなと思いつつ、
一応DLしたファイルを解凍して見てみたら、元がそうでした。

これって閉じ忘れていても大丈夫なものなんでしょうか…?

378名無しさん:2010/07/01(木) 21:19:31
簡単じゃないtwitterbotの作り方さんのを見て、アイコン画像を変更出来るようになったのですが、アイコンをランダムにすることは可能ですか?
画像名を1〜4の数字にし、先に数字をランダムで決めて、
画像変更のところに入れてみたのですが、エラーで出来ませんでした。

379378:2010/07/01(木) 23:25:20
一応載せておきます。

$gazo=array("1","3","4");
$key = array_rand($gazo);
switch(true){
case ([$key] === "1"):
画像1に変更する
break;
case ([$key] === "3"):
画像3に変更する
break;
default:
break;
}

380378:2010/07/01(木) 23:35:38
ごめんなさい、PHPのスクリプトを調べたらすぐに出来ました。
ありがとうございました。

381367:2010/07/01(木) 23:36:37
>>376
わざわざありがとうございます。
まだ不慣れな初心者ですがこれからもっともっと勉強させていただきます。

382名無しさん:2010/07/02(金) 06:24:47
>>377
書きこむ前にググればいいのに…
結論から言うと、無くても良い場合・無い方が良い場合・無いと動かない場合がある
reply_pattern.phpの場合は「無くても良い場合」もしくは「無い方が良い場合」だよ

383377:2010/07/02(金) 22:40:29
>>382
安易に書き込んでしまい申し訳ありませんでした。
省略可能なのかなぐらいに考えていましたが、
無い方がいい場合があるとは驚きました。
自分でも調べてみます、
ご親切にありがとうございました。

384名無しさん:2010/07/03(土) 20:28:13
自分宛のリプライをそのまま全文引用してポストするよう設定したいのですが、いろいろいじってみてもどうしても最初の「@自分のid」を除去出来ません。
Easybotter.phpのどこらへんをいじったらいいのか教えてください。

385384:2010/07/03(土) 22:37:41
>>384 です。
エラーでリプライすら取得できなくなりました。
もらったリプライの入っている関数はどれですか?
$replyだと思ったのですが、これを$statusに入れてもArrayと表示されてリプライ内容は表示されません。

386名無しさん:2010/07/03(土) 23:20:45
>>385
DLし直せば大丈夫ですよ

387究極の破格の安さ!:2010/07/03(土) 23:35:31
究極の破格の安さ!
新品の液晶テレビ40インチが35,000円!!
ブルーレイ、ipadもある。
オークションよりも安く電化製品は在庫多数
詳しくは商品情報ブログ
http://ameblo.jp/kadenkadenkaden/

388名無しさん:2010/07/03(土) 23:45:57
>>386 
返答ありがとうございます。
それではリプライの文が入ってるのは$replyで合っているということでしょうか?

389名無しさん:2010/07/04(日) 03:26:15
{tweet}じゃだめなのか?

390名無しさん:2010/07/04(日) 11:05:16
>>389
検索したら出ました。ご迷惑をおかけしました。
ありがとうございました。

391名無しさん:2010/07/04(日) 12:28:11
私も>>5様と全く同じような不調で、私の場合は
botの受け取ったreply一覧を見たら30分以上経ってももらった@が表示されていませんでした
この場合は何が原因なのでしょうか?

392名無しさん:2010/07/04(日) 15:46:33
>>391
それだけで>>この場合は何が原因なのでしょうか?と聞かれても誰も分からないよ
初心者スレでテンプレ使って詳細を書いてくれないと

あと、サッカー実況組の影響で、今日は早朝から遅延で
リプライがうまく返せないbotが多数出ているよ
そういう情報もどこかで調べておいた方がいい。
Twitterの不調、cronの不調、鯖の不調の度に動かない動かないと
わめかれるのはウザイ

393名無しさん:2010/07/04(日) 16:03:55
>>391
うちのBOTもここ数日弄ってないのに
通常ポストは出来てもリプライが返せなくなってる。
(返す時もあるけど確率的に10%未満)
それと同じ現象だと思うよ。
ツイッター鯖の@受け取り、TL不調だと思われる。

ぐぐったらブログレベルで不具合の事は書いてると思うからぐぐるといい。
まあ、データ弄っての動作不良なら知らないが。
あと如何なる場合でもテンプレ推奨。エスパーじゃないんだから。

394名無しさん:2010/07/04(日) 19:33:38
★日本人女性が中国人に集団で暴行されてる映像!

「悲鳴に振り向くと」←で検索するとヒットします。

日本の新聞やテレビが隠して報道しない事実。

まだ日本人の1/1000しかこの動画をみてません。

(少しでもコピペ協力感謝します!(-人-;)(;-人-) ユルセ管理の人)

下記リンクからでも見れます。
ttp://www.youtube.com/watch?v=ABVU5hnJvqw

395355:2010/07/09(金) 20:27:11
お世話になっております。
以前、天気予報の件で質問させていただいた者です。

いまさら、こんな根本的な質問でお恥ずかしいのですが、
>>355のようなことをさせたい場合、Easybotter.phpの改造が必要ですか?
それとも、通常のreply_pattern.phpの中に記述するのでしょうか?
教えていただいた参考URL先や、他の参考サイトを読んで、
スクリプトは何となく分かってきたのですが、それ以前の問題でしょうか…

度々申し訳ありませんが、ご教示いただけたらありがたいです。
天気予報の機能を何とか実装させたいので、よろしくお願いいたします!

396名無しさん:2010/07/09(金) 22:20:53
改造っつーか、自分でPHP組む必要があるよ

397355:2010/07/09(金) 22:44:21
>>396
早速有り難うございます。
ええと、それは
ttp://www.phppro.jp/school/mashup/vol3/1
の真ん中あたりにあるような(これはHTMLに組み込まれてますが)
PHPファイルを組むという事ですよね。
そのPHPファイルを、bot.phpの中でreply_pattern.phpと分岐させるのでしょうか。
それとも、reply_pattern.phpの中に書いてしまっていいのでしょうか…?

398名無しさん:2010/07/09(金) 22:45:37
あれだけ見てきて今までどうすると思っていたの??
Easybotter.phpに何が書かれてどう処理しているのか見てみなよ
調べてきたところに書かれていたソースと見比べてみたら
どうしなきゃ行けないのか分かると思うけど

399名無しさん:2010/07/10(土) 12:59:12
広告スレがすごく多くなったので整理・誘導age

400名無しさん:2010/07/10(土) 13:04:32
広告スレがすごく多くなったので整理・誘導age

401名無しさん:2010/07/14(水) 19:13:09
自分はmacを使用している者です。
エディタはmiを使用しています。
スレ内でもよく出ている改行の件ですが、
『UTF-8、LF』に設定したtxtはアスキーモードではなく、
バイナリモードで転送したら上手くいきました。
詳しくないのですが、
ここのページからヒントを得て、
ttp://www.rescue.ne.jp/cgi/crlf/
素人なので試してみたら結果的に上手くいったというだけかもしれませんが
一つの事例として何かの参考になるかと思い書き込んだ次第です。

402名無しさん:2010/07/17(土) 15:51:44
スレ立てるほどじゃないその他の質問スレの388(http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1259689986/388)です。
あちらで回答がえられなかったのでこちらでも質問させていただきます。
Easybotter2.04を使っています。

上記スレでレンタルサーバの時間が10分遅れている為、リプライ反応時間を2分に設定しても12分後にリプライしたりしてしまうという質問しました。
今日確認した所レンタルサーバの遅延時間が12分になっていて、どんどん時間がずれていっているようです…。
サーバを変える以外になにかこちらでできる対策はありますでしょうか?

403名無しさん:2010/07/17(土) 20:47:07
>>402
サーバーに改善依頼すりゃいいじゃん
対応しないならその程度のサーバーってこと

404名無しさん:2010/07/20(火) 19:12:51
調べても分からなかったので、この場をお借りして質問させていただきます。

やりたいこと:特定のツイートだけアイコンを喜怒哀楽といったように変更したい。

『INOUEさんの簡単じゃないtwitterbotの作り方』を参考にさせてもらいながら、botのアイコンを変えられるようにしています。
これを活かして上に書いたことをやりたいのですが、アイコンを変えるところまでで止まってしまい、ツイートに連動させることができません。
何か、ヒントだけでもいただければありがたいです。よろしくお願いいたします。

405うら:2010/07/21(水) 12:31:53
>>404
> アイコン変更停止
EasyBotter2.0
http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1265625817/672

406名無しさん:2010/07/23(金) 01:14:18
お知恵をお貸し下さい。

【バージョン】 Ver.2.04
【設置鯖名】 @PAGES
【PHPのバージョン】PHP5
【手動】 動く
【実行】 GAE-Cron
【実行間隔】 3分間隔(
【不明点】

BOTを作り始め、なんとか起動するようになりました。
で、質問なのですが、
replay pattern phpの始めに
//複数のパターンに一致する場合は上のものが優先されます

と記述されてます。
これを変更する事は可能でしょうか

replay pattern phpに記述されている上の方が優先的に選ばれるのではなく、
ツイッターに書かれた@の記述の後ろの反応語句に反応するとか。
「@おはよう 元気?」っと書かれた場合
元気?(後に書かれている方)に反応させたいのですが。

調べ方が下手なのかもしれませんが、なかなかわからず困っています。
ご教授いただけないでしょうか。

407名無しさん:2010/07/23(金) 03:29:01
>>406
初心者質問スレ1で『優先』で検索したらいいと思う

408名無しさん:2010/07/23(金) 13:53:52
>407
ご指摘ありがとうございます。
1で調べましたら、反応して欲しい語句をなるべく上に書くことみたいです。
○○ちゃんおかえり で○○ と おかえり だとおかえりに反応させたいので、
○○は下の方に書いたらいいって事ですよね。やってみます!

尚引き続きご質問なのですが


if(date("i") % 10 === 0){
$response = $eb->postRandom("data.txt");
と設定しております。
これだと公式の説明通り、bot.phpを実行したときに10分、20分だとポストするように
なってます。これだと多いときは多い、少ないときは少ないっと
偏りが生じます。
これを30分間隔で定期的にランダムポストしたいとおもっております。
前回の発言が7:25分なら 次ポストは7:55分 っという風にです。
このようにするには どこを変更したらよろしいでしょうか。
色々検索したのですが、過去スレを「定期ポスト」「時間指定」とか
なかなかヒットしなくて。
ご指導のほどよろしくおねがいします。

409名無しさん:2010/07/23(金) 15:37:13
ホントに調べたの?『ご教授お願いします』は魔法の言葉じゃないよ
一番多い質問で、散々既出なんだからすぐにヒットするはず
wikiや全ログ調べるくらいの勢いで探したら?

410名無しさん:2010/07/23(金) 18:05:39
バージョン】 Ver.2.04
【設置鯖名】 @Pages
【PHPのバージョン】5
【手動】 動いたり動かなかったり
【実行】 GAE-Cron
【実行間隔】 2分間隔
【不明点】エラーが

検索してもわからなかったので、こちらで質問させていただきます。
昨日まで普通の動いてたbotが、リプライもたまにしか返さず、ポストもしなくなりました。プログラム自体触っていないので、とりあえずサーバーにファイルをもう一度上げなおしたところ、
Fatal error: Class 'HTTP_OAuth_Exception' not found in /usr/local/www/htdocs/hajimetan/public_html/PEAR/HTTP/OAuth/Consumer/Exception/InvalidResponse.php on line 39

なエラーが出ました。
書かれているファイルを触ったこともありません。
どのように修正したらいいでしょうか?
よろしくおねがいします。

411名無しさん:2010/07/23(金) 19:49:58
こんにちは。
水曜日の3時〜8時だけ違うポストデータを読み込ませたいのですが、うまく動きません。(エラーもなくどうしたらいいか分からない状態です)
PHPはこちらで合っていますでしょうか??

if (date("w") == 4){
if(date("G") > 14 && date("G") < 20){
$response = $eb->postRandom("data2.txt");
}else {
$response = $eb->postRandom("data1.txt");
}
}else{
$response = $eb->postRandom("data1.txt");
}

412名無しさん:2010/07/23(金) 20:19:08
>>410
最近Oauthの調子が悪いと過去ログに書いてませんでしたか?
検索不足だと思います。

>>411
http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1273843076/551-554を使ってローカルチェックしつつ構文覚えて修正してみるといいよ。
テストの時は当然曜日はテストの曜日で試してね

413名無しさん:2010/07/23(金) 20:24:11
>>412 さん
ありがとうございます。
確認してみます。

414名無しさん:2010/07/23(金) 21:04:14
>412

検索不足でした・・・スレ汚し申し訳ありませんでした。
ご指導ありがとうございました。

415名無しさん:2010/07/23(金) 21:27:14
>>411
}else {
$response = $eb->postRandom("data1.txt");
}
}else{
$response = $eb->postRandom("data1.txt");
}
なんで同じelseが2つあるの???

416名無しさん:2010/07/24(土) 00:16:37
>>415 さん
水曜日だったとき、3時〜8時以外の時間帯のelseと、
水曜日じゃない時のelseです。
この書き方間違ってますか?

417名無しさん:2010/07/24(土) 00:27:26
>>416
if→もし、else→それ(if)以外全てなので、elseが2個あるのは構文的におかしいです
非公式wikiをよくみれば分かると思うので、もう一回じっくり読んでみて下さい

418名無しさん:2010/07/24(土) 00:32:16
ああ、ごめんなさい
曜日と時間のifでしたか…
構文としては合っているみたいですね

うーん
うまく動きませんとの事ですが、もう少し詳しい状況が分からないと、なんともアドバイスしづらいですな…

419名無しさん:2010/07/24(土) 01:48:36
>>416
これでいけないかな?
水曜の3時〜8時以外の時間帯のelseは多分余計。
ポスト部分をechoに置き換えたローカルチェックはしてね。

if(date("G") > 14 && date("G") < 21 && date("w") == "4"){//木曜の15〜20時にポストします
$response = $eb->postRandom("data2.txt");
}else{//それ以外の日時のポストします
$response = $eb->postRandom("data1.txt");
}

420名無しさん:2010/07/24(土) 14:39:19
「TLに反応しないで」とか言うと反応しないとかできますか?


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板