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

TwitterBotPHP質問スレ

1pha:2009/12/01(火) 17:51:42
http://pha22.net/text/twitterbot.html
でphaが公開しているPHPのTwitterスクリプトについて、
スレッド立てるほどじゃない質問はこちらにどうぞー。
phaがときどき巡回しますが対応が遅れることも多いので、質問に答えてくれる人も募集しています!

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に反応しないで」とか言うと反応しないとかできますか?

421名無しさん:2010/07/24(土) 17:51:44
こんにちは。
リプライに「●●」という言葉が含まれていた場合、
reply.phpというファイルに飛ばし、
それ以外は以降の処理を行うという風に分岐させようと思い、
bot.php(リプライ、TL反応用ファイルです)を以下のようにしました。
が、実際「●●」を含めてリプライを飛ばす→bot.phpを手動で叩いても
真っ白な画面になってしまいます。
(特にエラーは出ません)
 リプライがない状態では、当たり前ですが
「5分以内に受け取った@はないようです」と出ます。

以下、bot.phpのソースです。

<?php
require_once("EasyBotter.php");
$eb = new EasyBotter();

//もらったリプライに「●●」が含まれていた場合
$aaa = "●●";
if(preg_match("/".$aaa."/u",$reply->text)){
$response = $eb->reply(5,"","reply.php");

これ以降elseifが続きますが、現在稼動しているものですので問題ないと思います。
どこがおかしい可能性があるのか、ご教示くださいませんでしょうか。
よろしくお願いします。

422421:2010/07/24(土) 17:53:59
すみません、コピーし忘れましたが
ifを閉じる}は付いています。

よろしくお願いします。

423名無しさん:2010/07/25(日) 00:21:42
>>417
>>418
>>419 さん

どうもありがとうございました。
419さんの構文でローカルチェックしたところ、うまく行きました!
たくさんの回答本当にありがとうございました。

424名無しさん:2010/07/25(日) 12:09:22
>>421
リプライはbot.phpで指定でなくEasyBotter.phpを改造した方がいいと思うけど…
wikiのID分けを単語でファイル分けるように改造するとか

425うら:2010/07/25(日) 12:22:45
>>420
「できる/できない」で問われれば、答えは「できる」です。
プログラムですからね。
といいますか、そういう風に仕込むのですよ。仕掛けを。

>>421
その $reply->text には、処理の時点で何が代入されるとお考えですか?
ちょっと echo してみましょう。

なお、非公式 wiki の方にユーザ別処理の改造が載っていますので、
そちらを参考に改造してみてください。

426名無しさん:2010/07/25(日) 14:07:22
質問させていただきます。

【バージョン】Easybotter Ver.2.03(あえて更新してません)
【設置鯖名】 @Pages
【PHPのバージョン】5
【手動】 動作に問題ありません
【実行】 GAE-Cron
【実行間隔】 5分間隔
【不明点】通常動作は問題なし。「Easybotter.php」をカスタマイズしたい

