レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。
Twitter Bot初心者質問スレ
どんな初心者レベルの質問でも質問していいスレッドです。
内容もTwitter Botに関するものなら何でもありです。phaさんのスクリプト以外の質問もOKです。
でも返事が返ってくるかどうかはたまたま分かる人がいるかどうかなので、返事が返ってこなくても泣かない。
返答してくれた人にはお礼をね。
>>210
途中で離脱してしまって申し訳ないです
無事動いたようでよかったです
あと最初のほう仰られてた{name}などを使いたい場合ですが
phaさんの//id等を変換というところを参考にしてください
>>211
いえいえこちらこそ色々お世話になりありがとうございました。
名前呼びも問題なく済んだので、botが賢くなって嬉しいです。
viaの変更が分かりません。
一晩中ネットを探しまわったのですが、見つけることができませんでした。
どなたか教えてくださいませんでしょうか。
お願いします。
>>213
このスレの >>56 ,161を見てください。
公式サイトも見てみましょう。
プログラミングができなくても作れるTwitter botの作り方 - setting.phpの編集
http://pha22.net/twitterbot/2.0/setting.php
はじめまして、質問失礼致します。
2.03betaを使ってbotを作っています。
cron・設置サーバーどちらもさくらインターネットを利用しており、
postを一時間に一回、リプライを5分に1回の頻度で
動くように設定してあります。
今はテスト段階なのですが、昨日の夜まではリプライ及び
タイムラインへの反応もきちんと時間通りに動作していたのですが
今朝になって突然リプライを返さなくなってしまいました。
勿論中身は何もいじっていませんし、
bot.phpにアクセスしても真っ白な画面が出るだけです。
(昨日までは『5分以内に受け取ったリプライは〜』のような表記が出ました)
1時間に一回のポストはきちんと動作しているようなので
cronが止められたと言う訳でもなく、理由が全く分かりません…。
どうぞよろしくお願いします。
【バージョン】 Easybotter2.03beta
【設置鯖名】 さくらインターネット
【PHPのバージョン】 PHP 5.2.12
【実行】 自動
【手動】 動かない
【不明点など】 リプライに反応しない・bot.phpにアクセスしても何も出ない
追記です。
bot.phpの方は
if(date("G") % 1 === 0 && date("i") == 0){
$response = $eb->postRandom("data.txt");
}
if(date("i") % 5 === 0){
$response = $eb->reply(5,"reply_pattern.php");
}
if(date("i") % 5 === 0){
$response = $eb->reply(5,"reply_pattern2.php");
}
と書き、(他の余分な行は/*以降に移動させてあります)
EasyBotter.phpの方は
//リプライする
function reply($cron = 5, $replyFile = "data.txt", $replyPatternFile = "reply_pattern.php"){
//タイムラインに反応する
function replyTimeline($cron = 5, $replyPatternFile = "reply_pattern2.php"){
と言う風にほんの一部しか手を加えていません。
また、リプライのパターンもそれなりの種類を用意しているので
連投規制に掛かっているという訳でも無いと思っています。
昨日までは動いていたので、本当に不思議です…。
>>215
現在、リプライのみ返さないのはTwitterbotのcronスレの83にあるTwitter側の不具合が原因と思われます。
ポストはできますが遅延によりタイムラインの取得ができていないので、送られてきたリプライも取得できず返事を返せないのです。
こちら側で対処することはできないので復旧を待つしかありません。
>>216
条件設定がすべて時刻に関係していますので、指定時刻に叩かないと反応しませんね。
あと php の % は割り算の余りですので、式の再検討を。
また、基本的に Easybotter.php の方はいじらなくて良いように設計されていますよ。
何度もすみません。
一部間違って書いてしまった箇所があるのでもう一度失礼します。
【バージョン】 Easybotter2.03beta
【設置鯖名】 さくらインターネット
【PHPのバージョン】 PHP 5.2.12
【実行】 さくらインターネット
【手動】 動かない
【不明点など】 リプライに反応しない・bot.phpにアクセスしても何も出ない
何度もbot.phpに手動でアクセスしていると、たまに
「5分以内に受け取った@は〜」と出ることが分かったのですが
リプライを送ると真っ白になってしまいます。
>>216
あと、reply()の第2引数は、1次配列しか想定されていないようですので、
同梱のようなreply_pattern.phpを読み込ませると、エラーになると思われます。
また、5分ごとの処理が複数あるなら同じ { } 内に入れると良いですよ。
素早いお返事ありがとうございます。
>>217
遅延の可能性も考えたのですが、webからTLを見ている限り
フォローしている人達のツイートは至って正常に流れているようですし
私のアカウントから送った@も受け取っているようですので
遅延では無いのでは?と思っています。
>>218
回答ありがとうございます。
>基本的に Easybotter.php の方はいじらなくて良いように設計されていますよ。
そうなんですか?
デフォルトでは確か2分で設定されていたと思うのですが、
5分で受け取りたい場合でも変更しなくて良いということでしょうか?
1次配列等の部分は何分手を出し始めたばかりですので
お恥ずかしながら今は意味がよく分からないのですが、もう少し調べてみますね。
>>221
遅延がらみはこちらを参照ください。
http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1259657570/168
まずは公式サイトやサンプルで書かれているその通りにやってみましょう。
http://pha22.net/twitterbot/2.0/files.php
プログラムは規格に外れたことはできません。
規格外のことをしたいのであれば、修正・改造が必要です。
修正・改造には、知識と技量が必要です。
> デフォルトでは確か2分で設定されていたと思うのですが、
EasyBotter.php で指定されているデフォルト値は、
引数を指定しない場合の措置ですので、変えたい時は bot.php の方で指定します。
ご丁寧にありがとうございます。
実はbotを2つ動かしているのですが、先ほど試しにbot.phpの
リプライに関するif構文を消してみたところ
片方は無事に動作し、リプライも返すようになりました。
もう一つはまだ反応しませんが、上記1つのbotとほぼ同じ仕様なので
簡単な記述か何かを間違えているだけだと思います。
多分これなら後は自力で直せると思いますので、頑張ってみます。
相談に乗って頂き、どうもありがとうございました!
【バージョン】 バージョン2.04beta
【設置鯖名】 さくら
【PHPのバージョン】 5.2.12(標準)
【実行】 さくらのcron
【手動】 動く
【不明点など】 TLに反応しない
質問失礼します!リプライにはきちんと反応するんですが、
TLの特定ワードに一切反応してくれなくて困っています。
bot.phpは↓のように書いてあります。
//=============================
//botの動作をここに書いてください
//先頭に//がある行はコメント扱いなので実行しません。実行したい行の頭の//を削除してください。
//=============================
if(date("G") % 1 === 0 && date("i") == 0){
$response = $eb->postRandom("data.txt");
}
$response = $eb->reply(2,"data2.txt","reply_pattern.php");
$response = $eb->replyTimeline(2,"reply_pattern2.php");
/*
cronは2分毎に設定しています。bot.phpにアクセスすると上の行に
「2分以内に受け取った@はないようです。」と一行だけ出ます。
(@を貰っている時はメッセージが出ます)
TLに反応した場合、多分もう一行リプライ反応と同じ文章が出ると思うのですが
(違ったらごめんなさい)リプライへの対応?しか出ないんです。
EasyBotter.phpは公式サイトの説明や他の人への回答を見て
触らないほうがいいのかと思って何も手を加えていないのですが
何かした方がいいのでしょうか??
よろしくお願いします!
>>224
さくらのCRONだけってことはSSHで設定したのかな
だとしたらCRON・鯖のエラーってことはまずないね
リプはできてるのだからTwitter側のエラーとも考えられない
一番考えられるのはreply_pattern2.phpの文字コード改行コードかな
もう一度確認してみて
ごめんなさい。もう一度失礼します。
EasyBotter.php、182行目を試しに
function replyTimeline($cron = 2, $replyPatternFile = "reply_pattern2.php"){
と、書き換えて、次にbot.phpを
$response = $eb->replyTimeline(2,"reply_pattern.php");
と言う風に変更してみたのですが、どっちも結局同じ現象になりました。
何と言うか「TLに反応する」という機能がすっぽり抜け落ちている?感じです。
もしかしたらPEARフォルダの中身が上手くアップロード出来てないのかもと
今しがたDLして再度アップロードしてみたのですが、変わりません…。
遅延とも言われているみたいですが、リプライには反応するので
それも違うのかな?と頭を悩ませています。
>>225
回答ありがとうございます!
早速確認してみたのですが、文字コードはUTF-8N、改行コードはLFで
間違ってはない…と思います。
>>227
おかしいね、自分はV.2.04だけどTL取得はちゃんと動いてる
>>228
そうですよね。検索してみても
「TLに反応しない」という質問はあるみたいなんですけど、
そもそもTLに反応する機能が動かないと言うパターンは
無いようなのでどうすればいいか分からず困り果てています…。
必要ならbot.phpでもEasyBotter.phpでもreply_pattern2.phpでも
どれでも貼って構わないのですが、貼ったほうがいいですか??
ただbot.phpでもEasyBotter.phpは最初に説明した通り
ほとんど何もいじっていません。
>>229
個人的にはDLし直してUPし直す方が良いと思うよ
UP時にバイナリUPかどうか、勝手に文字コード変換されてないかも再確認しながら
>>224
さくらのcronは2分毎の設定は駄目なんじゃないでしょうか?
当方もさくらを使ってますが問題なく動いてます。cronは5分毎です。
TLへの反応のメッセージが出ないのは単順なミスかと思いますので
reply_pattern2.php見直してみてください。
"や),が足りなかったり多かったりするだけで、メッセージが出ませんので。
>>229
まずphpエディタで構文ミスがないかチェックして(そういう機能付きのエディタがあるから)
それでミスがなかったらアップしてみればいいよ
大事な情報はもちろん消してね
皆さんご親切にありがとうございます!
先ほど、特に何もせず放置していたら突然一回だけTLに反応したので
もう一度bot.phpにアクセスしてみたら同じ状況になりました。
よく分かりませんが、皆さんからのアドバイスを試してみます。
>>231
そうなんですか?
1ヶ月くらい前から2分で設定しているのですが、特に何も
問題なかったのでそのままにしていました。
5分にした方が良さそうならそうしてみますね!
ちなみに5分に変更する場合、書き換える場所はbot.phpだけで良いんですよね?
>>232
分かりました!
ではそういうエディタを探してチェックしてみますね。
もしかしたらまたお世話になるかもしれませんが、
その時はよろしくお願いします。
【バージョン】Ver.1.42
【設置鯖名】 ゼロ・ウェブサーバー
【PHPのバージョン】 不明
【実行】 GAE
【手動】 動く
【不明点など】 リプライが返ってこない
最初、リプライの種類不足なのかと思い、20個ほど用意しましたが、反応しません。
10種類を2倍にするだけじゃやっぱりダメだったんでしょうか……。
スレを読んでみてもどうしてもわかりませんでした。ご返答お願いします。
>>234
ゼロ鯖は確かcronで不安定か動かなかった気がします
自分は過去にGoogleAppEngineでやったことあったんですがダメだったんで鯖変えました
>>235
そうなんですか!ちょっと鯖移動考えてみます…。
>>233
一つのcronジョブで2分おきにしてる?
それとも複数のcronジョブをずらして2分おきにしてる?
初めまして、初心者です。
ぜひ、教えていただきたいのですが。
現在、EasyBotter2.04betaを利用中。
レンタルサーバーは「さくらインターネット」を利用しています。
http://pha22.net/twitterbot/ こちらの手順に従い、OAuth認証用のキーも取得し、
いざ、botを動かそうと、EasyBotterにアクセスした所、エラーが出てしまいました。
・・・・・EasyBotter.php on line 49と表示が出たので、EasyBotterを開き、「49」行目を確認しましたが、
どこが間違っているのがさっぱり分かりません。
require_once 'HTTP/OAuth/Consumer.php';
と書いてある所です。
どのように設定を変更したらいいのか、ぜひ教えてください。
よろしくお願いします!!
>>238
setting.phpの4つのOAuthキー入力が間違ってないかもう一度確かめた方がいいと思う
>>239
ありがとうございます!!
OAuthキーの再入力をしたところ、今度はまた別のエラーが出てきてしまいました。。
今度はbot.phpの5行目へのエラーです。
特にいじってはいないのですが・・・お分かりになりましたらぜひお願いします!!
>>240
>>161 読みなされ
>>241
申し訳ありません。
【バージョン】EasyBotter2.04beta
【設置鯖名】 さくらインターネット
【PHPのバージョン】
【実行】 CRON鯖名「さくらインターネット」
ブラウザ自動更新
【手動】 動かない
【不明点など】 以下のエラーが表示。
Fatal error: require_once() [function.require]: Failed opening required 'EasyBotter.php' (include_path='.:/usr/local/php/5.2.12/lib/php') in /home/****/www/******/bot.php on line 5
以下のどこをどのように直せばよいか分かりません。
一応、スレは読んだのですが分からずに質問させていただきました。
<?php
//=============================
//EasyBotterを呼び出します
//=============================
require_once("EasyBotter.php");
$eb = new EasyBotter();
//=============================
//botの動作をここに書いてください
//先頭に//がある行はコメント扱いなので実行しません。実行したい行の頭の//を削除してください。
//=============================
$response = $eb->autoFollow();
$response = $eb->postRandom("data.txt");
//$response = $eb->postRotation("data.txt");
$response = $eb->reply(2,"data.txt","reply_pattern.php");
//$response = $eb->replyTimeline(2,"reply_pattern.php");
改めて、よろしくお願い致します。
>>242 です
書き忘れました。
【PHP】のバージョンは PHP 5.2.12 です。
よろしくお願いします。
>>242
エラーの意味はわかってらっしゃいますか?
Google等でエラー文を検索すればすぐにわかりますが、
関係あるのはbot.phpではなくEasyBotter.phpの方です。
EasyBotter.phpを弄っていないのであれば取るべき方法は限られます
・アップロードされているか
・文字コード、改行コード
・アップロード時にバイナリモードか、文字コード等がかってに変えられていないか
これらを再確認してください。
時間がある時にでも
http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1259657570/168
も読んでみて下さいね
>>244 さん
勉強不足で申し訳ありません。
エラーの意味も分かっていないまま質問してしまいました。
でもおかげさまでなんとかエラー表示されずに進むことが出来ました。
ただ投稿が出来ないので、また調べなおしです。
全くの初心者で、質問ばかりして申し訳ありませんでした。
ありがとうございました。
【バージョン】Ver.2.0.3&2.0.4
【設置鯖名】 xrea
【PHPのバージョン】 5.2.5
【実行】 まだ手動
【手動】 動かない、EasyBotterというタイトルの白紙ページが表示される
【不明点など】
ttp://アカウント名.sサーバー.xrea.com/xxxxx/bot.phpにアクセスすると真っ白になり投稿も何もできない
data.txtは見えています
しばらく1.4を使用していたのですがもっと多機能にしたくて2.0のダウンロードしたファイルを
何もいじらずそのまま手順通りにアップロードしてテストをしようとしていたのですが
ここでつまづいてしまいました…
問題など指摘していただけないでしょうか…
>>234
Mention を投げて、手動でアクセスしてもワードに反応しないのでしょうか?
・設定はこの値になってます? $useReplyPattern = TRUE;
・パターンファイルの文字コード・改行コード、 ) や ; , の過不足はないですか?
>>246
まず>>161 をチェックください。
あとこのスレの全レスに目を通していただければ、糸口が見つかるのではと。
>>247
手動なら動いてるみたいですよ
改造方法について質問させて下さい。
【バージョン】Easybotter 2.04beta
【設置鯖名】さくら
【PHPのバージョン】5.2.1
【実行】GAE-Cronとsetcronjob
【手動】動く
【不明点など】改造場所がわかりません。
現在テスト中ではありますが基本の定時ポスト・リプライは問題なく動いています。
Botの改造方法を紹介するスレの3
http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1259840844/3
こちらの「単語拾いを実装する」を1.43で使っていたので今回2.04でも実装したいと思っています。
2.0のEasyBotterの135行目辺り
//リプライを取得
$response = $this->getReplies();
$response = $this->getRecentTweets($response, $cron * $replyLoopLimit * 3);
$replies = $this->getRecentTweets($response, $cron);
$replies = $this->selectTweets($replies);
$replies = $this->removeRepliedTweets($replies);
の下の方に入れるといいのではと考えてやってるのですがうまくいきません。
1.43ではリプライが$messageでしたのでそこを$replyTweetsや$responseに変えても駄目でした。
エラーが出た場合は書き足したところ、またはエラーが出ずリプライがスルーされる
(反応するリプライはありませんと言われる)
まだ勉強中なので見当違いのことをしていると思います。
どこを改造すればいいかご教示下さい。
お世話になります。
【バージョン】 2.04beta
【設置鯖名】 さくらインターネット
【PHPのバージョン】 PHP 5.2.12
【実行】 GAEcron(15分間隔で動作するよう設定)
【手動】 動きます。
【不明点など】 リプライに10回に1度程度しか反応しない
【パーミッション・文字コード】共に確認済みです。
通常のランダムpostは問題なく動きますし
自動フォローも動いていますが、リプライにのみ「たまにしか」反応しません。
20回ほど試してみたところ、2回だけ反応がありましたが
これは>>217 さんがお書きになられているような
Twitter側の不具合によるものなのでしょうか?
別アカウントからリプライを送った直後に
bot.phpを手動で叩けば、通常postとともにリプライにも反応しています。
ちなみにbot.phpは以下のように設定しています。
--------------
$response = $eb->autoFollow();
$response = $eb->postRandom("data.txt");
$response = $eb->reply(2,"data.txt","reply_pattern.php");
$response = $eb->replyTimeline(2,"reply_pattern.php");
--------------
お手数ですが、どなたかアドバイスをいただけると助かります。
>>251
リプライ用に用意しているツイートパターンが少なすぎて重複規制にあってる、というわけではなく?
>>250
//「◯◯は好き?」という発言を受け取ると「◯◯おいしいです」と返す正規表現のサンプルです
//ただし「◯◯」の前には空白か「、」か「。」を入れないと「は好き?」以前の文章が全て繋がって表示されます
"([^\s、。]+?)は好き?"=> array(
"$1おいしいです",
これじゃだめなの
>>253
レスありがとうございます
その//「◯◯は好き?」という発言を受け取ると「◯◯おいしいです」と返す正規表現
だとその決まった形式でしか受け取れませんが、あの改造だとどんなリプライに対しても返せるので。
現在走らせてる1.43でも割と好評なので、できることなら改造の方でやってみたいのです。
何とかお力添え願えればと思います。
>>254
reply_random.phpでいう
//ここで投稿するメッセージが完成
$message = "@".$replies2[$i]["screen_name"]." ".$message;
はEasyBotter.phpでいう//リプライを作る の下のほうにある
$re["status"] = "@".$reply_name." ".$status;
に値するとだけ言っておきます
>>255
やはり場所を勘違いしてました。
ありがとうございます!
お陰さまで実装できました。
連投すみません。
他にもしかしたら改造したい方もいらっしゃるかもしれないので、一応。
リプライを作る前ではなくて文章の変換の辺りに書き込む・更に少し改造する事で上手くいきました。
>>252 さん
data.txtには400語ほど入っています。
「試しにbotを動かしてみる」に
「tw.txtとreply_pattern.phpとlog.datのパーミッションを
666に設定してください。」とありますがtw.txtというのはどのファイルのことでしょうか?
とりあえず、data.txtのパーミッションを666にしてブラウザでアクセスしてみたところ
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>/home/httpd/ikokoro/public_html/twitterbot/PEAR/HTTP/OAuth/Consumer.php:250</td></tr>
<tr><td align="center">1</td><td>HTTP_OAuth_Consumer->sendRequest('https://twitter. …', Array, 'POST')</td><td>/home/httpd/ikokoro/public_html/twitterbot/EasyBotter.php:515</td></tr>
<tr><td align="center">2</td><td>EasyBotter->_setData('https://twitter. …', Array)</td><td>/home/httpd/ikokoro/public_html/twitterbot/EasyBotter.php:526</td></tr>
<tr><td align="center">3</td><td>EasyBotter->setUpdate(Array)</td><td>/home/httpd/ikokoro/public_html/twitterbot/EasyBotter.php:121</td></tr>
<tr><td align="center">4</td><td>EasyBotter in /home/httpd/ikokoro/public_html/twitterbot/PEAR/HTTP/OAuth/Consumer/Request.php on line 214
というメッセージが出ます。
何度やりなおしてもこのメッセージ。
根本的にまちがっているのでしょうか?
よろしければ助言をお願いします。
サーバーはland.toです。
>>259
それはphaさんの書き間違いで、data.txtのことです
1.42まではtw.txtだった名残ですね
>>251
ええと reply() の第1引数に 2 をしていますが、
要は2分前までの mentions にしか反応しません。
cronを15分間隔で叩くのなら、ここは 15 にしませんと。
同様に replyTimeline もですね。
>>259
Fatal error: Uncaught についてはこのスレッドで頻出ですが、
現在ハッキリとした原因は提示されていません。
基礎的なことを押さえておけば出ないものと思いますが、
もしどうにもならない時は、使用サーバの変更で何とかなるかも知れません。
>>262
うらさんレスありがとうございます。
頻出でしたか… すみません。
自分の知識ではどうにもならないようなので
サーバーを変更してみます。
連続してすみません。
サーバーを@PAGESに変えて、そのままのファイルをアップしたら
Fatal error: Uncaught はなくなりましたが
-----------------------------------
Twitterへの投稿に失敗しました。
ユーザー名:@■■■■■
object(SimpleXMLElement)#5 (2) {
["request"]=>
string(20) "/statuses/update.xml"
["error"]=>
string(23) "Invalid / expired Token"
}
2分以内に受け取った@はないようです。
-----------------------------------
というメッセージが出ました。
私がどこかのファイルの記述を間違っているのでしょうか?
何度もすみませんが、ご助言お願いします。
試行錯誤を繰り返し、やっとbotが昨日動いた初心者です。
知恵を貸してください。
【バージョン】Easybotter 2.04bata
【設置鯖名】 @pages
【PHPのバージョン】PHP-5.2.6
【実行】 GAE(フリーのweb-cronサービス)
【手動】 動く
【不明点など】
TLの言葉に反応しない?
普通に@付きリプライには反応するのですが
どうやらTL上の言葉に、作って以来一度も反応していないようです。
cronは5分おきに、data.txtは8回に1回投稿されるように作ってます。
ためしに手動でやってみたら以下のエラーが出てきました;
【5分以内に受け取った@はないようです。
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ')' in /usr/local/www/htdocs/purinp/public_html/easybotter/reply_pattern_timeline.php on line 28】
もしかしたら私が変なとこを知らずにいじってしまったのかもしれません。
初歩的な質問ですみませんが、解決策を教えてくださると助かります。
よろしくお願いします。
>>264
そのエラーメッセージは英語です。
日本語訳してみてください。
すると何をすべきか分かります。
>>265
まず鯖がばれたから、セキュリティのため、いますぐディレクトリ名を変更して!
で、そのエラーメッセージですが英語です。
reply_pattern_timeline.php の28行目で、) ; , のいずれかの過不足がある、と書いてあります。
>>267
わわ、ごめんなさい!ウッカリしすぎてました。
すぐ変更しました、ありがとうございます。
28行目ですね、ちょっと確認してきます。
何度もすみません、>>265 です。
確認したところ、問題の部分で,が抜けていたところがありました。
そこを直したところエラーが出なくなったので多分このせいだったのでしょう。
小さな見落としでとんでもないことが起こるんですね。
勉強になりました、ありがとうございました!
【バージョン】Easybotter 2.04bata
【設置鯖名】 @pages
【PHPのバージョン】PHP-5.2.6
【実行】 GAE
【手動】 動く
【不明点など】
通常postは20分毎にしたいのですが、リプライ返しは2分毎にしたいのです。
こういう場合はどういう設定にするのがいいのでしょうか。
色々試行錯誤してみたのですがわからず…。
>>270
bot.phpのなかに書いてある説明は読みましたか?
>>271
//bot.phpを実行したときに、0分、15分、30分、45分だったら実行される
これを使えばいいんでしょうか?
自己解決しました。ありがとうございました。
@pages とGAEは相性が悪いんですか?
手動ではなんとか動くようですが、自動だとどうもうまくいかないようで。
手動でやっていると、何回かエラーが出てしまいます。
>>259 さんのようなエラーが出たり(更新したら出なくなりましたが)
TL上の単語を拾った際エラーが出たのか、@(拾い元)Array と投稿されてしまったり…
cronの実行する間隔をぽちぽちいじりすぎてしまってるのもいけないのかもしれません。
しばらく様子を見てみます。チラ裏ごめんなさい。
>>274
良いか悪いかで言えば悪いでしょう
無料サービス×無料サービスという時点でサービスの保証は無いも同然ですから
安かろう悪かろうです
>>266
ご助言ありがとうございます。
英語苦手なんですが…
tokenを再度入力したらbotが無事動き出しました。
Twitterに投稿がはじまって感じるのは「重複投稿ブロック」の存在。
フォローしてくれた人にお礼を送るようなbotを考えたいのですが
同じメッセージは24時間は投稿できないとなると…
素人考えですが、送るメッセージに、
相手の方のアカウント名を自動で入れて投稿するような仕組みを作ることで、
ブロックにかからなくなるのでは?と思ったのですが
そんな簡単な話ではないのでしょうか?
もし、それが可能だとしたら、こちらで提供いただいたファイルに何らかの命令文を書き込むことで
可能になるのでしょうか?
>>276
>>182
>>276
http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1259657502/98
あと>>161 ちゃんと読んだかな?
data.txt上で、行を読み込むごとに連投し、特定の記号を見つけたらやめる
(次に呼ばれた時は、その次の行から投稿を始める)という動作は
設定できるでしょうか
文字どおりプログラミングができないのですが、よろしければ
教えてください。
>>279
できるできないといわれればできます 可能です
>(次に呼ばれた時は、その次の行から投稿を始める)
しかしながらこのように次に呼ばれた時も考えるのであれば
一時的にどこまで呼ばれたのかということを保持せねばなりません
この辺をどうするかですね
>>279
>>161 読んでお勉強しましょう
どうしたらできる?ではなく、ある程度自分で試行錯誤してから質問をドウゾ
改造は初心者スレの領域ではありません
>>278
ご丁寧なご指導に感謝いたします。
仰るとおりに、改造など考えずに、
初心者のままでいることにします。
やはり私には難しいです いろんな意味で。
失礼しました。
お世話になっております
【バージョン】Easybotter 2.04bata
【設置鯖名】 @pages
【PHPのバージョン】PHP-5.2.6
【実行】 GAE
【手動】 動かない
【不明点など】
object(SimpleXMLElement)#10 (2) {
["request"]=>
string(20) "/statuses/update.xml"
["error"]=>
string(19) "Incorrect signature"
}
のエラーが表示されたり、postに成功しても
:—*‘z‚³‚ñ½‚¢‚Ȃ¨Žo‚³‚ñµ‚©‚Á½‚ȁB
のような文字化けしたような文字列がpostされてしまいます。
settingに問題があるのでは、というレスを拝見したので何度も直したのですが、一向に改善しません。
他には何か原因はあるのでしょうか?
>>283
twitterでOAuthの設定BrowserからClientにした?
皆さんお疲れ様です。
凄く初歩的な質問なのですが、お答え頂けるとありがたいです。
【バージョン】2.03
【設置鯖名】 @pages
【PHPのバージョン】PHP-5.2.6
【実行】 GAE
【手動】 動く
【不明点など】 通常ポストは問題ないがリプライができない。
@で話しかけたとき、リプライを返してくれはするのですが
どれもreply_pattern.phpで設定した返事ではなく、data.txtからのランダムな文章のリプライになってしまいます…
bot.phpは
//$response = $eb->autoFollow();
$response = $eb->postRandom("data.txt");
//$response = $eb->postRotation("data.txt");
$response = $eb->reply(2,"data.txt","reply_pattern.php");
//$response = $eb->replyTimeline(2,"reply_pattern.php");
と設定しています。
reply_pattern.phpの中身は
<?php
$data = array(
"テスト"=> array(
"返信A",
"返信B",
),
);
としています。
テスト と話しかけた後、手動でbot.phpを叩くと
@●●_bot 通常発言内容1 http://twitter.com/ ●●_bot/status/*********
Warning: preg_match() [function.preg-match]: Compilation failed: nothing to repeat at offset 0 in *********/EasyBotter.php on line 237
@●●_bot @○○ 通常発言内容2 http://twitter.com/ ●●_bot/status/*********
とエラーがでています。
EasyBotter.php自体は触っていません。(文字コードはUTF-8、改行コードはLFに設定しました)
よろしくお願い致します。
>>285
2.04を使用して下さい
>>286
すみません…仰るとおり、改めて2.04をDLし実行したらできました。
ありがとうございます!
>>284
Clientにしてあります。
どうやら文字コードがいつの間にか違うものになってたのが原因のようでした;
ありがとうございました。
いつもお世話になっています。
原因不明で困っています。
【バージョン】Easybotter 2.04bata
【設置鯖名】 さくら
【PHPのバージョン】PHP-5.2.12
【実行】 さくらcron
【手動】 動かない、文字化けする
【不明点など】
急に定期ポストだけ反映されなくなり困っています。
また、たまに反映されても文字化けしてしまいます。
bot.phpに直接アクセスしてみたところ
object(SimpleXMLElement)#9 (2) {
["request"]=>
string(20) "/statuses/update.xml"
["error"]=>
string(19) "Incorrect signature"
}
このようなエラーが出ました。OAuthの設定はClientになっています。
リプライは問題なく返すのですが定期ポストだけができません。
定期ポストはテキストファイルで作成しています。
>>290 です
日本語がおかしくてすみません。
定期ポストはメモ帳で作っています。
メモ帳ってwindows付属のですか?
それじゃあ文字コードを保存できません
文字コード保存まで出来るテキストエディタを使用してください
TeraPadなど
お世話になってます
【バージョン】Easybotter 2.04bata
【設置鯖名】 さくら
【PHPのバージョン】PHP-5.2.12
【実行】 さくらcron
【手動】 動かない
【不明点など】
定期postはぽつぽつ呟いているのですが
(時々規制でもなく呟かなくなったりしているみたいですが…)
リプライにたいしてまったく反応を示しません。
某ジェネレータからPHP移行したいのですが
リプライに反応しないのでこれでは移行するにできません…。
何が原因なのでしょうか?教えて頂けないでしょうか…!
>>293
http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1260351215/r88
リプライの間隔を短くしてませんか?
2分毎や5分毎で動いていると言う人も居ますが
基本的にcron設定のページにある注意事項に書いてある
・メモリやCPUに著しく負荷をかける処理は他のお客様にご迷惑がかかりますのでおやめください。 サーバ運用に支障をきたす場合はやむを得ない場合には、予告無く設定解除、機能制限することがあります。
・実行頻度が1時間以内に連続する場合や、CPU処理時間が60秒以上連続で利用される場合、予告なく設定解除される場合があります。
と、あるようにさくら側が強制的に止めてしまいます。
最短を一時間毎にするのが好ましいですね。
2分や5分でも動いているという方もいらっしゃいますが
共有鯖なので、他のユーザーに迷惑かけないように使いたいですね
>>294 さん
わざわざありがとうございます。
設定を変えたらどうにか動くようになりました。
周囲のことを気にかけず動いてしまい申し訳ないです、以後気を付けます。
お手数をおかけしました…ありがとうございました。
お世話になります。
【バージョン】Easybotter 2.04bata
【設置鯖名】@pages
【PHPのバージョン】PHP-5.2.6
【実行】 GAE
【手動】 動く
【不明点など】ランダムポストは問題なく動くのですがリプライがうまく行きません。
ただ、アップロードした直後はリプライするのですがもう一度試すとリプライされません。
bot.phpにアクセスするとエラーも出ず、真っ白な画面です。
txtとreply_pattern.phpとlog.datのパーミッションも666、644、606と試してみましたが変化がありません。
何が原因なのか教えていただけると嬉しいです・・・
>>280
>>281
返信ありがとうございます。「data.txtを連投し、特定の記号を見つけたら
連投をやめる」の件、プログラミングは初めてなのですが
週末、PHPの本を買って勉強してみました
1 よく見たら、bot.phpにて第二変数を使うと止まるように、最初から
できているようなので、それを利用してpostRotation("data.txt","#")とし、
これを区切り記号とする
2 このままだと#が来た時にdata.txtが変更されないまま終わって
しまい、次に呼ばれた時にいきなり「#」になってしまうので、
この2回目のelse文の中でrotateData()を実行
ここまでは、思ったとおりに動きました。ところが
3 これが呼び出されるEasyBotter.phpの postRotation()の中身全体を
while(True)で囲み、「#が来るまでの連続投稿」のため中ほどのreturnを
コメントアウト
これだと、最初の一つが投稿されるだけで、data.txtが際限なく
ぐるぐる回ってしまうようなのです。非常に低レベルな質問だと思いますが、
アドバイスいただけますか
>>297
EasyBotter.php の改造ネタは初心者スレでやるべきではありません。
こちらにどうぞ。
スレ立てるほどじゃないその他の質問スレ
http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1259689986/
>>296
情報がもう少し欲しいところなのですが、考えられることは
・返信するパターンが1つしかないので重複規制にかかった
・先週・今週の土日、@pagesもGAEもtwitterも不具合多発で
時間取得がうまくいかず、発言を時間内に拾えなかった
等、考えられます。ウチもこの土日、同様の症状が出たことがあります。
txtとreply_pattern.phpとlog.datのパーミッションも666にしてますよ
もしこの土日でなったのでしたら、今日あたりにもう一度試して
それでもまだ不具合が出るのでしたら、別の設定ミスだと思うので
また書き込んでください
質問です。
現在30分に一回定期ポストをするように設定しているのですが
一時間に一回にするには構文をどのようにしたらいいのでしょうか?
if(date("i") % 30 === 0){
$response = $eb->postRotation("post.txt");
}
現在は上記のように指定していますが
一行目を「if( date("G") % 1 === 0)」に変更で合っているでしょうか?
初心者丸出しの質問ですみません。どなたかお答えいただけると助かります。
>>300
1時間1回で毎時0分に投稿するのであれば
if(date("i") == 0){
$response = $eb->postRotation("post.txt");
}
これで十分だと思う。
>>300 は>>161 をよく読むこと
>>301 は解答を教えないこと、教えるなら原理・解法を教えようよ
>>299 お早い返信ありがとうございました。
今試してみたところ問題なく動作しました。
返信するパターンは20種類ほど用意していたので、やっぱり原因は@pages、GAE、twitterの不具合だったのかと思います。
Google App Engineを使う予定で、
http://d.hatena.ne.jp/furyu-tei/20100115/gaeregister
こちらの解説サイトを見ながら設定を進めていたのですが
Python 2.5.xをダウンロード・インストールの項目で詰まりました。
http://www.python.org/download/releases/
ここからPython 2.5.x系を落とすみたいですが、Python 2.5.xが見つかりません。
何となく名前が似てるPython 2.5.5 (January 31, 2010)を落としてみたりしたのですが
拡張子がTARと言うよく分からないファイルが一つダウンロード出来ただけです。
インストールすると言う事らしいのでソフトで解凍して中も見てみましたが、インストーラーも見当たりません。
Python 2.5.x系とは一体何を指しているのですか?
上記サイトで一体何をダウンロードしたらいいのですか?
インストールの方法もさっぱりでお手上げ状態です。
>>304
http://sourceforge.jp/magazine/10/02/01/0358237
http://www.python.jp/Zope/download/pythoncore
2.5.2ならここに置いてある
>>305
ありがとうございます、おかげで無事設定できました。
しかし新しい問題が出てきてまた詰まりました。
【バージョン】Easybotter 2.04beta
【設置鯖名】@pages
【PHPのバージョン】PHP-5.2.6
【実行】GAE-Cron
【手動】動く
【不明点など】
http://d.hatena.ne.jp/furyu-tei/20100115/gaecronclub
こちらの解説サイトを参考に、cronの設定をページ最後の部分まで終えたのですが
ランダム発言やリプライ返しなど、botが喋ってくれません。
手動なら通常の発言や@に返信もしてくれるのですが、自動発言が全く出来ません。
質問です。
「試しにbotを動かしてみる」の部分で下記の表示が出て、
投稿に失敗しましたと出ます。
object(SimpleXMLElement)#5 (2) {
["request"]=>
string(20) "/statuses/update.xml"
["error"]=>
string(19) "Incorrect signature"
}
どこを修正したら解消するのかわからず困っております。
読み取れる方がいらっしゃいましたら、ご助言くださいませ。
>>307
まずは>>161
【バージョン】Easybotter 2.04beta
【設置鯖名】@pages
【PHPのバージョン】PHP-5.2.6
【実行】GAE-Cron
【手動】動く
【不明点など】ランダムポストが動きません。
リプライを返したりTL上の特定の言葉に反応したりフォロー返しと言った機能は問題なく動くのですが、ランダムのみ機能しないといった状況です。
bot.phpファイルの中はこんな感じです。
――――
<?php
//=============================
//EasyBotterを呼び出します
//=============================
require_once("EasyBotter.php");
$eb = new EasyBotter();
//=============================
//botの動作をここに書いてください
//先頭に//がある行はコメント扱いなので実行しません。実行したい行の頭の//を削除してください。
//=============================
$response = $eb->autoFollow();
$response = $eb->postRandom("data.txt");
//$response = $eb->postRotation("data.txt");
$response = $eb->reply(2,"data.txt","reply_pattern.php");
$response = $eb->replyTimeline(2,"reply_pattern.php");
/*
//===================================================
//EasyBotter2.03 2010/02/11更新
//===================================================
////ここから下はphaによる解説です。
////cronなどでこのbot.phpを実行するわけですが、動作の指定の仕方はこんな感じです。
//用意したデータをランダムにポストしたい
//$response = $eb->postRandom("data.txt");
//用意したデータを順番にポストしたい
//$response = $eb->postRotation("データを書き込んだファイル名");
//@で話しかけられたときにリプライしたい
//$response = $eb->reply(2, "data.txt", "reply_pattern.php");
//タイムラインの単語に反応してリプライしたい
//$response = $eb->replyTimeline(2,"reply_pattern.php");
//自動でフォロー返ししたい
//$response = $eb->autoFollow();
//===================================================
//// cronを実行するたびに毎回実行するのではなく、
//// 実行する頻度を変えたい場合の例は以下のとおりです。
//// PHPのdata()の応用の仕方は以下のURLを参照ください。
//// http://php.net/manual/ja/function.date.php
//bot.phpを実行したときに毎回実行される
$response = $eb->postRandom("data.txt");
//bot.phpを実行したときに、5回に1回ランダムに実行される
//if(rand(0,4) === 0){
// $response = $eb->postRandom("data.txt");
//}
//bot.phpを実行したときに、0分、15分、30分、45分だったら実行される
//if(date("i") % 15 === 0){
// $response = $eb->postRandom("data.txt");
//}
//bot.phpを実行したときに、午前だったらgozen.txtのデータを、午後だったらgogo.txtのデータを使う
//if(date("G") < 12){
// $response = $eb->postRandom("gozen.txt");
//}else{
// $response = $eb->postRandom("gogo.txt");
//}
//bot.phpを実行したときに、2月14日のみvalentine.txtのデータを、それ以外はdata.txtのデータを使う
//if(date("n") == 2 && data("j") == 14){
// $response = $eb->postRandom("valentine.txt");
//}else{
// $response = $eb->postRandom("data.txt");
//}
//準備したテキストを順番にポストしていって、準備した中から「めでたしめでたし」が投稿されたらbotの投稿をそこで止める
//$response = $eb->postRotation("data.txt","めでたしめでたし");
//*/
?>
――――
どこか問題があるんでしょうか?
>>308 さん
早速のご返答有難うございます。すみませんでした、もうしばらく調べてみます。有り難うございました。
スマートフォン版
掲示板管理者へ連絡
無料レンタル掲示板