「EasyBotter 非公式wiki」様
(ttp://www26.atwiki.jp/easybotter_wiki/pages/1.html)に載っている、
「reply」の「特定のリプライ反応をリプライではなくTL発言にする」という
機能を利用させていただいているのですが、
どうやらこの機能は直接リプライを向けられた時にしか反応しないようなのです。
この機能をタイムラインの単語反応時にも利用したいのですが、
生憎自ら改造できるほどの知恵がありません。
どうか、ご教授お願いします。

427名無しさん:2010/07/25(日) 15:21:34
>>426 を書いたものですが、自己解決致しました!
タイムライン返信部にも同じ改造を施せる部分があったようです!
ありがとうございました!

428名無しさん:2010/07/25(日) 20:52:43
>>425
ありがとうございます!
どうすれば良いですか?
Easy Botterの改造が必要でしょうか?

429名無しさん:2010/07/26(月) 01:54:26
>>428
規定外のことやろうとするなら、EasyBotterの改造は必要に決まってる
自分でスクリプトのアウトラインくらいは考えてるの?

wikiの改造方法を見れば、いくつかを組み合わせて応用すればできる……とわかりそうなものだが

430名無しさん:2010/07/26(月) 03:08:33
>>428
どうすればいいのですか?って…
どうしたいか聞いたのだったら、どうしたらいいのかも想像がつくはず。
すでに書いてあるプログラムに対して、自分のしたいことに合わせて書き換えないと
意図通りに動かないということくらいは分かるよね?

次はどう改造したらいいんですか?と聞くつもりだったのだったのなら
まずはEasyBotter.phpを見て、どんな風に処理しているのかを見て考えたらいい
コメントが多いから、ここでこんな命令を出しているんだという流れが見えてくるから

431はげあたま:2010/07/26(月) 14:20:27
以下うまく動かない><もう自分ではお手上げなのでだれか添削してください
//自動Unフォロー
function autoUnFollow(){
$followers = $response = $this->getFollowers();
$followList = array();
foreach($followers as $user){
$followList[] = (string)$user->screen_name;
}
$friends = $response = $this->getFriends();
$friendsList = array();
foreach($friends as $user){
$friendsList[] = (string)$user->screen_name;
}
$unfollowQueue = array();
foreach(array_diff($friendsList, $followList) as $user){
array_push($unfollowQueue,$user->screen_name);
}
foreach($unfollowQueue as $screen_name){
$response = $this->UnfollowUser($screen_name);
}
}
--------
function UnfollowUser($screen_name)
{
$url = "http://twitter.com/friendships/destroy/&quot;.$screen_name.&quot;.xml&quot;;
return $this->_setData($url);
}

432はげあたま:2010/07/26(月) 15:22:50
うまくいったので、ご報告します。
//自動Unフォロー
function autoUnFollow(){
$followers = $response = $this->getFollowers();
$followersList = array();
foreach($followers as $user){
$followersList[] = (string)$user->screen_name;
}
//var_dump($followersList);
$friends = $response = $this->getFriends();
$friendsList = array();
foreach($friends as $user){
$friendsList[] = (string)$user->screen_name;
}
//var_dump($friendsList);
//var_dump(array_diff($friendsList, $followersList));
$unfollowQueue = array();
$unfollowQueue = array_diff($friendsList, $followersList);
foreach($unfollowQueue as $screen_name){
$response = $this->UnfollowUser($screen_name);
}
}
としたら、うまくアンフォロー出来ました。
お騒がせしました。

433はげあたま:2010/07/26(月) 16:50:10
//自動Unフォロー
で、追記。
bot.phpにいかを追加して完了です。

$response = $eb->autoUnFollow();

434421:2010/07/27(火) 14:38:39
>>424-425
いただいたアドバイスの通り、Wikiを見ながら
bot.phpではなくEasyBotter.phpを改造しました。
結果、希望通り動作いたしました!!

分岐したファイルにどうスクリプトを書くか、まだ先は長いですが
とりあえず一歩進めて嬉しいです。
アドバイスをありがとうございました。
また行き詰った時は相談させて下さい。

435名無しさん:2010/07/27(火) 17:25:43
>>429-430
wiki見るなり頑張ってやってみます!
ありがとうございました!

436名無しさん:2010/07/29(木) 11:00:29
質問させてください。

replay_pattern.phpの中にxmlの情報を取り込み、
それをリプライ文章に入れて投稿したいのですが、
エラーが出てしまいます。
以下、ソースです。

function aaa($b, $c){
$req="http://xxxx";
$req.="?b=".$b."&c=".$c;

$xml=simplexml_load_file($req);
$d = $xml->ddd;
$e = $xml->eee;
}
$b=111;
$c=222;

echo aaa($b,$c);

この$dと$eの値を取り込んで発言したいのですが、うまくいきません。
function aaa($b, $c){}の中に、$data = array(…を入れるとエラーが出るし
外に出すと、$dと$eが無視されて他の部分だけで投稿されます。

調べてみて、関数内で参照された変数は、関数内でしか有効でないと分かりました。
が、function aaa($b, $c){}内に入れるとエラーが出るので、どう書いたらいいのか・・・
staticにすればいいのかと思い書いてみましたが、書き方が悪いのかうまくいきませんでした。

という感じでお手上げです。
どうかアドバイスをお願いします。

437うら:2010/07/29(木) 12:22:28
>>436
こちらは Easybotter のサポート BBS です。
で、公式サイトにはちゃんと動く EasyBotter の php ファイルがあります。
この php の中で、関数はどのように値を吐き出すのか、実例があります。

ちゃんと勉強する気があるなら php 解説書をサラッとでも一読を。

438はげあたま:2010/07/29(木) 14:34:36
質問:
EasyBotter.phpの、自動フォローのところで、
foreach($followList as $screen_name){
$response = $this->followUser($screen_name);
> if($error = $response->error){
>break;
> }
}
>としたら、エラーで抜けますか?

439shami blue:2010/07/29(木) 22:15:34
http://sarah1635.blogspot.com/

440LOLITA BOARD:2010/07/29(木) 23:56:42
http://lix.in/-85767e

441436:2010/08/02(月) 11:40:09
>>437
今までネットのPHPリファレンスを読みながらなんとか記述していましたが、
いい機会だと思い、本を購入し読んでみました。
その上で分からない部分をネットで補足したりしながら書いてみて、
無事$data = array(…に反映させ、投稿する事ができました。

これからも行き詰る事がたくさんあるかと思いますが、
何とか頑張って勉強したいと思います。
ありがとうございました。

442名無しさん:2010/08/02(月) 18:15:02
スレ移動して来ました、よろしくお願いします

EasyBotter2.04betaを使わせていただいております
reply_pattern.phpの中で、もらったリプライ文章の中に
とあるワード(例の場合は$a)があるかないか、という事をしたいのですが、
リプライ元の文章は、どのように記述すればいいのでしょうか

$a = array(
"apple"=> "りんご",
"orange"=> "オレンジ",
);

foreach($a as $a_kay => $a_val){
if(preg_match("/" . $a_kay . "/u", ○○)){
$b = $a_kay;
break;
}

○○にリプライ元の文章を入れたいのです
返すリプライの中に含める場合は{tweet}だと分かるのですが
○○の部分にそのまま書いても認識してくれません
$reply->textかなと思いましたがダメでした

いろんなスレを見てまわりましたがどうしてもわかりません
ご教示お願いします

443名無しさん:2010/08/02(月) 22:38:22
>>442
今のあなたにアドバイスすることは「日本語でおk」ってことです
最初に書きこんだスレッドでのレスをもう一度読み返して下さい

というわけで、>>442は以降スルーで

444422:2010/08/03(火) 00:30:13
>>443
思い込みで勘違いしてしまいました
すみませんでした

445名無しさん:2010/08/05(木) 13:21:57
こんにちは。EasyBotter2.04を使わせていただいております。
現在、ランダム返信をrandam_reply.txtというファイル1つで行っているのですが、
これをリプライに特定の文字列(例えばbot名前)を貰ったときに
もう1つのファイルからランダム返信させる、ということは可能でしょうか?
文字列に対する反応としてreply_pattern.phpに全て記述しようとすると
ファイルが大きくなってしまうので(名前が2つあるためと、パターンを多くしたいため)
ファイル自体を分けられないかと考えたのですが

446名無しさん:2010/08/06(金) 00:03:56
>>445
wikiみてくると幸せになれるかも

447figronl:2010/08/06(金) 23:53:23
Dream Kelly
prev: hp://www.turboimagehost.com/p/3894174/Dreams.jpg.html
part1: hp://www.unibytes.com/EcaAhylJ2J-B
part2: hp://www.unibytes.com/wLoYKePScXsB
part3: hp://www.unibytes.com/CvhWFOyvhL0B
7kelly7

448のり:2010/08/11(水) 12:08:34
こんにちは。EasyBotter2.04を使わせていただいております。
早速ですが質問させていただきます。

自分のbotに私のことを登録している名前ではなく「お母さん」と呼ばせたいのですが…。
ID別に呼び方を変えるにはどのようにしたらいいでしょうか?
検索の仕方が悪いのかもしれないのですが出てこなかったのでお分かりの方いらっしゃいましたら教えていただきたく思います。
宜しくお願い致します。

449うら:2010/08/11(水) 14:02:57
>>448
検索してお分かりのことと思いますが、 EasyBotter にその機能はありません。
ですので、改造なりによってその機能を付け加えることが必要です。

EasyBotter.php は割と見やすいソースですので、処理の流れが容易に読めます。
流れが分かれば、どうしたら良いのかが見えてくると思います。
非公式 wiki には他の改造例が載ってますので、参考になさってください。

450のり:2010/08/11(水) 14:58:36
>>449
ありがとうございます。
改造する位置など不安になりましたらまたお世話になるかもしれませんがwikiを参考にし、呼ばせてみようと思います。
回答ありがとうございました!

451名無しさん:2010/08/12(木) 06:51:53
非公式wiki落ちてるような・・・

452名無しさん:2010/08/12(木) 13:24:11
>>451
スレ内、板内をちゃんと見てない証拠
新しいURLで稼働してる

453名無しさん:2010/08/15(日) 04:11:52
元AKB48の中西里菜AV出演!!サンプル動画
http://hotmaster.dtiblog.com/blog-entry-206.html

454名無しさん:2010/08/24(火) 02:27:47
>>448
一応こういうのがあるけど試して動作したら報告くれる?
http://twbot.blogspot.com/2010/08/http-setnickname.html

455名無しさん:2010/09/02(木) 12:07:38
質問失礼します。
Easybotter2.04を使っています。
リプライ上に特定の単語を含む場合、別のリプライパターンを読み込ませたいのですが、どのようにしたらいいでしょうか。

例:「おいしい」なら通常のパターンファイル
  「りんごおいしい」「おいしいりんご」等の場合は別のパターンファイル

456うら:2010/09/02(木) 12:34:58
>>455
リプライパターンの切り替えは一筋縄ではいかないと思います。
もちろんできることはできるはずですが。

なお、「りんごおいしい」「おいしいりんご」のパターンを「おいしい」より先に記述すれば
それぞれ別個のリプライを返すことはできますよ。

457455:2010/09/02(木) 22:17:16
>>456
レスありがとうございます。
「りんご」という単語が入った時、同リプライ内にある「おいしい」や「まずい」等複数の単語に対する特殊なリプライを返したかったので、
「りんご」を含む場合の返信を一つのファイルに纏められれば便利だと思ったのですが、難しいようですね…
素直に同じファイルに書き分けてみます。ありがとうございました。

458名無しさん:2010/09/03(金) 22:44:17
質問させていただきます。
特定のアカウントに対しては別のリプライパターンを読み込ませたいというwikiの項目を見てそれを入れたのですが、テストをすると反応ワード以外を実験で言うとランダム返信をします。
専用phpに入れた反応ワード以外をリプライすると無視するようにしたいのですがどのようにしたらよろしいでしょうか。
教えていただきたく思いますので宜しくお願い致します。

459名無しさん:2010/09/05(日) 22:17:15
EasyBotter.phpに関して質問します。

フォロワーIDと名前が一致しませんが、convertText関数が、それぞれランダムに生成しているためだと理解しています。
この置き換えを使用するときは、一致しているほうがなにかと便利だと思っていますが、なぜ一致しないような設計になっているのでしょうか?

ちなみに、自分は、ランダム部分を外に出し、その上で配列の最大値を超えないようにrand関数の引数を0とcountの-1にして動作させています。

460名無しさん:2010/09/07(火) 12:14:29
>>458
特定のアカウントにのみ反応ワード以外をリプすると無視させるってことだよね?
正しいやり方じゃないかもしれないけど…
自分は専用phpの最後に、

"."=> array(
"[[END]]",
),

を入れてますよ。

461名無しさん:2010/09/07(火) 15:05:46
1度実行されたら、複数のポストを投稿してくれるように出来ませんか?

最終的には、指定時刻に複数ポスト投稿をしようと考えています。

例:9時12時15時17時20時23時になったら、毎回
「私の名前は●●です。」
「私の趣味は●●です。」
「好きな食べ物は●●です。」
という、ポストを別々に投稿する。(つまり、毎時 計3回投稿)

確かに、
15時「私の名前は●●です。」
15時2分「私の趣味は●●です。」
15時4分「好きな食べ物は●●です。」
と、設定することもできるのですが、
投稿する内容を書き換えることが何度かあり、且つ投稿させる数の増減も予想されます。
ですので、その手間を考えると、最初に提案した方法が望ましいのですが、どなたか方法を教えていただけないでしょうか。

よろしくお願いします。


新着レスの表示


名前: E-mail(省略可)

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

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

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

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