レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。
Twitter Bot初心者質問スレ
どんな初心者レベルの質問でも質問していいスレッドです。
内容もTwitter Botに関するものなら何でもありです。phaさんのスクリプト以外の質問もOKです。
でも返事が返ってくるかどうかはたまたま分かる人がいるかどうかなので、返事が返ってこなくても泣かない。
返答してくれた人にはお礼をね。
正規表現を使って、こんばんは(わ)、コンバンハ(ワ)、今晩は(わ)、
に対応させたいのですが、
"(こんばん|コンバン|今晩)[はわハワ]"
と記述した結果、何故か『コンバンハ(ワ)』の時だけ
当てはまりませんでした…何か間違いがあるのでしょうか、
それ以外にも|で区切ると当てはまらない場合が頻発しています。
何かアドバイスがあれば是非お願いします…
初心者です。
bot宛の返信内容(差し出し垢名入り)を、
そのbotのTLにリアルタイムで表示させるbotが作りたいんですが、
参考になるスクリプトはありますか?
「つくったー」のようなしくみのbotです。m(__)m
>>2
[]で全角はうまくいかない可能性があります。
(こんばん|コンバン|今晩)(は|わ|ハ|ワ)
こちらで。
2です。4さん回答ありがとうございます。色々いじってみた
ところ、bot.phpの方でトラブっていたみたいで、修正して
動かしてみたらちゃんと反応するようになりました。
自己解決したものの、ご回答是非参考にさせていただきます!
ありがとうございました!
相手のツイートを引用して返すにはどうしたら良いでしょうか?
相手が「あいうえお」と発言したら「あいうえお」と返すような。
応用して、「あいうえお」と言われたら「あいうえお 良い言葉ですね」というような感じにしたいのですが・・・
>>1
botの作り方が全く解りませんが、どうすれば良いですか?
初めまして。EasyBotter2.0を使用して
初めてのbot作りをしているのですが、
実際にbotを動かすところになって行き詰ってしまいました。
手順通りにしてみたのですが、試しにbotを動かしてみるところで
サイトのURLに/twitterbot/bot.phpと付けてページ移動したところ、
404error Page Not Foundと出てきてしまいbotが動いてくれません。
どなたかご教授して下さる方がいましたらどうぞ宜しくお願いします。
>>7
コレ、うらのおすすめ!
Twitter Bot Maker
http://nyoro-n.appspot.com/twitter
Twitterボットを簡単につくれちゃう! Bot Maker(ボットメイカー)
http://botmaker.orig.jp/
twitter ボットジェネレーター - 簡単にbotを作成
http://twittbot.net/
TTM!!:TwitterのBOTを簡単に作れるサービス
http://www.jarjar.biz/Twitter/
>>8
とりあえずdata.txtはブラウザで表示できますか?URL間違えてませんか?
レンタルサーバーのところのFAQ熟読のこと。
このスレは常時ageでいいと思う
すみません、現在EasyBotter2.0の方を使わせていただいてます。
いろいろと試してみたのですがどれもswitchの列でエラーが出てしまうのですが。。
リプライのパターンを書き込むところで時間によって反応を変えたいのですが・・・
おはよう、おやすみなどの特定のものだけ通常は「おはよう」時間が遅ければ「遅いですね」みたいな感じにしたいのです
$zikan = idate("H")
"おはよ"=> array(
switch($zikan){
case($zikan>=10):
遅いときのリプライ
break;
default:
通常リプライ
break;
}
),
こういう感じでいけるかなぁと思ったのですが・・
挿入位置が可笑しいのでしょうか?
よければご指摘いただけるとありがたいです。
PHP自体が動かないとかいう人は
使ってるサーバー名・CRONなども書くようにしてくれないと…
>12 です
switchを入れていない状況では普通に動く、ラインエラーが "switch($zikan){" の部分ででている
ので単に文の記述がおかしいだけと思ったので書かなかったのですが・・
サーバは@PAGE CRONは風柳さん提供のものを使わせていただいてます。。
8の者です。
>>10 のうらさん、ご返答下さりありがとう御座います。
data.txtはブラウザで表示できています。
URLは何度も入れて確かめてみたのですが、
やはりエラーが出てしまいます・・。
ちなみにサーバーはSiteMix、CRONはGAEを使わせて頂いています。
>>15
1つ思ったのですが、setting.phpはすべて記入済みでしょうか?
私も以前あったことですが、setting.phpのOAuth関連(botのid名より下の4つのキー)
が入ってないとURL入れてもエラーになりました
もしOAuth設定がまだで、botというものを試したいのでしたら
1.42で動作を試して、それから2.0に挑戦しても遅くはないと思います
>>12
ん?配列定義の中に関数って書けるんでしょうか?
switch分岐の中で、配列の要素を定義しないといけないのでは?
でもま、単純には、リプライパターンファイルを複数作って、
bot.phpの中でswitch分岐させるのが分かりよくて良いかと。
>>17 うらさん返答ありがとうございます
やはし入れる部分がおかしいということですかね・・
swicthを先に書いて・・と思いましたがそれだと他の単語がうまく拾えなくなりそうですしね・・
時間別にしたい単語が数個だけだったのでリプライを書いている場所でわけられればなぁと思ったのですが
やはりファイルを複数使ったほうが間違いもなくよさそうですね
ありがとうございました。
初めまして、EasyBotter2.03betaを使わせていただいています。
手順通りにファイルを書き換えサーバーにアップしたつもりなのですが、
http://pha22.net/twitterbot/2.0/test.php で書かれているようには表示されず404になってしまいます。
使わせていただいているサーバーは@pagesでcronはGAEです。
ファイルはほぼ定型文のまま使用し、書き換えた部分は
bot.phpの
$response = $eb->autoFollow();
$response = $eb->postRandom("data.txt");の//を消したこと
setting.phpの
$screen_name = "①"; //botのid名
$consumer_key = "WtNt5W6js77cFHvKyVgf6Q"; // Consumer keyの値
$consumer_secret = "h3In28YiiRxtg4PTpkhPmrlJSGOCTG2oh3hslQ"; // Consumer secretの値
$access_token = "②"; // Access Tokenの値
$access_token_secret = "③"; // Access Token Secretの値
①をbot用のtwitterIDに変更
②③をhttp://pha22.net/twitterbot/2.0/setting.php のこのサイトでOAuth認証のキーを取得するで
取得したキーを入力しました。
テキストエディタはTeraPadを使い、data.txt、reply_pattern.php、setting.php、bot.phpの文字コードはUTF-8、改行コードはLFに設定し保存。
ファイル名をEasyBotter2.03betaからaaに書き換えpublic_htmlにアップロード
data.txtとreply_pattern.phpとlog.datのパーミッションを666に設定
サイトURL/aa/twitterbot/bot.phpにアクセスして確認している状態です。
同じ質問をして>>10 で回答されているのですが
data.txtはブラウザで確認出来ました。
サーバーはphp使用可能でバージョンはphp-5.2.6で問題無いと思います。
全くの初心者故にどこが間違っているか分からずお手上げ状態です。
ご教授ください。宜しくお願いします。
>>19
ええと、確認させていただきます。
@pagesということで、URLは、
http://www 数字.atpages.jp/アカウント/aa/twitterbot/data.txt
http://www 数字.atpages.jp/アカウント/aa/twitterbot/bot.php
ですよね?ということは配置は以下のようですね?
/
└aa/
└twitterbot/
└諸々のファイル(data.txt、bot.php、EasyBotter.php等)
└PEAR/
└諸々のファイル(ディレクトリごとUPするファイルたち)
うらも@pagesを使っていましたので、間違いなく動作はしますから。
>テキストエディタはTeraPadを使い、data.txt、reply_pattern.php、setting.php、bot.phpの文字コードはUTF-8、改行コードはLFに設定し保存。
TeraPadをお使いでしたらUTF-8Nで。
こちらのスレ参照
http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1261905206/l50
>>19 です。
解決できました!
>>20 >>21
お二人ともありがとうございました。
原因はディレクトリ構造の間違いと文字コードの指定だったようです。
phpどころかもっと初歩的な勘違いをしていたようでお恥ずかしいです。
これから返信の方法などを【高度な設定】や皆さんの書き込みなどを参考に色々変えていこうと思います。
うまく動かない時はまた質問させていただくことになると思いますが宜しくお願い致します。
本当にありがとうございました。
Easy Botterで「エラーが何行目にあります」という表示は、どこに出るんですか?
投稿出来ていないとき、bot.phpは真っ白のままです。
リプライだけ具合が悪い(と思われる)ときは、
画面に「2分以内にタイムラインに反応する言葉がありません」とだけ出ています。
3で『bot宛の返信内容(差し出し垢名入り)を、
そのbotのTLにリアルタイムで表示させるbotが作りたいんですが、
参考になるスクリプトはありますか?「つくったー」のようなしくみのbotです。』
という質問をした者ですが、乱文の為、返答がいただけません。
「こう質問したら答えてもらいやすいのでは?」的な
アドバイスをいただきたいです。よろしくお願い致します。
>>24
悪いんですが、ゴールがよく見えません。
つくったーというのは、@tsukutter ですか?
その機能は…webが見えない…。
察するところ、
> @hogeから「@bot 機能紹介文」
とmentionを受けると、
> 「機能紹介文 from @hoge」
とツイートすること、ですか?
流れとしては、API で mention を取得して、本文から"@bot "を削除、
"本文 from @".$screen_name とツイートを作成、updateする、ですね。
Easybotter1.42 の reply_random.php を改造するのが近道でしょうかね。
あと、リアルタイムというほどAPIを叩けるかという問題は残ってますが。
EasyBotter2.03betaを使用。
@で話しかけられた時の反応が、期待と違う動作で悩んでいます。
bot.phpを叩くと、data.txtからランダムで発言することは出来ているので、
この状態から、bot.phpでbotの動作を指定する
$response = $eb->postRandom("data.txt");
にコメントを入れ、
$response = $eb->reply(2,"data.txt","reply_pattern.php");
からコメントを外しました。
これでbot.phpを叩いてやれば、それまでと同じようにdata.txtから
ランダム発言が続くと思っているのですが
現状は「2分以内に受け取った@はないようです。」のメッセージが現れるのみで
data.txtの内容を吐き出してくれません。
ネットで検索もしてみましたが、こういった事象は見つけられませんでした。
御教授よろしくお願いします。
>>26
そこは反応するキーワードがあればreply_pattern.phpから返事をする
キーワードがなければdata.txtからランダムに返事をするというように
プログラムされているので、
$response = $eb->reply(2,"data.txt","reply_pattern.php");
に戻してreply_pattern.phpに入っているサンプル(おはよなど)を消したらどうでしょうか?
もっとスマートな方法があれば他の方、よろしくお願いします
つまづいてしまったので質問させてください。
botを設置するところまではできたのですが、何十分待ってもメッセージを投稿してくれません。
何度か自分でtwitter本家からメッセージを入れたり、@で話しかけてみても反応なしです。
bot.phpにアクセスすると
Twitterへの投稿に成功しました。
@○○○_botに投稿したメッセージ:※私が直接webで打ったメッセージが表示されてます http://twitter.com/ ○○○_bot/status/.....
2分以内に受け取った@はないようです。
と表示されます。
使っている環境はEasybotter2.0、サーバーは@pages、cronはGAE-Cron様をお借りしています。
どうかよろしくお願いします。
>>26
reply() は mention があった時に初めて発動します。
つまり、cron で呼ばれようと mention が無ければ発動しません。
定期ポストが欲しかったら、postRandom か postRotation が必要です。
>>28
テンプレ使用推奨w
【バージョン】Easybotter 2.03beta
【設置鯖名】@pages
【PHPのバージョン】
【実行】GAE-Cron
【手動】動く
【不明点など】botを設置するところまではできたのですが、何十分待ってもメッセージを投稿してくれません。
手動でアクセスして無事投稿できているのなら、cronがうまく叩いてくれていないという話かと。
GoogleAppEngineのcronって、動作報告出力を出してくれないんでしたっけ?
もし確認できるなら、エラーなりが出てるのではないかと。(URL違いとか)
>>30
>GoogleAppEngineのcronって、動作報告出力を出してくれないんでしたっけ?
見れますよ。LogのRequests onlyで。風柳さんところGAEcronの場合はどうなのかは分かりませんが。
cronを叩くアドレスがまちがっていると思われますが、もう少し情報がほしいですね
あと、たまに息継ぎのようにこける時があるので、たまたまそれに当った場合も考えられます
>>30
手動ですら投稿できてません。
twitter上で直接入力した内容が映ってるだけです。
先ほどGAE-cron様の設定画面を見たら
■最終起動:2010/02/19 18:00(JST) 結果:code: 503 ※次回予定:2010/02/19 18:10(JST)
となってましたが、相変わらず新規投稿はできてません。
>>31
投稿自体ができていないので、cronではなく設置に問題があるようです。
こんにちは、質問させていただきます。
テンプレお借りしますね。
【バージョン】Easybotter 2.03beta
【設置鯖名】@pages
【PHPのバージョン】php-5.2.6
【実行】手動()
【手動】最初は動いた
【不明点など】
手動での動作確認の段階です。
bot.phpへアクセスすることによってランダムで発言するところまで作りました。
その後、リプライが正しく動作するか確認した後、bot.phpにアクセスしても発言しなくなってしまいました。
botに返信→bot.phpにアクセス→返信内容が返ってくる。→bot.phpにアクセス→発言しない
しかし、botに返信→bot.phpにアクセスすれば返信は返ってくるという状態です。
時間を置いてbot.phpにアクセスしても変化ありません。以下のような、先ほどの返信の投稿が成功したという表示が出るでけです。
Twitterへの投稿に成功しました。
@★★★_botに投稿したメッセージ:@★★★ あさきゆめみし ゑひもせす URL
サーバーからファイルを消して、アップし直せば発言するようになるのですが、
やはりリプライを試すと発言しなくなってしまいます。
自分ではお手上げです。
どなたかアドバイスお願いします。
それはbot.phpの設定がどうなっているかじゃないかな
bot.phpはどこをコメントアウト(//を削除)してますか?
>>34
リプライ(返事)をするパターンが少ないので
twitterの重複規制に引っ掛かっている可能性が高いです。
もう少しリプライのパターンを増やしてみてはどうでしょうか?
>>34 です。
>>35 >>36
お二人ともありがとうございます。
>>36 さんの言うとおりリプライのパターンが少なかったようです。
7個だったのを20個に増やしたら直りました!
すみませんサーバにupして手動で動作確認もできたので少しreply_pattern.phpの言葉を増やして再びupしたら次のエラーが出るようになってしまいました><
Parse error: syntax error, unexpected ';', expecting ')' in /usr/local/www/htdocs/gonbe1818/public_html/gon18bot2/reply_pattern.php on line 157
157行目にエラーがあるよってことだと思うのですが157行目は ); しかありません。試しに新しいのをDLしてupしてみてもサイトの説明の所をコピペして貼り付けてみても同じエラーが出てしまいます。どうしたらよいのでしょうか?どなたかご指導おねがいします><
>>25
うらさん
乱文にも関わらず丁寧なお答えありがとうございます!
目指すbotは、うらさんのお察しの通りです。
ヒントがたくさんいただけて、暗闇に光が見えてきました。
一歩ずつ進めます!ありがとうございました。m(_ _)m
>>23 と同じ症状で困っています。
ただ真っ白な画面が出るだけで、何がエラーになっているのかわからず
途方に暮れています。
【バージョン】Easybotter 2.03beta
【設置鯖名】ロリポ
【PHPのバージョン】5.2.6
【実行】GAE-Cron
【手動】→ここがダメ。○分以内に受け取った@はない、のメッセージのみ出たり出なかったり
一度は自動でちゃんと動くようになったのですが、突然この状態になってしまったので混乱してます…
>>40
これもリプライパターン不足じゃないでしょうか。
twitterの重複発言規制にひっかかると、botは正しく動いているので
エラーは表示されないのに、動作がしてないように見えるということが
私にもあったので。
2.0スレphaさんのコメントだと
バージョン2.0以上はPHP5以上でないと動きません。
>真っ白になるというのは、bot.phpの中身の設定がうまくいってなくは>ないですか。
との事のようですが…
あとロリポで2.0が動かない報告は他にもいくつかあり、設置するサーバーを
変えたら動いた報告もあるので、サーバーを変えてみてはどうでしょうか?
あともう一度サーバーの仕様とマニュアルを見てみるとか
初めまして!
今回twitterbotの制作に励んでいるのですが、
試しにbotを動かしてみる、というところで挫折してしまいました。
サーバーはTOK2を利用しています。
サーバーに上げたファイルは、
form.php
post_random.php
reply_pattern.php
reply_random.php
tw.txt
以上のファイルです。
しかし、post_random.phpを開いてみても、バグったようなよくわからない文字が出てくるだけで…
どうしたらいいのでしょうか?
何かほかに私が回答することがございましたらお気軽にお申し付けください。
>>38
エラーが出ている上の行に問題はありませんか?
「),」は足りていますか?「",」は抜けていませんか?
そこらへんを確認すれば大丈夫だと思います。
>>40
属性は666ですか?
私は属性を変更していなかったために真っ白になったことがありました。
一度ご確認下さいねー。
ご回答ありがとうございます^^
質問なんですが、上げたファイルの属性を全て666にするのでしょうか?
>>46
用意したサーバーにファイルをアップロードしてください。
そしてtw.txtとreply_pattern.phpとlog.datのパーミッションを666に設定してください
となっていますがどうでしょうか?
あとcronの事を詳しく教えていただきたいです><
>>48
具体的にcronの何が知りたいのか教えてくれるとありがたいです
(↑日本語変ですね、cronの設定を知りたい、とか、そういう事です)
あ、すみません。
cronの設定が知りたいです。
あと、パーミッションはその3つ意外は初期値のままでいいんですよね?
>>50
問題ないです。<パーミッションの設定
cronの設定ですけど、TOK2でcronの設定は可能なんですか?私が見つけられないだけかな…
わ、わかりません…(汗
たぶん無理だと思うので、
Google App Engineを利用しようと思っています。
>>52
http://d.hatena.ne.jp/furyu-tei/20100115/gaecronclub
reoさんわざわざありがとうございます。
とても参考になりました^^
これから頑張ってきます。
ご回答ありがとうございましたー!
今日はこれで失礼いたします。
>>54
はい。色々大変でしょうが、頑張って下さいませ。
テンプレ使用推奨です。
【バージョン】
【設置鯖名】 レン鯖名/自宅鯖
【PHPのバージョン】
【実行】 CRON鯖名/ブラウザ自動更新/手動/他
【手動】 動く/動かない
【不明点など】 (エラーメッセージがあればコピペ推奨)
初めまして!
ちょっと行き詰ってしまったので本当に低レベル初心者な質問させていただきます><;
昨日からちょくちょくbotを「twitter bot GENERATOR」さんのほうで作り始めていて、『話しかけられた相手の名前』を文章内に入れたいのですが、色々探ってみたところ「twitter bot GENERATOR」さんのほうではそのような設定はできない事を知りました。
そこで『話しかけられた相手の名前』を入れるのには、http://pha22.net/twitterbot/ さんのところでソフト(バージョン?)をダウンロードしてそれでbotの内容を作る という方が多いようでして、、
①そのソフト、cron、ダウンロードに関してなんですが、無料で使用できるんですか?
②うちはFTPサーバーなんですが「普通にcronを使う」の方でよろしいんですか?><;
色々初歩的な事を聞いてしまい本当にすいません><;
是非教えて下さると嬉しい限りです、よろしくお願いします!
>>57
1については、Ver2の「バージョン2.0について」、Ver1.4の「はじめに」を読めば書いてあります。
2については文章の意味がわからないので回答できません
初めまして。
reply_pattern.phpとlog.datとテキスト以外のパーミッションを教えていただけないでしょうか・・
どうも間違えて変更しまったようなんですが、元のパーミッションを覚えていないんです。
サーバーはさくらです。
よろしくお願いします!
あずきさん
回答ありがとうございました!><理解できました!
②についてはちょっと自分でサーバーの意味を勘違いをしていました、すいません!
なので②の質問は無しで;;すいません!
ご回答ありがとうございました><!助かりました!!
>>59
削除して新しくアップし直せばいいのでは?
>>59
デフォルトのパーミッションはサーバー・.htaccess等の設定・FTPによって違いますよ。
ちょっと検索すればわかることなので、まずは自分で調べる努力はしましょう。
というわけで600・604・644のうちサーバー設定に合ったものにしてください
初めまして。
1.42でbotを作成し、上手く動いていたのですが、
PHPのバージョンを5に上げた途端、reply_random.phpの方で
「Warning: preg_match() [function.preg-match]: Compilation failed: nothing to repeat at offset 0 in /アドレス/reply_random.php on line 174」
のエラーが出るようになってしまいました。
どうすれば良いのか皆目見当がつきません。ご教授いただければ幸いです
>>63
次からは>>56 のテンプレ使ってくれ、鯖情報ないとわかんないから
というわけでこちらを参考に鯖確認してみれ
ttp://ameblo.jp/katyos/entry-10357760194.html
>>64
失礼しました。
【バージョン】1.42
【設置鯖名】 ロリポ
【PHPのバージョン】5
【実行】 CRON⇒cronjob.de利用
【手動】 動くがエラーが出る
【不明点など】 Warning: preg_match() [function.preg-match]: Compilation failed: nothing to repeat at offset 0 in /アドレス/reply_random.php on line 174
PHPが4の時には完動していました。
参考URLは拝見したのですが、良くわからず、不勉強で申し訳ありません……
正規表現についての質問です。
「サッカーの単語に対しての反応」と
「サッカーに誘う言葉に対しての反応」を分けたいのですが
両方とも「サッカーの単語に対しての反応」を返してしまいます
上をただのサッカーという単語で登録して
下を(サッカー|さっかー)_*(しよう|したい|しない)?
の正規表現で登録しているのですが
間違っている箇所や、こうした方がいい、という箇所はありましたらアドバイスくださると助かります
>>66
上の方が優先順位が高いので、その順番だと
「サッカーしたい」より「サッカー」が優先される
順番を逆にすればよい
なるほど…!優先順位考えてなかったです
それなら、
「サッカーしたい?しよう?しない?」
「サッカーすき?きらい?」
「サッカー」
の順等にすれば大丈夫ということでしょうか
がんばってみます。ありがとうございます
ランダムポストについての質問です。
今までver1.4以前を使って60分毎のランダムポストを行っていたのですが
2.0だとbot.phpだけで動くのですよね?
すると60分毎に呟く為の記述をどこにどう書けば良いかわかりません。
cronを2分毎に設定しているとリプライの無い場合は通常ポストしてしまいますよね?
定期的にtw.txtからランダムにポストをしつつ、更に@を送られたとき別のパターンをランダムに返すことは出来ますか?
例としては一定間隔で名言をポストし、@を飛ばすとおみくじを引いてくれる、といった具合です。
>>69
まずは下記のスレを % (半角パーセント)で検索、ヒットしたレスを読んでください。
http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1265625817/
続いて下記のURLを全て読んで見て下さい。
date()関数 ttp://www.scollabo.com/banban/php/ref/ref_date.html
比較演算子 ttp://www.phpmanual.jp/language.operators.comparison.html
if構文 ttp://www.scollabo.com/banban/php/php_09.html
最後にbot.phpの中央部から「/*」でコメントアウトしてある部分を見て下さい。
>>70
デフォルト設定のままでできます。
リプライパターンファイルを作って、適切に設定すれば大丈夫です。
VER.2.0は「reply_pattern.phpの編集」のページを、
Ver.1.4は「特定の単語を話しかけられたときに特定の単語を返す」のページを参照してください。
>>72
早速のお返事をありがとうございます。
特定キーワードなどは設定せず、@には全て同じパターン内から返信を出したいのですが(tarot3botのような感じです)
この場合はキーワード部分を空白にすれば良いのでしょうか?
>>73
その場合はreply_pattern.phpは使わず、ランダムリプライだけを使用すれば良いかと。
>>74
ランダムリプライファイル内で@用のパターンが指定出来るということでしょうか?
定期の通常ポストとは別に@用のパターンを作りたいのですが…
説明にあったランダムリプライは、ポストできるのはtw.txt内からのみのようなので困惑しています
>>75
Ver1.4でしたらreply_random.phpの中に
$file = "tw.txt"; //発言を書き込んだファイルの名前(変更可能)
とある通り、tx.txt以外のファイル名にすれば良いですよ。
Ver.2.0でも同様にファイル名を変えて下さい。
それと、できれば次回からは>>56 の点プレを使ってください、
バージョンで違う内容もでてきますので。
>>75
そんなに単純なことだったのですね!
ご迷惑をおかけしました。
テンプレートについても次回からきちんと使用したいと思います。
助かりました、本当にありがとうございます
はじめまして、どうしてもbot制作中に詰まってしまい質問させていただきました。
replyを時間ごとに設定してupしようと書き変えていたのですがエラーが出てしまいました
Parse error: syntax error, unexpected $end in /usr/local/www/htdocs/(アドレス)/public_html/twitterbot/bot.php on line 92
同じような質問があり、そちらの回答をみさせて頂き確認したのですが、エラーの上がった行には終わりの?>しかなく、その上の行も元からあった//のついたソースしかありません
試しに//つきのいらないソースも全て消してみたのですが、エラーの行数が上にあがるだけでエラー内容はなにも変わりません。
ちなみに現在別のCronに設定しているbot2.phpではエラーなく定期post出来ています。
【バージョン】2.03
【設置鯖名】@pages
【PHPのバージョン】5
【実行】風柳様のAEG-Cron
どうすればいいのかまっかく分からないので困っています。
何か解決方法がありましたらよろしくお願いします。
ぱっと思いつくのは
・インデントに全角スペースが入ってる
・ifなどで使った「(」や「{」が閉じてない
はじめまして。先日からBOTを作り始めているのですが、あと一歩(だと思われる)ところで行き詰ってしまいましたので、質問させていただきます。
【設置鯖名】 sitemix
【PHPのバージョン】2.0beta
【実行】 Free Web Cron Service
【手動】 動かない
【不明点など】
・sitemixのサーバーには一通り全てのファイルをアップし、tw.txt(これはdate.txtととっていいと考えております)とreply_pattern.phpとlog.datのパーミッションを666に設定しました。
・bot.phpファイルにアクセスしてみたところ、繋がっているとは思うのですが、何度やっても"投稿するメッセージがないようです。2分以内に受け取った@はないようです。"と表示されます。
・date.txtとdate.phpの両ファイルにちゃんと投稿させたい文章(云十は行っています)も書いてあり、php側にはちゃんと頭に"<?php
$data = array("をつけています(念のためにアップロードしたphpのパーミッションも666にしました)。
phpの配布元様のページにはしっかりと目を通したのですがどうにも解決策と思われるものがありませんでしたので、質問させていただきました。
何か解決方法がありましたら、どうぞよろしくお願いします。
>>44
reoさん
複数問いかけの書き方が間違ってた為にでてしまったエラーでした。
書き直したら無事つぶやいてくれるようになりました!
ご指導ありがとうございました!
>>80
> 投稿するメッセージがないようです。
data.txtとdate.txtをスペルミスしてる可能性は?
> 2分以内に受け取った@はないようです。
2分以内に該当BOT宛てに@送ってる?
>>82
早速の回答ありがとうございます。
>> 投稿するメッセージがないようです。
>data.txtとdate.txtをスペルミスしてる可能性は?
…パソコン内のフォルダとアップロード先フォルダを確認しましたが、どちらもちゃんと"data.txt"・"data.php"になってました。
>> 2分以内に受け取った@はないようです。
>2分以内に該当BOT宛てに@送ってる?
…はい、一番最初にエラーメッセージが出てからすぐに確認のために@を送りましたが、いつまでたってもリプライが返ってきません。
初心者の方へ
一度に全部の機能を実装しようとしてはいけません。
まずはpostRandomでdata.txtの内容をツイートさせてみてください。
<?php
require_once("EasyBotter.php");
$eb = new EasyBotter();
$response = $eb->postRandom("data.txt");
?>
と書いたbot.phpを手動で実行するだけです。
ツイートが成功したらReplyやRotationなど他の機能を加えたり、
CRON用の実行設定(if構文)を加えて下さい。
一度に複数の機能を実装してエラーが出ると、
どこでミスをしたのか、エラーがでているのかわかりにくくなってしまいます。
>83
bot.phpの動作設定をコピペプリーズ
>>85
>bot.phpの動作設定をコピペプリーズ
了解です。
下にそのままコピペさせていただきます。
<?php
require_once("EasyBotter.php");
$eb = new EasyBotter();
$response = $eb->autoFollow();
$response = $eb->postRandom("data.php");
$response = $eb->reply(2,"data.php","reply_pattern.php");
$response = $eb->replyTimeline(2,"reply_pattern.php");
?>
でアップロードしております。
>86
リプライだけがダメ?
それとも通常ツイートすらもできてないのかな
>>86
>リプライだけがダメ?
>それとも通常ツイートすらもできてないのかな
…どっちもまるっきり動作していません。
自動フォローのタグも入れたのに、一時間以上待ってもフォロー返しをしてくれなかったため手動でフォローし、botじゃないほうのアカウントで@を飛ばしましたが、一向に動く気配なしです。
>>88
まずは>>84 の通り、「ランダムツイートのみ」からやってみましょう
data.phpは文字コード:UTF-8N、改行コード:LFになっているか確認してください
もしどちらも合っているようでしたら、data.phpではなくdata.txtにしてみて下さい
data.t.txtの内容は↓のような簡単なもので結構です
返信文その1
返信文その2
アップしたらdata.php/data.txtがパーミッション666(サーバーによっては606)になっていることを確認し
bot.phpを手動実行してツイートされるか確かめてみて下さい
>>89
おっしゃる通り、>>84 のソースをそのままbot.phpに書き、アップロードしました。
data.phpの文字・改行コードもUTF-8NとLFになってます。
data.txtとdata.phpの内容も返信文〜にしてアップロードしました。
パーミッションを666と606で手動やりましたが、やはりまったく反応せずです。
>あずき様
ありがとうございました。さっそく確認してみたところ全角スペースが入ってしまってました。
ご指導ありがとうございます
初心者で恐れ入りますが、御教授宜しくお願いします。
指定されている場所以外は、特にPHPに手を加えておりません。
故にbot.phpの通常ポストは問題なく動きます。
ただ、リプライされた場合、リプライ文章のみ返して欲しいのですが…
なぜかリプライの文章と一緒にランダム文章も投稿されてしまい
一緒に2つ投稿されてしまう状態です。
【バージョン】2.03
【設置鯖名】 @pages
【PHPのバージョン】PHP-5.2.6
【実行】 手動
【手動】 動く
【不明点など】
bot.phpそのものは動くものの、リプライを貰った場合に上記の症状が出る。
特に改造もしていないので、どこが悪いのか分からず行き詰ってしまい
1日過ぎてしまいました。。。
ご助力頂ければありがたいです。。。
----------------------------------------------------------------------------------------------------------------Twitterへの投稿に成功しました。
@●●_botに投稿したメッセージ:あいうえおあいうえお http://twitter.com/ ●●_bot/status/9426729256
Twitterへの投稿に成功しました。
@●●_botに投稿したメッセージ:@◆◆_test かきくけこかきくけこ http://twitter.com/ ●●_bot/status/9426729796
----------------------------------------------------------------------------------------------------------------
リプライに対する返答と、
通常のランダムポストの2つの文章が投稿されてしまいます。
>>92
http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1265625817/
上記スレの33・140あたりを確認して、ifの重複がないかを確認してみて下さい
その上でまだリプとツイートが重なるならbot.phpをコピペしてください
はじめまして。こちらのスクリプトは以前のバージョンから使用させていただいており、
この度バージョンアップということでEasyBotter2.03betaに移行したのですが、リプライで詰まってしまいました。
初心者なりに何度も説明や掲示板を見直したのですが、原因が分かりません。
ご教授いただけると幸いです。
【バージョン】2.03
【設置鯖名】 @pages
【PHPのバージョン】PHP-5.2.6
【実行】 GAE
【手動】 動く
【不明点など】 通常ポストは問題ないがリプライができない。
GAEで2分ごとに動かしています。ランダムポストは問題なくできているのですが、2分以内に@を飛ばしても返事が返ってきません。
手動でやってみても「2分以内に受け取った@はないようです。」と表示されてしまいます。
data.txtの内容以外は、とくに変更していません。
data.txtとreply_pattern.phpとlog.datのパーミッションは666に設定されています。
あと確認なのですが、cronで動かすのはbot.phpだけでいいんですよね?
よろしくお願いします。
>>94
> cronで動かすのはbot.phpだけ
そうです
setting.phpは全てちゃんと書かれてるかな、特に$screen_name
あとはreply_pattern.phpの「$reply_pattern = array(」を「$data = array(」に変更しているか
有名になったUCCの失敗事例と同じことをしたい(仕組み的には)と思ったのですが、予定はないでしょうか?
@でBOTに対してきたつぶやきだけでなく、特定のキーワードのつぶやきを拾いにいって、そのつぶやきに対して「フォロー&@でつぶやく(Mention)」ということがしたいです。
いかがでしょうか。
>>93
御回答ありがとうございます。
ファイルの構文は指定以外何も触っていないので、ifの重複は無いと思います。
恐れ入りますが、bot.phpをコピペする、という意味が分かりません。
どこへコピペすればよいのでしょうか?
新しくアップロードしなおす、ということでしょうか?
何度も申し訳ございませんが、宜しくお願い致します。
初めまして、こちらのEasybotterにて、
初めてphpというものをいじっております。
私のような者でもとても分かりやすく優しいサイトを作ってくださり
phaさんには本当に感謝しております!ありがとうございます!
【バージョン】Easybotter 2.03beta
【設置鯖名】ロリポップ
【PHPのバージョン】5.2.6
【実行】GAE-Cron
【手動】 動く
【不明点など】
1.約1時間前 Easybotterで という部分を
約1時間前 Fuck'ntoshで という表記に変えたいのですが
こちらは可能でしょうか?
とあるキャラクターのぼっとを作っているため、リアリティを持たせたいのですが…
もしcopyright的な意味で、こちらははずせないということでしたら諦めます。。
2.@返信に対してリプライしたりしなかったり、若干不安定です。
お忙しいところすみません、なにとぞよろしくお願いいたします。
はじめまして。PHPは全くの初心者で、今はbotジェネレーターで動かしているのですが、PHPに移行して自力でbotを動かしたいと思っています。
とりあえずはランダムポストだけさせたいのですが、手動で動かそうとするとこのようなエラーメッセージ↓
---
Warning: preg_replace() [function.preg-replace]: Compilation failed: nothing to repeat at offset 0 in /home/haseobot/public_html/haseobot/EasyBotter.php on line 404
Warning: explode() [function.explode]: Empty delimiter in /home/haseobot/public_html/haseobot/EasyBotter.php on line 405
Warning: array_rand() [function.array-rand]: First argument has to be an array in /home/haseobot/public_html/haseobot/EasyBotter.php on line 216
投稿するメッセージがないようです。
---
…が出てしまい、具体的にどこを直せばいいかわからずお手上げ状態です。
data.txtの内容以外で変更したところは、
・bot.phpの「$response = $eb->postRandom("data.txt");」文頭のスラッシュのみ外した
・setting.phpの Consumer key/Consumer secret/Access Token/Access Token Secret の全てを自分で取得したOAuth認証キーに変更した
の以上です。
よろしくお願いします。
>>95
迅速な対応ありがとうございます。
原因は$screen_nameでもreply_pattern.phpの書き換え忘れでもありませんでした。
>>94 でdata.txtの内容以外は、とくに変更していません。と書きましたが、
実はdatファイルのところをいじってしまっていたのです。
EasyBotter2.03betaをDLしたときに、log.datがなぜか
「GOM PLAYERメディアファイル(.dat)」(GOM PLAYERは動画再生のソフトです)になってしまい、
そのままupできなかったので、一旦 プログラムから開く→Mery で開いて名前を「log.dat」にして上書き保存しました。
上書き保存したとき、文字コードはUTF-8、改行コードはLFにしました。
それでも「GOM PLAYERメディアファイル(.dat)」なのは変わりませんでしたが、upはできるようになりました。
upできたので問題ないと思ってそのままにしていたのですが、@pagesでupしたdatファイルを確認してみたところ、
文字コードがEUC-JPになっていました。
ブラウザから文字コードをUTF-8に変更して保存し、もういちどdatファイルを確認すると文字コードが勝手にSJISになっていましたが、
リプライはできるようになりました。
なぜDLしたdatファイルが「GOM PLAYERメディアファイル」になってしまったのか、
なぜそのファイルが@pagesでうまくupできなかったのかわからないのですが、とにかく正常にbotが動くようにはなりました。
よくわからないままファイルをいじったのが悪かったと反省しております。失礼しました。
>>98
2.0を使っているなら2.0のスレのログも見て、同じ質問があるかちゃんと見ましょう
http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1265625817/
175と176を見るべし
>>101
見落としておりました、本当に申し訳ございません。。。
本当にありがとうございました。。
初心者です。質問、失礼いたします。
【バージョン】Easybotter 2.03beta
【設置鯖名】@PAGE
【PHPのバージョン】5.2.6
【実行】GAE-Cron
【手動】 動く
【不明点など】
OAuth認証も終え、鯖にアップロードしていざbot.phpにアクセスして動きを確認したところ
以下のようなエラーが出ました。
----------------------------------------------------
Twitterへの投稿に失敗しました。
ユーザー名:@mao_bot_
object(SimpleXMLElement)#10 (2) {
["request"]=>
string(20) "/statuses/update.xml"
["error"]=>
string(19) "Incorrect signature"
}
2分以内に受け取った@はないようです。
----------------------------------------------------
(文字・改行コードはUTF-8NとLF、パーミッションも666にしております。)
他スレにも同じ質問をしている方がいらっしゃいましたが、
解決策が見当たらなかったのでこちらで質問させて頂きます。
お手数ですが、何方かご教授いただければと思います。よろしくお願いします。
>>103
Incorrect signatureなんだから、ID系統に間違いがあって接続できてないんじゃ…
settingファイルは間違ってない?
>>104
ありがとうございます!解決しました。
確かにsetting.phpが間違っていて、Consumer_keyとConsumer_secretが再取得前のものになっていました。
それと、アプリケーションの設定をBrowserからClientに直すのを忘れていました…
初歩中の初歩で躓いていたみたいです。
助言頂き本当にありがとうございました!
たぶんかなり初歩的なミスだろうと思うのですが、
何度見直してみても問題点がわからないので
申し訳ありませんがお知恵を貸していただけないでしょうか。
【バージョン】EasyBotter2.03beta
【設置鯖名】さくら
【PHPのバージョン】5.2.12
【実行】さくら
【手動】 動く
【不明点など】リプライを返さない
通常のランダムポスト用のデータをdata.txt。
リプライ用のランダムポスト用がname.txtとして分けてあります。
リプライに特定の単語があると特定の台詞を返す用にreply_pattern.php、とし
以下のように設定しアップロードしてありますがリプライを返しません。
手動ポスト、ランダムポストは問題なく動きます。
bot.php内の該当部分
//$response = $eb->autoFollow();
$response = $eb->postRandom("data.txt");
//$response = $eb->postRotation("data.txt");
$response = $eb->reply(2,"name.txt","reply_pattern.php");
//$response = $eb->replyTimeline(2,"reply_pattern.php");
reply_pattern.php内先頭部分
<?php
//特定の単語を受け取った場合に特定の反応を返したいときに使う、反応のパターンを書くためのファイルです。
//複数のパターンに一致する場合は上のものが優先されます。PHPの正規表現にも対応しています。
$name = array(
"よろしく|宜しく|ヨロシク"=> array(
パーミッションの666、ファイル形式もUTF-8N・LF(TeraPad使用)で確認済みです。
よろしくお願いします。
>>106
リプライパターンファイルの内容を下記のみにして「テスト」と話しかけてみて下さい
下記でリプ成功すればリプライパターンファイルの記述ミスです
$data = array(
"テスト"=> array(
"返信1",
"返信2",
),
);
>>106
あ、見落としがあった
$name = array(
じゃなくて
$data = array(
じゃないの?
>>107
レスありがとうございます。
指示いただいた通りにリプライパターンファイルをアップし直した所、
リプライに反応するようになりました。
ところが返したリプライが「返信1」「返信2」のどれでもなく、
リプライへの自動ポスト用として置いてあるname.txtからのものでした。
この場合はどの部分のミスが考えられますでしょうか?
>>108
申し訳ありません、書き方がわかりづらかったようです。
定期的に自動ポストするデータがdata.txt、
それとは別にリプライへ対し自動ポストするデータがname.txt、
という構成のためこのような記述になっています。
通常ポストとリプライはボットジェネレータでTLへの反応リプライのみEasyBotterで・・と考えているのですが、まったく反応してくれません。
全角空白や,や;はすべて問題ありませんでした。
//$response = $eb->autoFollow();
//$response = $eb->postRandom("data.txt");
//$response = $eb->postRotation("data.txt");
//$response = $eb->reply(5,"data.txt","reply_pattern.php");
$response = $eb->replyTimeline(5,"reply_timeline.php");
上記のようにTL反応のみという設定はできないのでしょうか?
あと、通常ポストの//をはずして動かすと発言はちゃんとするのですが、
Warning: preg_match() [function.preg-match]: Compilation failed: nothing to repeat at offset 0 in /usr/local/www/htdocs/(@pagesID名)/public_html/twitterbot/EasyBotter.php on line 275
という文字が表示されます。EasyBotter.phpの275行目を見ても
PHP知識が初心者レベルなのでよくわかりません。
TLのみに反応する方法がありましたら教えてください。
【バージョン】EasyBotter2.03beta
【設置鯖名】@pages
【PHP のバージョン】5.2.6
【実行】set cron jobs
【手動】 動く
【不明点など】TLに反応しない
>>109
いやね、EasyBotter2のリプライパターンファイルは
<?php
$name = array(
では始まらない
<?php
$data = array(
から始まる必要がある
>>110
> 上記のようにTL反応のみという設定はできないのでしょうか?
できます
一度reply_timeline.phpの文字コードを確認してみて下さい。
>>112
文字コードはUTF-8、改行コードはLFです。
>>111
たびたび申し訳ありません、どうも根本的な部分を勘違いしているようなので
少々確認させていただいてよろしいでしょうか。
旧ヴァージョン(1.42)では自動ポスト用のデータと、
リプライに対しての自動ポスト用のデータは分けることができましたが
それを実現するためには、下記のようにbot.php内でファイル名さえ指定されてあれば
//$response = $eb->autoFollow();
$response = $eb->postRandom("data.txt");
//$response = $eb->postRotation("data.txt");
$response = $eb->reply(2,"name.txt","reply_pattern.php");
//$response = $eb->replyTimeline(2,"reply_pattern.php");
リプライパターンファイルの冒頭も
<?php
$data = array(
の記述で問題ない、ということでしょうか?
>>114
TL反応だろうがリプライだろうが、「ワードに反応」させるファイルは
<?php
$data = array(
で始まります、それ以外にありえません。
根本的な部分を勘違いというより説明を読まないで思いこみされてるのではないでしょうか?
書きかえるべき部分はコメントアウトや公式ページ内で説明もされています。
「$data」はファイル名ではなく変数名です、基礎をもう少し勉強しましょう。
>>113
UTF-8N/LFで保存し直して見て下さい
>>115
説明やスレッド内は熟読したつもりだったのですが、
ここにはふさわしくない質問をしてしまい申し訳ありませんでした。
>>116
してみましたが・・だめでしたorz
ちょっと気になったんですが、
<?php
$data = array(
ではじまって
);
で終わってますが
最後に?>はいらないのでしょうか?
初めまして。数日前まで順調に動いていたのですが、
突然リプライの動作が止まってしまったので書き込ませていただきました。
リプライが無い状態で手動で実行すると
「5分以内に受け取った@はないようです。」
と正しい反応を示しますが、@を貰った状態で手動実行すると、
画面が真っ白になり、またレンタルサーバーのため広告がありますが、その広告の文字が文字化けを起こしてしまいます。
@が無い状態では広告も日本語で正しく表記されています。
ここしばらくbotそのものをいじったりしていなかったのですが、リプライを返さなくなっていることに気付いて調べたところ上記のような状態となっていました。
解決法などありましたらご教授願います。
【設置鯖名】land.to
【PHPのバージョン】1.42
【実行】 cronjob.de
【手動】 動くが@を貰うと反応が無くなる
【不明点など】 @を貰った時だけ反応が無くなる
失礼しました、PHPのバージョンのところにプログラムのバージョン数を書いてしまいました…
以下訂正です。
【設置鯖名】land.to
【PHPのバージョン】5.2.3
【実行】 cronjob.de
【手動】 動くが@を貰うと反応が無くなる
【不明点など】 @を貰った時だけ反応が無くなる
>>92
bot.php内で、reply()とpostRandom()を同時に実行するようになっているからですね。
以下のようにif文で実行条件を作ってみましょう。
if(date("i") % 15 === 0){
$response = $eb->postRandom("data.php");
}
$response = $eb->reply(2,"data.php","reply_pattern.php");
でもそうした時も、同時に実行されるのは仕様です。
分けたいなら別のbot.phpを作って、別に叩くしかありません。
>>100
動いたのなら良かったじゃないですか。
とりあえず。windowsの場合、拡張子で判別するので、別のアプリが割り当てられてますが、
そのlog.datは単に存在だけで、内容はありません。改行さえもです。
方法としては、エクスプローラ上でファイル名を変更→アップ→FTPソフト上で変名
で良かったかと。
あ、FFFTPってそういう拡張子でUPする/しないがあったような記憶が。
とってもおもしろいブログだよ♪
たまに更新もしてるから見に来てください☆ミ
ちょっとエッチなプライベートブログです(*^^*)
ttp://stay23meet.web.fc2.com/has/
>>118
reply_timeline.phpの改行コード/文字コードが合ってるのなら、
パターン定義の () や , が過不足しているかですね。
phpプログラムファイル内で、全てがプログラムの場合、最後の ?> はなくても良いのです。
>>119
> 【手動】 動くが@を貰うと反応が無くなる
ってそれは動いてないですよね?
文字化けはページ内の文字コードが判別できない時に発生するので、気にしなくてOKです。
んで。
Twitterの仕様変更もないし、land.toの仕様変更もないのであれば
まず一度サーバのを消して、手元のファイル群を再度UPしてみては?
【バージョン】 Easybotter 1.42
【設置鯖名】 land.to
【PHPのバージョン】 5.2.3
【実行】 cronjob.de
【手動】 動かない
【不明点など】 @を貰った時 反応が無い
250行ほどtw.txtに登録しているのですが、
実行されるツイートが上方に集中していて、
中盤以下は実行される気配がありません。
仕様でしょうか。
【バージョン】 Easybotter 1.42
【設置鯖名】 land.to
【PHPのバージョン】 5.2.3
【実行】 setcronjob
【手動】 実行行が上方に偏る
【不明点など】 実行行が上方に偏る
質問です。
OAuth認証もして、ファイルをサーバーにアップしてbot.phpを動かすと、以下のようなエラーが出ました。
Twitterへの投稿に失敗しました。
ユーザー名:@
object(SimpleXMLElement)#10 (2) {
["request"]=>
string(20) "/statuses/update.xml"
["error"]=>
string(27) "Could not authenticate you."
}
2分以内に受け取った@はないようです。
>>103 の方と同じような症状ですが、
string(27) "Could not authenticate you."
と出て、@ID名も表示されていないためにIDの設定ミスだと思い確認しましたが
IDに関して間違いは見当たりませんでした。
setting.php以外でユーザー認証をする記述もなかったと思うのですが、
わかる方、どうぞお願い致します。
【バージョン】 EasyBotter2.03beta
【設置鯖名】 @pages
【PHPのバージョン】 5.2.6
【実行】 cron-job.org
【手動】 アカウントが認証できない
【不明点など】 アカウント名は間違っていないはずだが認証されない
初めまして質問です。
1.4ではうまく動いていたのですが
2.03に移行しようと思ったら真っ白になってしまいました。
【バージョン】2.03
【設置鯖名】さくら
【PHPのバージョン】PHP 5.2.12
【実行】さくらCron
【手動】動かずbot.phpの画面が真っ白
【不明点など】最初、説明通りにある部分しかいじらず他はいじらなかったのですが何故か真っ白でこまっています。
エディタは秀丸で文字コードはUTF-8、改行コードはLF。
data.txtとreply_pattern.phpとlog.datのパーミッションを666に設定しています。
何がいけないのかわからずお手上げ状態です。
よろしくお願いします。
>>128
各種ファイルのパーミッション・文字コード・改行コード・settingファイルの内容を確かめた上で
bot.phpの実行設定をこちらにコピペしてください
>>127 です。申し訳ありません、自己解決しました。
書く位置が違うという初歩中の初歩のミスでした…すみませんでした
>>129
回答ありがとうございます。
data.txtとreply_pattern.phpとlog.datのパーミッションを666、他は604です。
文字コードはUTF-8、改行コードはLFを確認しました。
settingファイルは
$screen_name = "①"; //botのid名
$consumer_key = "WtNt5W6js77cFHvKyVgf6Q"; // Consumer keyの値
$consumer_secret = "h3In28YiiRxtg4PTpkhPmrlJSGOCTG2oh3hslQ"; // Consumer secretの値
$access_token = "②"; // Access Tokenの値
$access_token_secret = "③"; // Access Token Secretの値
①はbotID
②③はhttp://pha22.net/twitterbot/2.0/setting.php で認証したものをコピペしました。
botの実行設定は
//=============================
//$response = $eb->autoFollow();
//$response = $eb->postRandom("data.txt");
//$response = $eb->reply(2,"data.txt","reply_pattern.php");
//$response = $eb->replyTimeline(2,"reply_pattern.php");
他のには触れていません。
>>131
スクリプト弄るの初めてかな?
コメントアウトを外さないと動くはずもないのだが。
今このような感じでつぶやかせているのですが
$response = $eb->reply(2,"data.txt","reply_pattern.php");
if(date("i") % 15 === 0){
ちょっと頻度が高いので4,5時間おきに発言させたいなぁとおもっています。
この場合どのような書き方があるでしょうか。
また、phpについて色々調べてみたのですが、
hpでカレンダーを表示させる等、
違うものの作り方などが引っかかってしまったり、
本もbotに特化したものが見当たらず、ちょっとピンときません。
php、基礎に役立つ本やhpをご存知でしたら教えていただければと思います。
>>132
回答ありがとうございます。
すいません直りました。
ありがとうございます。
>>133
EasyBotter2.0
http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1265625817/
まずは220、228、229を見てみること
それからPHPリファレンスサイト等で
・date関数
・演算子
・比較演算子
・条件分岐
の4つをよく読むこと
>>135
回答ありがとうございます。専門用語のどれを検索すれば
自分の知りたいものがヒットするかわからなかったので助かります。
ver.2で、先頭@以外には反応させたくない場合はどこをいじれば良いのでしょうか?よろしくお願い致します。
>>137
取得時.@になってるところ
>>137
こちらのレスを参考に
http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1265625817/127
でもEasybotter.phpの改造ネタだから、この初心者スレじゃなくあちらで。
>>126
Easybotterというより、サーバの仕様というべきでしょうか。
完全な乱数は作れないので、どうしてもかたよりが生じます。
こちらで紹介した関数を組み込んでみては?
http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1259840844/5n-6
twitter botに、非常に興味を持っている者です。
質問です。単純に文章群を順番に、定期的に
投稿するしくみを作りたいのですが、中
に140バイト以上の文章があり得るのです。
140バイト直前で切って、残りを続けて(次
呼び出される時でなく)すぐ投稿する機能は
ありますか?
>>141
そのような機能はない
しかしPHPを若干弄るか、設定の組み合わせを考えればできなくはない
ありがとうございます。
設定の組み合わせというのは、
「文章は最大140*nバイトということに決め、
1分毎にn回投稿する設定とし、
data.txtはn回改行をひとまとまりとして作成しておけば
空行は無視される」
などという解決が可能ということでしょうか。
それとも、phpをいじる方がいいでしょうか。
当方60のじじいでプログラムの経験も
ありませんが、もしいじる部分や方法を
ご示唆いただけましたら、努力する気力は
あります。
data.txtの内容を下のようにする
吾輩は猫である。名前はまだ無い。
どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。 >
吾輩はここで始めて人間というものを見た。しかもあとで聞くとそれは書生という人間中で一番獰悪な種族であったそうだ。 >
この書生というのは...
まず、postRotationをCRON等で定期的に動かす
これとは別に、自分のTLを監視する設定を入れこんでおいて
自分の最新ツイートに「 >」が含まれていたらpostRotationを動かす
のようにしていけば不可能じゃないと思う
そしてTL監視の方はCRON等をpostRotationを動かすCRONの合間に数回は動かす必要がある
>>145 の方法だと、リプライ関連のところを弄れば比較的簡単にできる
140文字を超える箇所が少ないなら、@やReply元情報を消した上でReplyPatternの流用でもできる
文字数カウントして分割して連続投稿もできなくはないけど
初心者さんには荷が重いかもしれない
では、phpをいじる方向で覚悟します。
基本的なところをすみません、
あずささん >>145 は、cronでもうひとつ
スクリプトを作成するように読めますが、
>>146 は reply_pattern.php をいじるように
読めます。
どちらの認識が正解でしょうか。
>>147
どちらも正しい
やり方が色々あるだけ
>>145-146 の1行目までが1パターン
2行目が別のパターン
はじめまして。最近EasyBotter2.03でbotを作り始めた者です。
サーバーは@pages、cronはSetCronJob、編集エディタはNoEditorを利用しています。
質問が2つありまして、答えて頂けたら幸いです^^
1) cronを設定する前、手動でbot.phpを開いてpostさせていた頃のことなのですが、
誰かから@をもらった時、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");
といった設定にしており、他にはsetting.phpのOAuth認証キーにしか触っていません。
もしかしたら、アップロードの仕方そのものに問題があるのかも…。
何か問題点があればご指摘お願いします。
2) もう一つは機能についてなのですが、
例えばbotに「@(相手のID)_(相手のユーザー名)さん」と言ったように、
ユーザー名を返信postに載せるようにするには、reply_pattern.phpにどう記載すれば適当でしょうか。
初歩的、奇怪な質問ですみません。よろしくお願いします^^
>>149
こことEasy Botter2.0スレはもちろん検索なり、読んだりしてくれているだろうか?
とりあえず文字コード・改行コードを見直すところから始めてみて
>>149
2)http://pha22.net/twitterbot/1.4/adv_id.php
1)reply_pattern.php無編集?
初心者スレ利用者は>>56 のテンプレを使用してください
>>149
文字コードUTF-8、改行コードLFです。
>>151
2) 見落としていました、ありがとうございます!
1) いえ、構文はテンプレを参考にしつつ少し編集を加えてアップしました。
>>152
す、すみませんでした…
【バージョン】Easybotter 2.03beta
【設置鯖名】ロリポップ
【PHPのバージョン】5.2.6
【実行】GAE-Cron
【手動】 動く
【不明点など】
@を貰った場合と、TLに反応させるファイルを分けることは可能でしょうか。
例えば、「おみくじ」という単語に対して、
@を貰えばおみくじを引く。@がなければ「おみくじどうでしたか」などと発言させる…
という風にしたいのですが、どういじったらいいのかわかりません。
ご教授いただけますでしょうか。
自己解決いたしました。
失礼いたしました…!
>>148
理解しました。
プログラムじたい初めてなので、改造する
方向で考えたいと思います。
data.txtを読み込んで一行分を投稿する、
という部分に140バイトで切るしくみを
入れるより、reply_pattern.phpで処理する方が
簡単でしょうか。
初めて書き込ませていただきます。
【バージョン】Easybotter 2.03beta
【設置鯖名】@pages
【PHPのバージョン】5.2.6
【実行】GAE-Cron
【手動】 動く
【不明点など】
GAEにも正常と表示され、2時間ごとの定期ポストも行われています。
phpファイル・GAEcron設定はどちらも2分間隔で、
リプライを行い2分以内にbot.phpに手動アクセスすると返事をするものの、
自動ではリプライしてくれません。
また自分のアカウントからbotにリプライ投稿後2分以内に
reply_pattern.phpにアクセスした所、リプライ文も何もなく、ただ画面が真っ白でした。
エラーは表示されなかったので構文ミスではないと思いますが…。
PHPの技術もなく説明書を頼りに作ってきたため、
ここからどのように対処すればよいのか全く分かりません。
どなたかご教授よろしくお願いいたします。
>>156
切るとしたら140バイトじゃなくて140字ですね。
自分が挙げたパターンでは、140字で切り連続ポストさせるより先に挙げた方法の方が簡単だと思います。
理由はスクリプトに書き加える量が断然違うことと。
140字で切って連続ポストという処理は自力で書く必要がある。
>>157
このスレをちゃんと読んだら答えが出る可能性が高い。
>>157
うん。さんざん既出だね。エンコード・パーミッションの確認など
それらを試してなお直らなければ、また質問してみてください。
初心者スレ利用者は>>56 のテンプレを使用してください。
また、思いつく単語をこのスレと関連スレで検索してください。
リプライ:リプ、@、replyなどで検索
タイムライン:TL、タイムラインなどで検索
CRON:CRON、bot.phpなどで検索
二重投稿:二重投稿、if、bot.phpなどで検索
リプライと同時に他のポストをする:bot.php、ifなどで検索
via〜変更:http://twitter.com/oauth_clients
スクリプト初体験の方は、PHPリファレンスで最低限の勉強
・正規表現(メタ文字)
・演算子
・比較演算子
・条件分岐(if、switch)
・date関数
>>156
体裁を気にされるより実を取った方が良いのではと思います。
連続投稿でもやはり、続きの文章が上に来るのに変わりありませんし。
途中の句読点で切ったりして、要約したりして、
文章を140字以内にする方が良いのでは?140字って結構書けますよ?
その場合、>>9 のサービス利用も検討を。
>>158
バイトは間違いです。すみません。
自分の最新を見て、>があれば
>>158
バイトは間違いです。すみません。
自分の最新を見て、>があれば続きを、という
方向で考えてみます。
>>162
ありがとうございます。それもずいぶん
考えました。最終的にはそちらに
逃げてしまうかもしれませんが、
少し改造方向でがんばってみます。
また質問するとおもいます。
よろしくおねがいします。
初心者スレ・EasyBotter2.0スレともに最初から読みました。
・文字コード、改行コードはterapadにてUTF-8N、LFであることを確認
・パーミッションはdata.txt,reply_pattern.php、reply_random.php、reply_tpattern.php、log.dat全て666設定になっていた
・パーミッションを644に戻したところ動いた、との事例も試してみたが変化なし
・編集した全てのファイルをブラウザで開いてみたが、エラー表示は出なかった
・land.toにサーバーを移しても変わらなかった
・ファイルを置いているのはwww数.atpages.jp/垢名/フォルダ/twitterbot/内です。
なお、EasyBotter.phpでは、反応する単語を拾わなかった場合返す言葉をランダムに呼び出すファイル名と
タイムラインに反応して返信するファイル名のみ適宜変更してあります。
とりあえず、自動リプライ機能以外は全て正常に動いているみたいです。
ちなみに、bot.phpの中身は
<?php
require_once("EasyBotter.php");
$eb = new EasyBotter();
$response = $eb->autoFollow();
if(date("G") % 2 === 0 && date("i") == 0){
$response = $eb->postRotation("data.txt");
}
if(date("i") % 2 === 0){
$response = $eb->reply(2,"reply_random.php","reply_pattern.php");
}
$response = $eb->replyTimeline(2,"reply_tpattern.php");
$text = str_replace("{year}",date("Y"),$text);
$text = str_replace("{month}",date("n"),$text);
$text = str_replace("{day}",date("j"),$text);
$text = str_replace("{hour}",date("G"),$text);
$text = str_replace("{minute}",date("i"),$text);
$text = str_replace("{second}",date("s"),$text);
if(strpos($text, "{tweet}") !== FALSE){
$tweet = preg_replace("@\.?\@[a-zA-Z0-9-_]+\s@u","",$reply->text);
$text = preg_replace("@{tweet}@u",$tweet,$text);
}
?>
です。
何か分かりましたらご指摘ください。
>>165
>>161 読んでないじゃん
>>140
ありがとうございます。
cronjob.deに移行したところ改善しました。
改造に関してはまた試行錯誤をしてみようと思います。
初めまして。
私の力ではどうにも出来なかったので書き込みさせて頂きます。
【バージョン】バージョン1.42
【設置鯖名】 ロリポ
【PHPのバージョン】PHP5
【実行】 GAE-cron
【手動】 質問内容を組んでいない状態は動きます
【不明点など】
使用しているファイルは
tw.txt
post_random.php
です。
tw.txtにhttp://pha22.net/twitterbot/1.4/adv_id.php にある、
【 {id}さんの{month}月{day}日のラッキーカラーは緑です 】
の発言を組み込んでいますが、これにカウントダウンの機能を組み込むことは可能でしょうか?
【 ●●さんの●月●日のラッキーカラーは緑です。【設定日:半年くらいあります】まであと■■日です 】
■■部分の表記です。
WEBでカウントダウンについてソースを紹介されているのですが
(ttp://hardsoft.at.webry.info/200907/article_3.htmlやttp://zxvf.homeip.net/index.php?td=1142222445)
こういうのしか引っかからなくてお手上げ状態です。
解決策がありましたらアドバイスお願い致します。
>>168
面白そうだなーと思いつつ自分もわからないため
ttp://zxvf.homeip.net/index.php?td=1142222445
ttp://ameblo.jp/linking/entry-10316462808.html
を参考に
「●月●日」「占い」を含むリプライがあったとき以下の動作をするようにしました
if(stristr($reply->text, "占い") && preg_match("/[0-90-9]{1,2}月[0-90-9]{1,2}日/u",$reply->text)){
$reply->text = mb_convert_kana($reply->text,"n","UTF-8");
//数字のみに分解
$echo = preg_split("/@".$this->_screen_name." |月|日/u",$reply->text,3,PREG_SPLIT_NO_EMPTY);
//日付をセット
$pDate1 = date("Y-m-d");//いま
$pDate2 = date("Y")."-".$echo[0]."-".$echo[1];//指定した日
//日付をUNIXタイムスタンプに変換
$TimeStamp1 = strtotime($pDate1);
$TimeStamp2 = strtotime($pDate2);
//何秒離れているかを計算(絶対値)
$SecondDiff = abs($TimeStamp2 - $TimeStamp1);
//日数に変換
$DayDiff = $SecondDiff / (60 * 60 * 24);
//ラッキーカラー
$randcolor = array("緑","赤","青");
//発言(過去、未来、当日)
if($pDate1 > $pDate2){
$rainen = date("y") + 1;
$pDate2 = $rainen."-".$echo[0]."-".$echo[1];
//日付をUNIXタイムスタンプに変換
$TimeStamp1 = strtotime($pDate1);
$TimeStamp2 = strtotime($pDate2);
//何秒離れているかを計算(絶対値)
$SecondDiff = abs($TimeStamp2 - $TimeStamp1);
//日数に変換
$DayDiff = $SecondDiff / (60 * 60 * 24);
$status = "{name}さんの来年、".$echo[0]."月".$echo[1]."日のラッキーカラーは".$randcolor[array_rand($randcolor)]."です。".$echo[0]."月".$echo[1]."日まであと".$DayDiff."日です。";
}else if($pDate1 < $pDate2){
$status = "{name}さんの".$echo[0]."月".$echo[1]."日のラッキーカラーは".$randcolor[array_rand($randcolor)]."です。".$echo[0]."月".$echo[1]."日まであと".$DayDiff."日です。";
}else{
$status = "{name}さんの本日、".$echo[0]."月".$echo[1]."日のラッキーカラーは".$randcolor[array_rand($randcolor)]."です。";
}
}else{
通常reply
}
今年過ぎた日付は来年の日付を計算するようにしてあります
これでなんとか動いているみたいですのでお試しあれ
「@bot 12月3日の占い教えて」「@bot 8月3日の占い」等で返答チェック済み
>>169 追記
日付の前に何か付いてると機能しないです。
それと10月日未満の修正を。。
if(stristr($reply->text, "占い") && preg_match("/[0-90-9]{1,2}月[0-90-9]{1,2}日/u",$reply->text)){
$reply->text = mb_convert_kana($reply->text,"n","UTF-8");
//数字のみに分解
$echo = preg_split("/@".$this->_screen_name."|[^0-90-9]+?|月|日/u",$reply->text,3,PREG_SPLIT_NO_EMPTY);
//10月・10日未満のとき0を加える
if($echo[0] < 10 && !stristr($echo[0],"0")){ $echo[0] = "0".$echo[0];}
if($echo[1] < 10 && !stristr($echo[1],"0")){ $echo[1] = "0".$echo[1];}
//日付をセット
$pDate1 = date("Y-m-d");//いま
$pDate2 = date("Y")."-".$echo[0]."-".$echo[1];//指定した日
//日付をUNIXタイムスタンプに変換
$TimeStamp1 = strtotime($pDate1);
$TimeStamp2 = strtotime($pDate2);
//何秒離れているかを計算(絶対値)
$SecondDiff = abs($TimeStamp2 - $TimeStamp1);
//日数に変換
$DayDiff = $SecondDiff / (60 * 60 * 24);
//ラッキーカラー
$randcolor = array("緑","赤","青");
//発言(過去、未来、当日)
if($pDate1 > $pDate2){
$rainen = date("y") + 1;
$pDate2 = $rainen."-".$echo[0]."-".$echo[1];
//日付をUNIXタイムスタンプに変換
$TimeStamp1 = strtotime($pDate1);
$TimeStamp2 = strtotime($pDate2);
//何秒離れているかを計算(絶対値)
$SecondDiff = abs($TimeStamp2 - $TimeStamp1);
//日数に変換
$DayDiff = $SecondDiff / (60 * 60 * 24);
$status = "{name}さんの来年、".$echo[0]."月".$echo[1]."日のラッキーカラーは".$randcolor[array_rand($randcolor)]."です。".$echo[0]."月".$echo[1]."日まであと".$DayDiff."日です。";
}else if($pDate1 < $pDate2){
$status = "{name}さんの".$echo[0]."月".$echo[1]."日のラッキーカラーは".$randcolor[array_rand($randcolor)]."です。".$echo[0]."月".$echo[1]."日まであと".$DayDiff."日です。";
}else{
$status = "{name}さんの本日、".$echo[0]."月".$echo[1]."日のラッキーカラーは".$randcolor[array_rand($randcolor)]."です。";
}
}else{
}
>>170
う…何回も連投申し訳ない(´;ω;`)
$rainen = date("y") + 1;のyは大文字にしてください
初めまして、特定の言葉にリプするbotが作りたかったのですが肝心の部分が動かず調べているうちにここに辿り着きました。多分とても基本的な事だと思いますがどうやっても動かない部分があるので分かる方どうかお力を貸して下さい。
バージョン1.42の reply_random.php の設定を
$file = "tw.txt";
$cron = 5;
$useReplyPattern = TRUE;
$replyPatternFile = "reply_pattern.php";
$replyLoopLimit = 3;
としているのですが、どんな特定の言葉を@でリプライしてみても reply_pattern.php を読み込まず
tw.txt に設定した言葉が@で返ってくるだけです。(設定箇所以外は触っていません)
reply_pattern.phpの記述に特に間違いはありませんでした。
使用サーバーはxrea、使用cronはsetcronjobです。
ランダムポストphpの方は問題無く動作しています。
ただreply_pattern.phpだけ読み込まないのです、PHPのバージョンの問題なのでしょうか?
botの動作というよりもPHPの記述の方になるかもしれないのですが
2.03でbotを作成し改変を行っています。自動フォローと同時に、
自動で「フォローしました」とリプライを返すようにしたいのです。
EasyBotter.php内のautoFollow()を改変してみれば良いと思ったの
ですが、ここにリプライの部分を入れようとしてもなかなかうまく
動作してくれません。
この程度はもう多くの方が実装されているだろう機能だと思います
ので、もしこの部分の記述に関して実装をされている方がいらっし
ゃったら、ご教授お願いします。
追記すみません
手動でreply_pattern.phpにアクセスしてリプ返しをすると
ブラウザ上に
Warning: Invalid argument supplied for foreach() in /virtual/*******/reply_random.php on line 172
Twitterへの投稿に成功しました。
@******に投稿したメッセージ:@******* xxxxxxxxxxxx!
というエラーが一緒に出ていることに気付いたので書いておきます、宜しくお願いします。
>>169 >>170
早速のご返答ありがとうございます!
tw.txtに書き込むのではなくリプライに反応させて…のパターンなのですね。
今まで、post_random.phpで動かしていたのですが(一日定時一回)リプライのバージョンにカスタムとなると
【今日は何日?】等のリプライのように反応させて、botのみ日付発言とあと何日かを発言させたいのですが可能でしょうか?
フォロワー【@bot 今日は何日?】
bot 【@フォロワー 今日は●月●日です。一日頑張りましょう。【設定日】まであと■■日です】
【@フォロワー 今日は●月●日です。お出かけ日和ですね。【設定日】まであと■■日です】
【@フォロワー 今日は●月●日です。今日はゆっくりしましょう。【設定日】まであと■■日です】
という形です。<botの回答がランダムでバリエーションがたくさんある
折角面白そうな占い機能を作ってくださったのに重ね重ね申し訳ありません。
もし、宜しければこういう形で作成可能でしたらご回答いただけると幸いです。
■質問される方へ■
>>161 をまず読んでください
状況がわからなければ助言のしようがありません
>>175
同じことです。
赤、の部分を一日頑張りましょう。にすれば済むことです。
>>177
ご回答ありがとうございます。
私の質問の仕方が悪かったので訂正させていただきます。
bot 【@フォロワー 今日は●月●日です。一日頑張りましょう。【設定日】まであと■■日です】
【@フォロワー 今日は●月●日です。お出かけ日和ですね。【設定日】まであと■■日です】
【@フォロワー 今日は●月●日です。今日はゆっくりしましょう。【設定日】まであと■■日です】
とありますが、全体の文のバリエーションのことです。
bot 【@フォロワー 今日は●月●日です。一日頑張りましょう。【設定日】まであと■■日です】
【@フォロワー ●月●日ですね。お出かけ日和です。【設定日】まであと■■日ですので覚えててくださいね。】
【@フォロワー 今日はゆっくりしましょう。今日は●月●日です。【設定日】まであと■■日ありますよ】
という感じです。
リプライの反応ですが
if(stristr($reply->text, "占い") && preg_match("/[0-90-9]{1,2}月[0-90-9]{1,2}日/u",$reply->text)){
$reply->text = mb_convert_kana($reply->text,"n","UTF-8");
//数字のみに分解
$echo = preg_split("/@".$this->_screen_name."|[^0-90-9]+?|月|日/u",$reply->text,3,PREG_SPLIT_NO_EMPTY);
//10月・10日未満のとき0を加える
if($echo[0] < 10 && !stristr($echo[0],"0")){ $echo[0] = "0".$echo[0];}
if($echo[1] < 10 && !stristr($echo[1],"0")){ $echo[1] = "0".$echo[1];}
の部分を変更すれば良いとは思うのですが、
elseif( preg_match("/(今日|あの日).*(何日).*(?)/u",$text)){
////ここを削除↓////
$reply->text = mb_convert_kana($reply->text,"n","UTF-8");
//数字のみに分解
$echo = preg_split("/@".$this->_screen_name."|[^0-90-9]+?|月|日/u",$reply->text,3,PREG_SPLIT_NO_EMPTY);
//10月・10日未満のとき0を加える
if($echo[0] < 10 && !stristr($echo[0],"0")){ $echo[0] = "0".$echo[0];}
if($echo[1] < 10 && !stristr($echo[1],"0")){ $echo[1] = "0".$echo[1];}
////ここを削除↑////
ということでしょうか?
試しにやってみるとエラーで動きませんでした。
リプライに対してのPHPは
ttp://8bitnote.sblo.jp/article/32678890.html
のファイルを使用させていただいております。
たびたび申し訳ありません。
もし、宜しければご回答お願いいたします。
>>178
それを消してしまうとリプライで指定した日付まであと●日という日付計算が出来ません
リプライで指定した日付ではなく、あらかじめ決めておいた日付で計算するならば消してかまいません
それと
$pDate2 = date("Y")."-".$echo[0]."-".$echo[1];//指定した日
を変更すればいいです
$echo[0]が月、$echo[1]が日にちですので
>>165
とりあえず以下のヒントをどうぞ。
・その bot.php の12行目以降は何の処理もありませんよ?
・EasyBotterの2.0で叩くURLはひとつ。
・EasyBotter.phpは基本的にいじる必要がない。
>>172
まず>>161 を。
次にphpのエラーの内容でググってみましょう。
配列の表記方法に問題はありませんか?
>>173
初心者スレでの回答としては、
→ 改造ネタだから、手動で返してあげたらいいのではないでしょうか?
改造スレでの回答としては、
→ EeasyBotter.phpの392行目の次に、つぶやきコマンドを仕込みましょう。
>>179
ご回答ありがとうございます。
あらかじめ決めておいた日付で計算するタイプにしたいので指定部分は削除してよろしいんですよね?
自分なりに変更してみたのですが、空リプライされてしまいお手上げ状態です。
}elseif( preg_match("/(今日|あの日).*(何日).*(?)/u",$text)){
//日付をセット
$pDate1 = date("Y-m-d");//いま
$pDate2 = date("2010-08-01");//指定した日
//日付をUNIXタイムスタンプに変換
$TimeStamp1 = strtotime($pDate1);
$TimeStamp2 = strtotime($pDate2);
//何秒離れているかを計算(絶対値)
$SecondDiff = abs($TimeStamp2 - $TimeStamp1);
//日数に変換
$DayDiff = $SecondDiff / (60 * 60 * 24);
//発言(現在、当日)
if($pDate1 > $pDate2){
$rainen = date("Y") + 1;
$pDate2 = $rainen."-".$echo[0]."-".$echo[1];
//日付をUNIXタイムスタンプに変換
$TimeStamp1 = strtotime($pDate1);
$TimeStamp2 = strtotime($pDate2);
//何秒離れているかを計算(絶対値)
$SecondDiff = abs($TimeStamp2 - $TimeStamp1);
//日数に変換
$DayDiff = $SecondDiff / (60 * 60 * 24);
$status = "今日は、".$echo[0]."月".$echo[1]."日です。あの日まであと".$DayDiff."日です。";
}elseif($pDate1 = $pDate2){
$status = "今日は、".$echo[0]."月".$echo[1]."日です。当日です。";
}else{
return;
}
こういう形に編集させて頂いたのですが、原因が分からないのでご指摘お願いいたします。
カウントダウンは、指定日以降動かさないつもりなのでこういう形にしました。
>>183
> $pDate2 = date("2010-08-01");//指定した日
$pDate1は今の時刻を取得しているに過ぎません。それを真似するのは間違いです。
$pDate2 = date("Y")."-".$echo[0]."-".$echo[1];//指定した日
をもう一度よく見てください。どう返るべきか考え直してみて。
あと$pDate2はもう一箇所ありますよ。
それと、私$echo[0]と$echo[1]が指定した月日だと言いましたよね…
> $status = "今日は、".$echo[0]."月".$echo[1]."日です。あの日まであと".$DayDiff."日です。";
> $status = "今日は、".$echo[0]."月".$echo[1]."日です。当日です。";
はおかしいです。
$statusもreply2.phpでは別の値ですので書き換えないと駄目です。
if($pDate1 > $pDate2){
(省略)
$status = "今日は、".$echo[0]."月".$echo[1]."日です。あの日まであと".$DayDiff."日です。";
}elseif($pDate1 = $pDate2){
$status = "今日は、".$echo[0]."月".$echo[1]."日です。当日です。";
}else{
return;
}
これでは空リプライするのは当然です。
if($pDate1 > $pDate2)は指定した日付が「過去」だとしたら、ということです。
たとえば1月3日を指定したとしましょう。今年はもう終わってますよね。
このままだと$DayDiffは「●日前」の●の数字を吐き出してしまいます。
回避するためには来年の1月3日までを計算させるようにしなくてはならないのです。
よって(略)の部分が必要になります。
else if($pDate1 = $pDate2)の考え方はあってます。
その後のelseは過去でも、当日でもない。つまり「未来」を意味します。
たとえば3月3日。まだ未来のことですよね。
return;を書いてしまっては意味がありません。
以上を踏まえてもう一度挑戦してください。
>>184
ごめん…よくみたら
else if($pDate1 = $pDate2)も微妙に間違ってる
=の使い方を学んできて下さい
>>184
色々ご指摘ありがとうございます!
以下、指摘部分を修正させていただきました。
}elseif( preg_match("/(今日|あの日).*(何日).*(?)/u",$text)){
//日付をセット
$pDate1 = date("Y-m-d");//いま
$pDate2 = date("2010")."-".$echo[08]."-".$echo[01];//指定した日
//日付をUNIXタイムスタンプに変換
$TimeStamp1 = strtotime($pDate1);
$TimeStamp2 = strtotime($pDate2);
//何秒離れているかを計算(絶対値)
$SecondDiff = abs($TimeStamp2 - $TimeStamp1);
//日数に変換
$DayDiff = $SecondDiff / (60 * 60 * 24);
//発言(現在、当日)
if($pDate1 > $pDate2){
$rainen = date("Y") + 1;
//発言(過去、未来、当日)
if($pDate1 > $pDate2){
$rainen = date("y") + 1;
$pDate2 = $rainen."-".$echo[08]."-".$echo[01];
//日付をUNIXタイムスタンプに変換
$TimeStamp1 = strtotime($pDate1);
$TimeStamp2 = strtotime($pDate2);
//何秒離れているかを計算(絶対値)
$SecondDiff = abs($TimeStamp2 - $TimeStamp1);
//日数に変換
$DayDiff = $SecondDiff / (60 * 60 * 24);
$mes = array("今日は、●月■日です。あの日まであと".$DayDiff."日です。");
$mes_n = count($mes) - 1;
$mesrand = mt_rand (0,$mes_n);
}elseif($pDate1 < $pDate2){
$mes = array("今日は、●月■日です。あの日まであと".$DayDiff."日です。");
$mes_n = count($mes) - 1;
$mesrand = mt_rand (0,$mes_n);
}elseif($pDate1 == $pDate2){
$mes = array("今日は、●月■日です。当日です。");
$mes_n = count($mes) - 1;
$mesrand = mt_rand (0,$mes_n);
}
}else{
}
これで、動かしたところ、
【 @フォロワー 今日は、●月■日です。あの日まであと14666.625日です。】
とPOSTされました。
不明な点は
* ".$DayDiff."日がうまく行かない点
* ●月■日を本日の日付発言にしたい点
です。
後者は 【今日は、{month}月{day}日です。】で機能するのかな?と思って変更したのですがそのまま発言されて無理でした。
長い時間対応してくださりありがとうございます。
申し訳ありませんがご助力お願いいたします。
>>186
記述がおかしいですね…。
修正してきます。
すみません。
>>184
再投稿失礼いたします。
記述がおかしいところを修正しました。
しかし、エラーが起きて(下にある他のリプライ部分)投稿すらできない状態になってしまいました。
}elseif( preg_match("/(今日|あの日).*(何日).*(?)/u",$text)){
//日付をセット
$pDate1 = date("Y-m-d");//いま
$pDate2 = date("Y")."-".$echo[08]."-".$echo[01];//指定した日
//日付をUNIXタイムスタンプに変換
$TimeStamp1 = strtotime($pDate1);
$TimeStamp2 = strtotime($pDate2);
//何秒離れているかを計算(絶対値)
$SecondDiff = abs($TimeStamp2 - $TimeStamp1);
//日数に変換
$DayDiff = $SecondDiff / (60 * 60 * 24);
//発言(過去、未来、当日)
if($pDate1 > $pDate2){
$rainen = date("Y") + 1;
$pDate2 = $rainen."-".$echo[08]."-".$echo[01];
//日付をUNIXタイムスタンプに変換
$TimeStamp1 = strtotime($pDate1);
$TimeStamp2 = strtotime($pDate2);
//何秒離れているかを計算(絶対値)
$SecondDiff = abs($TimeStamp2 - $TimeStamp1);
//日数に変換
$DayDiff = $SecondDiff / (60 * 60 * 24);
$mes = array("今日は、●月■日です。あの日まであと".$DayDiff."日です。");
$mes_n = count($mes) - 1;
$mesrand = mt_rand (0,$mes_n);
}elseif($pDate1 < $pDate2){
$mes = array("今日は、●月■日です。あの日まであと".$DayDiff."日です。");
$mes_n = count($mes) - 1;
$mesrand = mt_rand (0,$mes_n);
}elseif($pDate1 == $pDate2){
$mes = array("今日は、●月■日です。当日です。");
$mes_n = count($mes) - 1;
$mesrand = mt_rand (0,$mes_n);
}
}else{
}
こちらで、おかしい部分がありましたらご指摘願いたいです。
>>188
$pDate2 = date("Y")."-".$echo[08]."-".$echo[01];//指定した日
まずここが違います…
私はただ参考にしてということで
$pDate2 = date("Y")."-".$echo[0]."-".$echo[1];//指定した日
を出しました。
これの0や1が月日なわけじゃありません。
$echo[0]そのもの自体に数字を入れてました。
いま$echo[0]を定義したりしてませんよね。
つまり何もない。
一度$pDate1(現在の日にち)を適当なPHPファイルを作って表示してみて下さい。
<?php
$pDate1 = date("Y-m-d");//いま
echo $pDate1;
?>
で文字として表示できますので。
$pDate2をどう書かなければならないのか分かるかと。
あと…教えられたものをただ書き換えるだけじゃなく、まず一つ一つ意味を理解して下さい。
date()は何をするものか、とか最低調べて下さいね……。
ぐぐればすぐわかりますから…。
調べてから質問して下さい。
>>189
ご回答ありがとうございます!
たびたび申し訳ありません。
$pDate2 = date("Y")."-".$echo[0]."-".$echo[1];//指定した日
のことですが
ttp://www.scollabo.com/banban/php/php_12.html
ttp://ameblo.jp/linking/entry-10316462808.html
ttp://nyx.pu1.net/function/datetime/date.html
を見たり、
<?php
$pDate1 = date("Y-m-d");//いま
echo $pDate1;
?>
を実行して、【2010-02-27】と表示されるのを確認し、
<?php
$pDate2 = date("2010-08-01");//指定日時
echo $pDate2;
?>
を実行したりとしましたが…やはり、最初の時点でご指摘いただいた
$pDate1 = date("Y-m-d");//いま
$pDate2 = date("2010-08-01");//指定した日
になってしまい、間違っている答えに行き着いてしまいます。
未来の日付の設定が思いつきません。
この方法ではダメなんでしょうが、どうダメなのかが分からないのでご指摘して頂きたいです。
>>190
答え出てるじゃないですか(´;ω;`)
$pDate1には2010-02-27が入っているわけですよね…
その日付を、出力するためにdate("Y-m-d")を書いてるに過ぎないんですよ…
date()の中に"Y"と書けば『現在の西暦』、2010を出力
date()の中に"m"と書けば『現在の月』、02を出力
それは調べましたよね??
date("2010-08-01")は、どうなります?出力するものありますか?
$pDate1 = date("Y-m-d");は$pDate1 = "2010-02-27";でもあるんです
じゃあ$pDate2はどう書けばいいか…?
まあdate("2010-08-01")でも問題はないですけどね…
変な書き方をするというのは減らしたほうがいいのでこう説明しているわけなのですが…
補足するとここで2010を文字として2010と打ってしまうと、毎年変えなくちゃならない
それを避けるためにYという書き方をしています
$rainenも同様に
そして通常replyが出来なくなったのは最後のelse{}内に通常reply用を入れてないからじゃありませんか?
すいません初心者です…date.txtのダミーってけしていいんでしょうか?
>>191
すみません…斜め上に滑ってました。
$pDate1 = date("Y-m-d");//いま
$pDate2 = "2010-08-01";//指定した日
ということです…よね?
それにならって、もう一度組んでみたのですが…別の場所で躓きました。
}elseif( preg_match("/(今日|あの日).*(何日).*(?)/u",$text)){
//日付をセット
$pDate1 = date("Y-m-d");//いま
$pDate2 = "2010-08-01";//指定した日
//日付をUNIXタイムスタンプに変換
$TimeStamp1 = strtotime($pDate1);
$TimeStamp2 = strtotime($pDate2);
//何秒離れているかを計算(絶対値)
$SecondDiff = abs($TimeStamp2 - $TimeStamp1);
//日数に変換
$DayDiff = $SecondDiff / (60 * 60 * 24);
//発言(過去、未来、当日)
if($pDate1 > $pDate2){
$rainen = date("Y") + 1;
$pDate2 = $rainen."-08-01;
//日付をUNIXタイムスタンプに変換
$TimeStamp1 = strtotime($pDate1);
$TimeStamp2 = strtotime($pDate2);
//何秒離れているかを計算(絶対値)
$SecondDiff = abs($TimeStamp2 - $TimeStamp1);
//日数に変換
$DayDiff = $SecondDiff / (60 * 60 * 24);
$mes = array("今日は、date("Y")月date("m")日です。あの日まであと".$DayDiff."日です。");
$mes_n = count($mes) - 1;
$mesrand = mt_rand (0,$mes_n);
}elseif($pDate1 < $pDate2){
$mes = array("今日は、date("Y")月date("m")です。あの日まであと".$DayDiff."日です。");
$mes_n = count($mes) - 1;
$mesrand = mt_rand (0,$mes_n);
}elseif($pDate1 == $pDate2){
$mes = array("今日は、date("Y")月date("m")です。当日です。");
$mes_n = count($mes) - 1;
$mesrand = mt_rand (0,$mes_n);
}else{
return;
}
にすると、
$mes = array("今日は、date("Y")月date("m")日です。あの日まであと".$DayDiff."日です。");
でエラーが起きています。
日付が原因だと思い削除してうpしたのですが同じ場所でエラーでした。
重ね重ね申し訳ありません…orz
>>191
追加で。
別バージョンで作成したのですが
}elseif( preg_match("/(何日).*(?)/u",$text)){
//日付をセット
$pDate1 = date("Y-m-d");//いま
$pDate2 = "2010-03-01";//指定した日
//日付をUNIXタイムスタンプに変換
$TimeStamp1 = strtotime($pDate1);
$TimeStamp2 = strtotime($pDate2);
//何秒離れているかを計算(絶対値)
$SecondDiff = abs($TimeStamp2 - $TimeStamp1);
//日数に変換
$DayDiff = $SecondDiff / (60 * 60 * 24);
//発言(過去、未来、当日)
if($pDate1 > $pDate2){
//日付をUNIXタイムスタンプに変換
$TimeStamp1 = strtotime($pDate1);
$TimeStamp2 = strtotime($pDate2);
//何秒離れているかを計算(絶対値)
$SecondDiff = abs($TimeStamp2 - $TimeStamp1);
//日数に変換
$DayDiff = $SecondDiff / (60 * 60 * 24);
$Month = date("m");
$Day = date("d");
$mes = array("今日は、".$Month."月".$Day."日です。あの日まであと".$DayDiff."日です。");
$mes_n = count($mes) - 1;
$mesrand = mt_rand (0,$mes_n);
}elseif($pDate1 < $pDate2){
$mes = array("今日は、".$Month."月".$Day."日です。あの日まであと".$DayDiff."日です。");
$mes_n = count($mes) - 1;
$mesrand = mt_rand (0,$mes_n);
}elseif($pDate1 == $pDate2){
$mes = array("今日は、".$Month."月".$Day."日です。当日です。");
$mes_n = count($mes) - 1;
$mesrand = mt_rand (0,$mes_n);
}else{
return;
}
にすると、日付発言がおかしいのですが
「@フォロワー 今日は、月日です。あの日まであと1日です。」
とカウントは可能でした。
削除した部分が
$rainen = date("Y") + 1;
$pDate2 = $rainen."-08-01;
です。
>>193
すぐ近くの$DayDiffの、周りを見てみて気付きませんでしょうか?
それを参考にして下さい(・ω・´)
あと
$pDate2 = $rainen."-08-01;
もおかしいです。一つ記号が足りません。
>>195
申し訳ありません。
両方とも気づけないレベルなので教えていただきたいです。
後者の
$pDate2 = $rainen."-08-01;
は
$pDate2 = 2011-08-01;
扱いにならないのでしょうか?
>>196
文字として扱いたいなら""で囲わないとだめです
それだと引き算してるよ
あと気になったけど
else{
return;
}
って
else{ //どちらにも引っかからなかった場合にこの処理に移る
return; //自分が反応できるPOSTが無かったので、処理を中断してサブルーチンから抜ける
}
これかな?
だとすると>>193-194 どれも}ひとつ足りないよ
>>197
>文字として扱いたいなら""で囲わないとだめです
これは後者に対してのみ…の回答でしょうか?
>>193 をもとに修正したのですが
}elseif( preg_match("/(何日).*(?)/u",$text)){
//日付をセット
$pDate1 = date("Y-m-d");//いま
$pDate2 = "2010-03-01";//指定した日
//日付をUNIXタイムスタンプに変換
$TimeStamp1 = strtotime($pDate1);
$TimeStamp2 = strtotime($pDate2);
//何秒離れているかを計算(絶対値)
$SecondDiff = abs($TimeStamp2 - $TimeStamp1);
//日数に変換
$DayDiff = $SecondDiff / (60 * 60 * 24);
//発言(過去、未来、当日)
if($pDate1 > $pDate2){
$rainen = date("Y") + 1;
$pDate2 = $rainen."-03-01";
//日付をUNIXタイムスタンプに変換
$TimeStamp1 = strtotime($pDate1);
$TimeStamp2 = strtotime($pDate2);
//何秒離れているかを計算(絶対値)
$SecondDiff = abs($TimeStamp2 - $TimeStamp1);
//日数に変換
$DayDiff = $SecondDiff / (60 * 60 * 24);
$mes = array("今日は、"date("Y")"月"date("m")"日です。あの日まであと".$DayDiff."日です。");
$mes_n = count($mes) - 1;
$mesrand = mt_rand (0,$mes_n);
}elseif($pDate1 < $pDate2){
$mes = array("今日は、"date("Y")"月"date("m")"です。あの日まであと".$DayDiff."日です。");
$mes_n = count($mes) - 1;
$mesrand = mt_rand (0,$mes_n);
}elseif($pDate1 == $pDate2){
$mes = array("今日は、"date("Y")"月"date("m")"です。当日です。");
$mes_n = count($mes) - 1;
$mesrand = mt_rand (0,$mes_n);
}else{
return;
}
}
という形ということでしょうか?
これでも、
$mes = array("今日は、"date("Y")"月"date("m")"日です。あの日まであと".$DayDiff."日です。");
箇所でエラーになってしまいます。
>>198
はい$pDate2のみの話です
> $mes = array("今日は、"date("Y")"月"date("m")"日です。あの日まであと".$DayDiff."日です。");
これがさっき言った$DayDiffの周りを参考にーということです
date("Y")なども$aaa同様にしなければなりません
それとYとmじゃ年月です
あと}を入れる位置間違ってます
どこが閉め忘れてるのか、よく探してください
構文チェック機能のあるphpエディタなんかで編集するとわかりやすいですよ
>>199
後者のみは分かりました。
ありがとうございます。
}elseif( preg_match("/(何日).*(?)/u",$text)){
//日付をセット
$pDate1 = date("Y-m-d");//いま
$pDate2 = "2010-03-01";//指定した日
//日付をUNIXタイムスタンプに変換
$TimeStamp1 = strtotime($pDate1);
$TimeStamp2 = strtotime($pDate2);
//何秒離れているかを計算(絶対値)
$SecondDiff = abs($TimeStamp2 - $TimeStamp1);
//日数に変換
$DayDiff = $SecondDiff / (60 * 60 * 24);
//発言(過去、未来、当日)
if($pDate1 > $pDate2){
$rainen = date("Y") + 1;
$pDate2 = $rainen."-03-01";
//日付をUNIXタイムスタンプに変換
$TimeStamp1 = strtotime($pDate1);
$TimeStamp2 = strtotime($pDate2);
//何秒離れているかを計算(絶対値)
$SecondDiff = abs($TimeStamp2 - $TimeStamp1);
//日数に変換
$DayDiff = $SecondDiff / (60 * 60 * 24);
$mes = array("あの日まであと".$DayDiff."日です。");
$mes_n = count($mes) - 1;
$mesrand = mt_rand (0,$mes_n);
}elseif($pDate1 < $pDate2){
$mes = array("あの日まであと".$DayDiff."日です。");
$mes_n = count($mes) - 1;
$mesrand = mt_rand (0,$mes_n);
}elseif($pDate1 == $pDate2){
$mes = array("今日は、当日です。");
$mes_n = count($mes) - 1;
$mesrand = mt_rand (0,$mes_n);
}else{
return;
}
で試したら、日付発言は無いですが
@フォロワー あの日まであと1日です。
とリプされたのですが…やはり
足りないと言われている部分}は必要なんでしょうか?
>$aaa同様
新しく【$aaa】が出てきたのでよく分からないです。
Yとmが違ってたのは申し訳ありません。
日付発言にも躓いてる…んですよねorz<現状
> 足りないと言われている部分}は必要なんでしょうか?
}elseif( preg_match("/(何日).*(?)/u",$text)){
//日付をセット
$pDate1 = date("Y-m-d");//いま
$pDate2 = "2010-03-01";//指定した日
//日付をUNIXタイムスタンプに変換
$TimeStamp1 = strtotime($pDate1);
$TimeStamp2 = strtotime($pDate2);
//何秒離れているかを計算(絶対値)
$SecondDiff = abs($TimeStamp2 - $TimeStamp1);
//日数に変換
$DayDiff = $SecondDiff / (60 * 60 * 24);
//発言(過去、未来、当日)
if($pDate1 > $pDate2){
$rainen = date("Y") + 1;
$pDate2 = $rainen."-03-01";
//日付をUNIXタイムスタンプに変換
$TimeStamp1 = strtotime($pDate1);
$TimeStamp2 = strtotime($pDate2);
//何秒離れているかを計算(絶対値)
$SecondDiff = abs($TimeStamp2 - $TimeStamp1);
//日数に変換
$DayDiff = $SecondDiff / (60 * 60 * 24);
$mes = array("あの日まであと".$DayDiff."日です。");
$mes_n = count($mes) - 1;
$mesrand = mt_rand (0,$mes_n);
}elseif($pDate1 < $pDate2){
$mes = array("あの日まであと".$DayDiff."日です。");
$mes_n = count($mes) - 1;
$mesrand = mt_rand (0,$mes_n);
}elseif($pDate1 == $pDate2){
$mes = array("今日は、当日です。");
$mes_n = count($mes) - 1;
$mesrand = mt_rand (0,$mes_n);
}
else{
return;
}
こうやって段差つけてやると分かりやすいですよ
スペースじゃなくてTABキーでもいいです
TABキーだと掲示板に貼ると消えちゃいますけど
$aaaは単に$●●●、という意味です
分かり辛くてすみません
まず}を入れなおして、もう一度やってみてもらえますかね?
>>201
段差バージョンありがとうございます。
指定いただいた分をそのまま動かしてみたら無事動きました。
日付に関してなんですが
$●●●で指定ということで
}elseif( preg_match("/(何日).*(?)/u",$text)){
//日付をセット
$pDate1 = date("Y-m-d");//いま
$pDate2 = "2010-03-01";//指定した日
$Mon = date("m")
$Day = date("d")
//日付をUNIXタイムスタンプに変換
$TimeStamp1 = strtotime($pDate1);
$TimeStamp2 = strtotime($pDate2);
//何秒離れているかを計算(絶対値)
$SecondDiff = abs($TimeStamp2 - $TimeStamp1);
//日数に変換
$DayDiff = $SecondDiff / (60 * 60 * 24);
//発言(過去、未来、当日)
if($pDate1 > $pDate2){
$rainen = date("Y") + 1;
$pDate2 = $rainen."-03-01";
//日付をUNIXタイムスタンプに変換
$TimeStamp1 = strtotime($pDate1);
$TimeStamp2 = strtotime($pDate2);
//何秒離れているかを計算(絶対値)
$SecondDiff = abs($TimeStamp2 - $TimeStamp1);
//日数に変換
$DayDiff = $SecondDiff / (60 * 60 * 24);
$mes = array("今日は、".$Mon."月".$Day."日です。あの日まで、あと".$DayDiff."日です。");
$mes_n = count($mes) - 1;
$mesrand = mt_rand (0,$mes_n);
}elseif($pDate1 < $pDate2){
$mes = array("今日は、".$Mon."月".$Day."日です。あの日まで、あと".$DayDiff."日です。");
$mes_n = count($mes) - 1;
$mesrand = mt_rand (0,$mes_n);
}elseif($pDate1 == $pDate2){
$mes = array("今日は、".$Mon."月".$Day."日です。当日です。");
$mes_n = count($mes) - 1;
$mesrand = mt_rand (0,$mes_n);
}else{
return;
}
$Mon = date("m")
$Day = date("d")
を追加しました。
こういう形で追加してみたのですが追加部分でエラーになってしまいました。
他のパターンを参考にしたのですがどうおかしいのか分からないです…orz
>>201
いや、段差つけただけで}は入れてないですよ…?
それのせいでエラー出てるのかもしれないんで}は入れてくださいね。。
>>203
そうなんですか?
すみません…他のPHP部分も同じような感じでくくって動いているので足りない部分が分かりません。
}elseif( preg_match("/(何日).*(?)/u",$text)){
if($pDate1 > $pDate2){
}elseif($pDate1 < $pDate2){
}elseif($pDate1 == $pDate2){
}else{
return;
}
という形で他のものも作ってる感じです。
>>204
}elseif( preg_match("/(何日).*(?)/u",$text)){
if($pDate1 > $pDate2){
//↓iif($pDate1 > $pDate2){の閉め
}elseif($pDate1 < $pDate2){
//↓if($pDate1 < $pDate2){の閉め
}elseif($pDate1 == $pDate2){
//↓if($pDate1 == $pDate2){の閉め
}
else{
return;
//↓elseの閉め
}
if( preg_match("/(何日).*(?)/u",$text))の閉めはどこですかね?
もしかして…
}else{
return;
}
って
else{ //どちらにも引っかからなかった場合にこの処理に移る
return; //自分が反応できるPOSTが無かったので、処理を中断してサブルーチンから抜ける
}
じゃなくて
}else{
return; //自分が反応できるPOSTが無かったので、処理を中断してサブルーチンから抜ける
}
のほうですか??
>>205
}if($pDate1 > $pDate2){
こうということですか?
この構文の上にも構文があるのでくくりが無くても動いているという認識なのですが。
ここでくくってもエラーでしたが…orz
すみません、
ツイッター書き込みもできますし、
TL内の書き込みに反応した書き込みもできますが、
以下のようなエラーが出ます。
どういった意味なのでしょうか…
object(SimpleXMLElement)#5 (2) {
["request"]=>
string(20) "/statuses/update.xml"
["error"]=>
string(19) "Incorrect signature"
>>208
このスレの >>103 ,104を見てください。
あと、>>56 ,161も見てください。
エラーの内容は、翻訳サービスで日本語訳してみましょう。
【バージョン】 Easybotter2.03beta
【設置鯖名】 不明
【PHPのバージョン】 不明
【実行】 手動
【手動】 動く(random/rorationポスト、TL反応ポストとも)
【不明点など】 update.xmlエラー "Incorrect signature"
>>169 〜205←まとめてすいません
もう一度見直して ; の抜けなどを修正して無事機能することが出来ました。
長い時間つき合わせて申し訳ありません。
この度はありがとうございました!
>>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 さん
早速のご返答有難うございます。すみませんでした、もうしばらく調べてみます。有り難うございました。
>>306
まずは以下のスレを見て、考えられる対処を。
Twitterbotのcronスレ
http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1260351215/
>>309
・postRandom() 以外の機能は動いています。
・EasyBotter.php には現状深刻なバグはありません。
ここから導かれる可変要素はなんだと思いますか?
思うに、reply() の方も、100%機能していないのではないかと。
>>309
さらにヒント
ファイルがダブっているところがあるんですけど?
♪よーく見てみようー
>>312-313
すみません、あの後しばらく経ったらランダムで発言しだしました。
今は問題なく動いております。
コメントどうもでした。
【バージョン】Easybotter 2.04beta
【設置鯖名】@pages
【PHPのバージョン】PHP-5.2.6
【実行】GAE-Cron
【手動】動く
【不明点など】
リプライを返すまでに時間をかけないように1分おきにbot.phpを叩かせてるんですけど、同時に通常のポストも1分ごとに動作してしまうのです。
30分や1時間ごとに発言してくれるようにするには一体どこをどう弄ればいいんでしょうか?
>>315
>>161 を再確認で解決
>>315
またはこちらへ
EasyBotter 非公式wiki - livedoor Wiki(ウィキ)
http://wiki.livedoor.jp/easybotter_wiki/
全然BOT初挑戦なので四苦八苦しておりますが
何も分からず 最初は動いてたように感じたのですが
CRON設定で再度よく読み確認をしたら
$consumer_key = "WtNt5W6js77cFHvKyVgf6Q"; // Consumer keyの値
$consumer_secret = "h3In28YiiRxtg4PTpkhPmrlJSGOCTG2oh3hslQ"; // Consumer secretの値部分も変更しないといけない事に気づき変更をして再度BOTを動作したところ下記の様にメッセージがでてしまうのですが
Twitterへの投稿に失敗しました。ユーザー名:@areacocoobject(SimpleXMLElement)#10 (2) {
["request"]=>
string(20) "/statuses/update.xml"
["error"]=>
string(19) "Incorrect signature"
}
2分以内に受け取った@はないようです。
同じような質問がレスにあるようでないみたいなので
どなたかご指南ください
hetemlサーバーでPHP5、Cronも一時間に1回は設定出来るので
それでBOT調整をしたいのですが 行き詰まってます
宜しくお願い申し上げます
バージョン】バージョン2.04beta
【設置鯖名】 hetemlサーバー
【PHPのバージョン】5.0
【実行】 hetemlサーバー/ブラウザ自動更新/手動/他
【手動】動かない
【不明点など】 上記記載
テンプレートあったので 追記
>>318
setting.php追記する必要があるのは
$screen_name = ""; //botのid名
$access_token = ""; // Access Tokenの値
$access_token_secret = ""; // Access Token Secretの値
だけです
Access Tokenはphaさんのサイトをよく読めばわかるはずです
初心者ならConsumer keyとかは変えなくていいです
ありがとうございございます。再度元に戻して行って見ます
先程 ご指摘を頂き変更し 以前の様にWebからの動作はうまくいってるように思うのですが
Cronがいまいちうまく動作がしてないようなのですが Cron自体はメールで
動作報告がくるのですが全てNGの通知です。やはりロリポップ系のサーバなので
いろいろレスを拝見してるのですが うまく動かないのですかね?
パーミッションもレス中他の物を666に設定したら動いたとあったので やってみたのですが
やはりNGのようなのですが あと1時間に1回しかCronが動かないというところで
プログラム上で修正をした方がいいと思われるところが御座いましたら ご指導頂きたくお願い申し上げます
>>322
なんでもかんでもここで聞けば何とかなると思わず
もっと自分で調べましょうよ。cronについては、こちらへ
お探しの答えはこちらにあります
Twitterbotのcronスレ
http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1260351215/
■初心者の方へ■
質問前に、思いつく単語をこのスレ・関連スレで検索してください。
簡易FAQ:http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1259657570/168
非公式wiki:http://wiki.livedoor.jp/easybotter_wiki/
検索例)
リプライ:リプ、@、replyなどで検索
タイムライン:TL、タイムラインなどで検索
CRON:CRON、bot.phpなどで検索
二重投稿:二重投稿、if、bot.phpなどで検索
リプライと同時に他のポストをする:bot.php、if、同時などで検索
via〜変更:http://twitter.com/oauth_clients
スクリプト初体験の方は、PHPリファレンスで最低限の勉強をしましょう。
下記5項目がわかれば基本機能は使いこなすことができます。
・正規表現(メタ文字)
・演算子
・比較演算子
・条件分岐(if、switch)
・date関数
上記を調べたり勉強してもわからなければ下記テンプレを使って質問をしてください。
【バージョン】
【設置鯖名】 レン鯖名/自宅鯖
【PHPのバージョン】
【実行】 CRON鯖名/ブラウザ自動更新/手動/他
【手動】 動く/動かない
【不明点など】 (エラーメッセージがあればコピペ推奨)
すみません、Easybotter 2.03betaを利用させていただこうと思い、
ファイルをダウンロードし、編集しました。
その後「用意したサーバーにファイルをアップロードしてください。」
とあるのですが、どのファイルをアップすればよいでしょうか。
PEARというフォルダに入ったファイルも全て階層を合わせフォルダを作り、アップすればいいのでしょうか。
>>325
公式ページをご覧になっても分かりませんでしたか?
では1つ前のレス(>>324 )にあるwikiに書いてあります。
>>326
ありがとうございます。
無事アップできましたが、画面が真っ白になってしまいます。
・アップしたら真っ白になるだけ
エンコードUTF-8(TeraPadはUTF-8n)Bomなし 改行コードはLFになってるか
data.txtとreply_pattern.phpとlog.datのパーミッションが666になってるか(サーバーによって違う場合もあり)
setting.phpで何か間違ってないか
については、UTF-8Bomなし、改行コードLF、パーミッション666、settingの
アカウント名とaccess_token、access_token_secretは設定できていると思います。
ただ、consumer_key、consumer_secretはどこにも情報が無いので、
ファイルをダウンロードした時のままにしています。
是が原因でしょうか?
>>327
324読んだ?
聞くまえに検索した?
EasyBotter2.0スレの>>65 と同様のエラーが同じレンタルサーバで起きました。
Fatal error: Call to undefined function hash_hmac() in /home/******/PEAR/HTTP/OAuth/Signature/HMAC/SHA1.php on line 57
検索・wiki共に有効な解決方法が無かったため質問させていただきます。
説明書通りにbotのOAuth設定や属性変更を行い、テストとしてbot.phpにアクセスしたところ上記のエラーが発生しました。
どなたか解決方法を知っている方、お教え頂けるとありがたいです。
>>329
http://php.s3.to/tt/aws.php
サーバーでhash許可してないんじゃない?
php設定変更出来るならhash使えるようにして、出来ないなら諦めるしかないかと
>>330
phpの設定ですか。試してみようと思います。
この辺りの使用可かどうかなどはサーバを借りる際にわからないのでしょうか……。サービスの概要などを見てもPHP 5.X.X等としか書かれていないので、確かめるのは借りた後になってしまいますよね。
wikiあたりに、そういったレンタルサーバの対応表などを作っても良い物でしょうか。
>>331
安易にサーバーリストをアップするのは同意しかねる
借りる前にメールでサーバーに問い合わせすればいいだけ
初心者を免罪符にして調べる努力しない人が多過ぎる
>>332
今は各有料レンタル鯖は試用期間を設けていますしね
無料鯖なら退会すればいいし
まぁその辺は…その為の試用期間だと…
同じ運営でも、配られたサーバーによって違ったりしますからねえ
板主の解説サイトの名前とかスレタイとか、ここの人らは忘れてるんじゃないかって思う
【設置鯖名】 自宅鯖
【PHPのバージョン】5.2
【実行】 手動
【手動】動かない
【不明点など】
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>C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\kyukyu2\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>C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\kyukyu2\EasyBotter.php:515</td></tr>
<tr><td align="center">2</td><td>EasyBotter->_setData('https://twitter. …', Array)</td><td>C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\kyukyu2\EasyBotter.php:526</td></tr>
<tr><td align="center">3</td><td>EasyBotter->setUpdate(Array)</td><td>C:\Program Files\Apache Software Foun in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\kyukyu2\PEAR\HTTP\OAuth\Consumer\Request.php on line 214
とエラーが出てしまいます・・・
どうすれば良いのでしょうか・・・
1.4は動きました
>>>323 ご指導頂きありがとうございました。無事動作し始めました。
やはり初心者と言う事もありなかなか 分からないことが多いので
ロリ鯖を借り+風柳さまのCronで後パーミッション666で解決致しました。
多分 私と同じ分からない方が多いと存じますので 参考意見とし
まず 成功してる方のレスを見て動作環境を同じにして見るのが一番早いと
感じました。
多分自分的には同じロリ系の鯖なのですがheteml鯖で動作しないのは
CronでなくPHPの設定等、若干専門的なことが分からないと難しいのかな〜と
感じております。現状ではheteml鯖のPHP設定を変更できないので何とも言えないのですが
今後とも皆様のご指導を承りたく お礼を申し上げます ありがとう
>>336
さんざん既出のエラーです
http://wiki.livedoor.jp/easybotter_wiki/
>>335
公式すら読めない人はプログラミングができるできない以前の問題だということ
>>324 の通りスレ内検索すれば解決する質問が多過ぎる
基礎をわからずスクリプト弄って共用サーバーに迷惑かけた人もいる
1分とか2分単位でかなりの処理を繰り返すCGIだからリソースも食う
ループ処理をエンドレスで回してた人もいたが、あれも行き過ぎればサーバー飛ばす可能性だってある
誰でも始めるのは自由、でも物事には限度があるでしょ
というかVer2はdate関数や演算子といった『最低限のプログラミング知識』がないと動かせない仕様になってるし
ゴメン、>>339 のCGIはPHPの間違いね
>>339
>Ver2はdate関数や演算子といった『最低限のプログラミング知識』がないと動かせない仕様
そうかもしれんが、それについての記述が無いから事前に知る予知が無いだろ…
サイトじゃ必要な知識の項目で『プログラミングはできなくていいんだけど』って堂々と書いてあるから余計プログラミングの知識の無い奴が集まる
もういっその事スレの質問していい基準変えるか別のスレ作ってくれ
初心者スレだけど、検索しろとか誘導レスの一言で突き放されて終わり
ハッキリ言ってここは本当の初心者が質問出来る場所じゃない
>>341
HTMLタグしか知らなかった自分だけど
質問しなくてもエラーとかここの過去ログみたらわかったよ?
>>341
2.0はPHP5以上、curlの使えるサーバーなど、設置する人以前に
いろいろふるいにかけられてる状態です。それに2.0はまだbeta版であって
無理に最新版を設置しなくてもいいように安定版である1.42も配布してます。
そこをあえて2.0beta版の設置に挑むのですから、それ相応の知識と覚悟が必要
なのも、わかるはず。それにプログラミングできなくても最低限欲しいことは書いてあります
実際、私はあんなにたくさんかかれたプログラムを一から書けと言われても書けません。
それと何も下手に出ろとは言いませんが、色々やってみて本当に困っているんだなと
思われるものは、初心者スレでなくてもみなさん手順を教えてらっしゃいますよ。
やれる材料と機会はphaさんがほとんど揃えてくれました。
基礎的なものを組み立てたりコメントアウトするだけで、設置出来るようになってます。
人の言葉にあぐらをかいたり挙げ足取るだけでは、何も生産されませんよ
■初心者の方へ■
質問を書き込む前に>>324 を読もう!
かなりのトラブルの解決方法がわかるよ!
はじめまして、行き詰ってしまったので質問させて下さい。
【バージョン】Easybotter 2.03beta
【設置鯖名】 さくら
【PHPのバージョン】5.2.12
【実行】 手動
【手動】動かない
【不明点など】
フォルダをほとんどいじらず鯖にアップして、
data.txtとreply_pattern.phpとlog.datのパーミッションを666に設定しました。
bot.phpは「2分以内に受け取った@はないようです。」と確認できましたが、
投稿に失敗すると以下のエラーが出てしまいます。
Twitterへの投稿に失敗しました。ユーザー名:@ボットの名前
(SimpleXMLElement)#5 (2) {
["request"]=>
string(20) "/statuses/update.xml"
["error"]=>
string(33) "Read-only application cannot POST"
bot.phpの中身はこれだけです。
<?php
//=============================
//EasyBotterを呼び出します
//=============================
require_once("EasyBotter.php");
$eb = new EasyBotter();
$eb->reply(2,"data.txt","reply_pattern.php");
?>
どういじってみても上記のエラーメッセージがでます。
よろしくお願いいたします。
すみません、原因がわかりました、ありがとうございました!
>>346
うまくいきましたか。おめでとうございます。
何が原因だったかご報告いただけると、後進の方の参考になります。
できましたらよろしくです。
初めまして。
いろいろ調べてみたのですがどうにも解決出来ないので、ご意見下さい。
【バージョン】Easybotter 2.0 beta
【設置鯖名】land.to
【PHPのバージョン】5.2.11
【実行】手動
【手動】動くかエラー
【不明点など】Fatal error: Uncaught〜〜(以下、TABLEタグが続く)が出る
v2.0をDLし、PHP5以上のサーバでbot.phpを実行させています。(php.info();で確認済み)
公式サイトの指定要件は満たしていると思うのですが、エラーが出て進みません。
bot.php内の、動作を指定するところ(行番号:12〜16)で個別に確認したところ
autoFollow()は問題なく動作しました。また、@がないときのreply系も大丈夫でした。
が、post系と@があるときのreply系で上記の例外が出てしまいます…。
まとめwikiで現象自体は紹介されていましたが、どう回避したものかわかりません。
(サーバに繋がらないときに出るそうですが、自分のとこでは100%出ます)
ちなみに手動ですが、v1.4は問題なく動きます。投稿もリプライも出来ます。
サーバ選びなりなんなり、根本的に環境レベルで見直しが必要なんでしょうか?
内容がざっくりしていて申し訳ないですが、何かヒント頂ければと思います。。
ちなみに、必要ファイルのパーミッション設定は666に設定済み。
自動フォローが出来ているので、認証キー関連も問題なさそうです。
DLしたファイルは、認証キー以外は特に変更していません。
PHPプログラミング知識はそれなりにありますが、サーバ知識はありません。
よろしくお願い致します…
過去に同じような事例が見当たらなかったので質問させて頂きます。
【バージョン】1.42
【設置鯖名】 @PAGES
【PHPのバージョン】5.2.6
【実行】 GAEまたはMy Free Web Cron
【手動】 動かない
【不明点など】
定期投稿、リプライにVer.1.42を使わせていただいておりそちらは正常に動いています。
ですが、8bitさんが配布していらっしゃって同じファイル構造で実行できる、好感度を記録出来るPHPがどうしても動いてくれないのです。
web cronを2つ試しましたがどちらも200と表示され定期アクセス自体はされているようでした。
ただいくら待っても返事が来ないので手動でアクセスしてみたところページが真っ白のままエラーも何も表示されない状況でした。
テスト用に別のアカウントも取っているのですがそちらのアカウント名を入れて実行するとちゃんと動きます。
(○分以内に受け取ったリプライはありません。というような文が文字化けで出ます。投稿に支障はきたしていないのでこれはあまり気にしていません。)
先月は同じPHPデータを実行してもちゃんと動いてくれていたのでとても困っています。
助言をいただけると嬉しいです。よろしくお願いします…
>>348
非公式 wiki の「ver.2.0*設置手順*前準備〜設置編」によると、
> land.to やFileQはcurlが使用不可となっています。その為OAuth認証が出来ません=EasyBotterは動作不可
とのことです。残念ですが、鯖の変更をどうぞ。
>>351
あがが…!やっぱりサーバでしたか…!
EasyBotterを使ったbot作成解説系のブログで、どなたか忘れましたが
land.to使われてたので、同じものを選んだんですけどね…。
その方はv1.4を使われていたのかも知れません。
1.4を使うかサーバを変更するかということですね。
ありがとうございました。wikiに書いてあることで、すみませんでした…。
ちなみに、自動フォロー返しだけは動いたのですが、これって
OAuth認証が出来てるわけではないのでしょうか??
curlを使わない機能だけは動くとかそういうことですか?
>>350
何も変えていないのに、突然動かなくなることはありません。
いつの時点かで変更があったのでしょう。
画面が真っ白の場合、たいてい reply_pattern.php の記述ミスですけど。
>>353
お返事ありがとうございます。
reply_pattern.phpは使用していません。
phaさんの配布していらっしゃるスクリプトを使って動作させることの出来る別のPHPデータを使っています。(http://8bitnote.sblo.jp/article/32683097.html)
テスト用のアカウントでは動くのですがIDの部分を変更しただけ(パスワードはテスト用もメインのbotも一緒)で真っ白になってしまいます。
台詞をいじった際に何か余計なことをしたのかとも思い配布データのIDとパスワードだけ変更しましたが同じように真っ白になるだけでした。
twitter側の動作でアカウントによってプログラムが動かせたり動かせなかったりというのはあるのでしょうか…?
↑すいませんURL上手く貼れていませんでした。
http://8bitnote.sblo.jp/article/32683097.html
です。
>>354
もしかしてServicesフォルダをアップしていないんじゃ…
>>356
お返事ありがとうございます。
Servicesフォルダはアップロードしています。
別のアカウントでの動作は確認しています…
あ、間違えました。
それは8bitnoteさんの方でも書かれてますが、
>APIが一度に2つ使うことになり、Twitterにも負荷がかかる上制限に
>かかりやすくなるのでお勧めできません
と書かれてます。別垢だと動くのに、動かしたい垢で動かないのは
このためだと思います。改造すれば何とかなると思いますが
間違ったことをすると他のユーザーに迷惑がかかるので、やはり
もっと勉強してから挑んだ方がいいと思います
>>351
補足するとFileQはver2だとうまく使えてます
land.toとの差が何かわかりませんが…
curlじゃなくて別の問題かもしれないですね
>>358
なるほど私の読み落としですね…
前に動いたからといっていつでも動くわけではないのですね。
ちゃんと勉強した上で機能を増やしていこうと思います。
ありがとうございますお世話になりました!
初めまして。どうしても分からなくなってしまったのでご相談させていただきます。
先日Easybotter2.0でBOTを作り、GAEでcronを動かしています。botを置いているサーバーはPF-X.NET様です。
cronは2分ごとに動くようにしてあり、「on time successed」と出ているので正常に動作しているようなのですが、通常ポストもリプライも何も来る気配がありません。
cronに関してはこちらのサイト様を参考にし、手順通りに全て行いました。↓
ttp://ko-lab.net/twitter/google-app-enginegae%E3%81%A7cron%E5%8B%95%E3%81%8B%E3%81%99%E3%82%84%E3%82%8A%E6%96%B9%E3%82%92%E3%82%86%E3%81%A8%E3%82%8A%E5%90%91%E3%81%91%E3%81%AB%E3%81%BE%E3%81%A8%E3%82%81%E3%81%A6%E3%81%BF/
bot.phpに直接アクセスした場合は、正常にpostがきます。
考えられる問題は何だと思われますか?
上記でいくつか同じ質問が出ていたので参考にしましたが
どうにも解決出来ず困ってしまったので、ご意見をお願いします
【バージョン】Easybotter 2.0 beta
【設置鯖名】ロリポ
【PHPのバージョン】5
【実行】GAE
【手動】動くがエラー
【不明点など】
通常のポストは問題なく動くんですが、手動で叩くと
Warning: preg_match() [function.preg-match]: Compilation failed: nothing to repeat at offset 0 in /home/sites/lolipop.jp/users/*****/web/*****/EasyBotter.php on line 279
というエラーが出ます
@にもTLにも反応してくれません
EasyBotter.php(いじってません)の方も確認しましたが、よく分かりませんでした
文字コードはUTF-8、改行コードはLFになっています
他のサーバーにアップしてみても変わりありませんでした
>>362
reply_pattern.phpで記述ミスです
過去レスやwikiを見てください
>>363
即答ありがとうございます
wiki、過去レスには出来る限り目を通してあります
記述ミスはありませんでしたが、
reply_pattern.phpをDLして手を加えていない状態で試したところ
Warning: Invalid argument supplied for foreach() in /home/sites/lolipop.jp/users/*****/web/*****/EasyBotter.php on line 278
とエラーが出て(前回のものは出なくなりました)
書き変えても戻らなくなりました
それから色々と自分なりに調べたり検索にかけたりしたんですが
具体的な解決方法がどうしても分かりません
すみませんが、アドバイスを頂けると幸いです
>>361
ちゃんと借りているサーバーの利用方法や仕様を読んでから申し込みましたか?
見てみたところ
※Twitter等のボット設置目的での使用はご遠慮ください
制限などの詳細は利用規約も併せてご確認ください。
と書かれていましたよ。これ以上迷惑かけたくなければ
違うサーバーを借りた方がいいと思います
>>364
bot.php で、パターン反応を書き込んだファイル名が間違っているのではないでしょうか?
ファイルがなくてもエラーは出ない仕様みたいですので。
あと、テンプレにはきちんと書き込んでくださいね。回答のための貴重なデータですから。
【バージョン】Easybotter 2.04bata
【設置鯖名】 さくら
【PHPのバージョン】PHP-5.2.12
【実行】 さくらのcron 4分間隔
【手動】 動く
【不明点など】発言の投稿に成功しました、と出るが、投稿された画面に反映されない。
はじめまして、よろしくお願いいたします。
ウィキと本家様をみてみたのですが、解決できなかったのでどなたか教えてください。
リプライに反応して成功、cronも動作を確認したので
reply_pattern.phpの発言数を増やしたところ、
「Twitterへの投稿に成功しました。
@ボットの名前に投稿したメッセージ:@自分 言葉 http://twitter.com/ ボットの名前/status/…
4分以内のタイムラインに反応する単語がないようです。」
と表示されるのですが、確かにボットの画面で発言が確認できますが、
自分の画面には投稿されていない(見れない)のです。
きちんと動いていた時のバックアップを使ってみても駄目でした。
きちんと動いていた時から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(4,"data.txt","reply_pattern.php");
$response = $eb->replyTimeline(4,"reply_yobidasi.php");
?>
ご助力い願いいたします。
いきなり質問ですが、これはmac対応ですか?
367です。解決いたしました!
ありがとうございました。
先日EasyBotter2.04βをDLさせていただき、楽しくBOTを製作させていただいております。
既出かもしれませんがEasyBotter.phpが文字化けしてしまいます。
DLし直したところ、Shift-JIFで保存してあるような設定になっていました。
エディタはPHPエディタです。動作は問題無いのですが、内容を把握できず困っています。
よろしくおねがいします。
2日前まで通常稼動していたのですが
気がついたらつぶやかなくなっていました。
コロンに何かあったか、0.3からアップデートを
してないからだろうと思い、0.3から0.4ベータアップデートしたところ
下記のように手動ではリプライに反応しますが、
通常呟きは手動でも行えない状態になりました。
Twitterへの投稿に成功しました。
@bothogeに投稿したメッセージ:@ほげほげ いろはにほへと。 http://twitter.com/ ほげほげ
Twitterへの投稿に失敗しました。
ユーザー名:bothoge
object(SimpleXMLElement)#10 (2) {
["request"]=>
string(20) "/statuses/update.xml"
["error"]=>
string(19) "Incorrect signature"
}
さくらのサーバーを使用し、コロンはGAECronを使用しています。
GAECronの設定画面にいけないので、何らかの事情で
提供していただいていたコロンが行えなくなったのだと思ったのですが
手動でも通常つぶやきを行わないので
わけがわからなくなってしまいました・・・。
どなたかお知恵を拝借できればと思います。
【バージョン】Easybotter 2.04bata
【設置鯖名】 さくら
【PHPのバージョン】PHP-5.2.12
【実行】 gaecron
【手動】 リプライはできるが、通常発言を行わない
【不明点など】通常発言を全く行わない。コロンの問題の可能性もあるが、手動で発言しない謎が・・・。
こんばんは、完全に初心者ですが、簡単に設置できました。ありがとうございました。
質問なのですが、23時〜7時まで返信しかさせないようにするというのは可能らしいのですが、どのような文を書けばよいのかわかりません。
どうか教示お願いします。
EasyBotter2.0使用、3分ごとにさくらサーバーのcron使ってます。
>>368
もちろんMacでも設置していらっしゃる方はいますよ
phaさん自身がMacだった気が…
>>370
落ち着いて、もう一度最初から公式ページ読み直しましょう
ファイルの構成と編集の仕方のファイルを編集するエディタの設定(重要)
に書いてありますよ。または非公式wikiの設置手順の項目をよく読みましょう。
分からない単語が出てくれば、それをYahooなりgoogleなり検索にかければ
ヒットします。その手間を省いては今後編集の度にずっとつまづくだけになります。
がんばって覚えていきましょう
>>371
既出質問です。ここのスレを検索かけるか、非公式wikiの方に同様の例が載ってます。
http://wiki.livedoor.jp/easybotter_wiki/
バージョンアップの際に何かやらかしてしまったか、忘れているのだと思います。
2.03を設置したときと2.04で何を忘れているか、落ち着いて一つ一つ
確認しつつ
やっていけば、解決していけると思います。頑張って下さい
>>373
PHPエディタの自動判別でファイルを開くと失敗していたようです、ありがとうございました!
>>372
改造は初心者スレですることではありません。
それよりも気になったことですが、こちらを読んで下さい
http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1260351215/88
さくらのcronは最初は何分毎でも設定できます。
この掲示板でも2分毎や5分毎で動かしているよと言う人もいます。
でも、よく考えて下さい。あなたがそれだけ負荷の高いものをあげているということは、
同じサーバーを共有している他のユーザーにも負荷を与えているということです。
自分は動いているからいいじゃないか!という問題ではありません。すでに一時停止を
くらったサーバーもある様です。設置した本人だけでなく他のユーザーを巻き込んでね。
cronを設定するページ注意事項にも書いてあるように、最短でも1cronにつき60分毎と考えて
設定しませんか?近い将来、他のレンタルサーバーのようにtwitter botファイル設置は禁止
なんてことになりかねません。よく考えて下さい
初めまして。
phaさんの配布してくださっておりますスクリプトを利用し、初めてbotを作成しようとしております。
すごく初歩的な質問で恐れ入りますが、ご教授いただけたらと思います。
【バージョン】Easybotter 2.03beta
【設置鯖名】@pages
【PHPのバージョン】php-5.2.6
【実行】手動
【手動】動かない
【不明点など】
手順において、「試しにbotを動かしてみる」の項目でブラウザにアクセスした際に
Parse error: syntax error, unexpected T_LNUMBER, expecting T_STRING or T_VARIABLE or '$' in /usr/local/www/htdocs/****/public_html/****/twitterbot/****.php on line 6
と表示されてしまいます。
調べ方が悪いのか、どうしても解決できません。
初歩的な質問かと思いますが、ご指導いただきたいです。
よろしくお願い致します。
>>372
>>324 を見たら解決すること間違いない
時間で制御するには、いずれにせよ初歩的なプログラム知識が必要になるので
まずはPHPのお勉強をしてください
>>376
エラー英文は和訳してみた?
***.phpの6行目は見てみた?
>>378
エラー英文を和訳して、構文に間違いがあるのだとは思うのですが、
unexpected T_LNUMBER, expecting T_STRING or T_VARIABLE or '$' in
この部分が、どのように訂正することを示しているのかが理解できません。
***.phpですが、bot.phpのファイルにあたります。
この6行目は、//でコメントにしてある部分も含めた6行目でしょうか?
だとすると、bot.phpの6行目は
$eb = new ******();
となっているのですが…
この場合、どこを訂正すれば良いのでしょう?
まず2.04版にすることからはじめようか
>>379
不必要な部分まで***で隠さなくていいですよ
アカウント部分だけ隠せばあなたの身元はわかりませんから
とりあえず貴方がどういう確認をしているのか読み取れませんので確実とは言えませんが
カッコや文末の「;」の付け漏れがないか、全角スペース等が紛れ込んでいないか
文字コードや改行コードが正しいか(FTPが勝手に変換していないか)、バイナリでアップしているか
このあたりを再確認して、それでも駄目ならbot.phpをコピペしてください
ありがとうございます。phpから勉強します。
ところで質問なのですが、
>>375 にあったように、1時間に一度にcron実行をさせるとなると、リプライするときも一時間ごとになるということになりますか?
マニュアルでは「cronの実行間隔は2分ごとです。」とあったのでそのままcronを叩く時間の間隔かと思ったのですが…。
今は5分に変更しましたが、これも焼け石に水のようです。
>>382
さくらサーバー側のCRONについての記述を確認してください
CRONでの実行はサーバーに対する負荷が割合多いので、短い間隔で実行設定することは非推奨とされています
>>382
「マニュアル」はEasyBotterの、ではなくて鯖の「マニュアル」ですよ
一応さくら鯖から関連する部分をコピペしておきます
CRON設定画面下部
> メモリやCPUに著しく負荷をかける処理は他のお客様にご迷惑がかかりますのでおやめください。 サーバ運用に支障をきたす場合はやむを得ない場合には、予告無く設定解除、機能制限することがあります。
> 実行頻度が1時間以内に連続する場合や、CPU処理時間が60秒以上連続で利用される場合、予告なく設定解除される場合があります。
よくある質問
> 共用サーバですので、CPUに著しい負荷をかける処理はご遠慮ください。
> もし、サービス運営の支障をきたす過負荷をサーバに与えた場合、予告無く設定解除など処置をしますのでご注意ください。
上記の通りです
ぶっちゃけますと、3分ごとだろうが1時間ごとだろうが、鯖に負荷がかかればストップがかかります
負荷かけないように使って、という規約があるので仕方ありません
外部CRONを使えCRONを常駐させる分は負荷が軽減されますので、短間隔で実行したい場合は外部CRONをお勧めします
> 23時〜7時まで
というようなBOTの挙動管理はbot.phpを弄るだけです、既に>>377 さんが誘導済みなので詳細は割愛
>>382
加えて言わせてもらいますが
CRONの設定の一番上に
CRON機能は【上級者向け】です。
CRONの設定を誤った場合、思わぬ負荷をサーバに与えることになります。
必要がなければ変更しないでください。
と書かれています。cron設定が理解できず、自信がないならいじるなってことです
他のユーザーに迷惑かけてでも使いたいというのであれば、強制解除なり退会なり受けてください
本当に本当の初級質問で申し訳ないのですが、
プログラミング用のテキストエディタ、何が
お勧めでしょうか?
文字コードと改行コードを指定出来るエディタが
思い当たらなくて...。
すみません、どなたかお分かりになる方、お願い
致します。
wiki見よう
【バージョン】2.04beta
【設置鯖名】シックスコア
【PHPのバージョン】php5
【実行】シックスコアのcron
【手動】動く
【不明点など】
手動での投稿は問題ありませんが、cronで投稿できません。
Cronにエラーは出ていません。
ダウンロードしなおしてもう一度ファイルをUPしてみたりしたのですが、
状況は変わりません。
ランダムに投稿したいだけなのですが何か原因は考えられるでしょうか。
>>380
申し訳ありません。私の記載ミスです…
バージョンは、2.04betaです。
>>381
カッコや文末の「;」の付け漏れ等もなく
文字コードは、UFT-8、改行コードはLFに設定してあります。
<?php
//=============================
//EasyBotterを呼び出します
//=============================
require_once("244bot.php");
$eb = new 244bot();
//=============================
//botの動作をここに書いてください
//先頭に//がある行はコメント扱いなので実行しません。実行したい行の頭の//を削除してください。
//=============================
$response = $eb->autoFollow();
$response = $eb->postRandom("244data.txt");
//$response = $eb->postRotation("244data.txt");
$response = $eb->reply(2,"244data.txt","244reply_pattern.php");
$response = $eb->replyTimeline(2,"244reply_pattern.php");
bot.phpはこのように記述しています。
この状態でブラウザにアクセスすると
Parse error: syntax error, unexpected T_LNUMBER, expecting T_STRING or T_VARIABLE or '$' in /usr/local/www/htdocs/*******/public_html/244bot/twitterbot/244bot.php on line 6
とエラー表示が出てしまいます。
どこを直せば良いのか、ご教授いただければと思います。
よろしくお願い致します。
>>389
$eb = new 244bot();
がおかしいです・・・なんで書き換えちゃったんでしょう??
ここはファイル名じゃないんで。コマンド名ともいうべきか。
元に戻してください。
>>390
そうだったんですね。
無知でここもファイル名で書き換えなければならないと勘違いしてしまいました。
この部分を直して
<?php
//=============================
//EasyBotterを呼び出します
//=============================
require_once("244bot.php");
$eb = new EasyBotter();
//=============================
//botの動作をここに書いてください
//先頭に//がある行はコメント扱いなので実行しません。実行したい行の頭の//を削除してください。
//=============================
$response = $eb->autoFollow();
$response = $eb->postRandom("244data.txt");
//$response = $eb->postRotation("244data.txt");
$response = $eb->reply(2,"244data.txt","244reply_pattern.php");
$response = $eb->replyTimeline(2,"244reply_pattern.php");
この状態にしたのですが、今度は
Fatal error: Class 'EasyBotter' not found in /usr/local/www/htdocs/***/public_html/244bot/twitterbot/244bot.php on line 6
と表示されてしまいます。
エラー文を和訳してみたのですが、Fatal errorは致命的なエラーがあるという意味ですよね?
他の部分で初歩的なミスをしているのでしょうか…
>>391
EasyBotter.phpを244bot.phpにしてるの?
もしかして244bot.php(EasyBotter.php)の中身も弄ってる?
なんでファイル名を書き換えるのか…
こんな風にトラブルになるのなら書き換えないほうがいいよ
やるんならもっと知識付けてから書き換えよう
>>391
require_onceの意味を調べてみて下さい。
EasyBotter.phpの名前を変えましたか?
変えたわけでなければEasyBotterを呼び出せません。
on line 6でも6行目だけでなく6行目付近を見た方がいいです。
>>391
とりあえずもう一度DL→解凍してbot.phpは使う機能だけ//を削除
する以外何もしないでアップしてみたらいいよ
それから自分用に変えていったらいい
詳しい手順はwikiに書いてある
書き込み失礼します。
twittbotを使用していたのですが、
現在はEasyBotter(2.04)に挑戦しています。
正規表現について質問です。
reply_pattern.phpの中において、
特定の名詞+特定の動詞の組み合わせ→ランダムでリプライ
(「Aを食べる?」/「Bあげるよ」/「A食べて」などの発言に対して)
(「ありがとう」「好物です」などをランダムでリプライ)
を行いたいのですが、
"(A|B).*((た|食)べ|あげる)"=> array(
"ありがとう",
"好物です",
),
ではうまく動きません。間に「を」や「、」などが入っても返事をするようにしたいのですが、どう変更すればよろしいでしょうか。
お教えいただければ幸いです。
>>395
それで動くはずですけどね…
他の語句に反応してしまっている可能性はない?
reply_pattern.phpの中身をその語句だけにしてやってみてもだめなの?
こっちで動かしてみたけど、きちんと反応したよ
>>395
試してはいないんですけど、ついったーが重いときや不安定なときは正規表現が効かないときがありますね
うちの場合はもっと単純で、A.*Bにしているのですが、ついったーが不安定なときにリプライすると
Aのキーワードだけで反応してしまいます。時間を置いてみてなるのでしたらまた何か違うと思いますが
とりあえず症例として参考になれば
>>395
"(A|B).*(たべ|食べ|あげる)"=> array(
でやってみたら?
>>396 ,>>397 ,>>398
お返事有難うございます!
改めて中身を確認し、一度動かない部分だけにして試したところ、
きちんと動作することが分かりました。
いらない部分はコメント化していたので、消してはいけない所まで
消していたのではと思います。迷惑をおかけしました。
正規表現が間違っていると思いこんでいましたので、大変助かりました。
また何かありましたら宜しくお願いします。本当に有難うございました。
bot初心者です。
「プログラミングができなくても(ry」の「試しにbotを動かしてみる」で行き詰ってます。
>そしてtw.txtとreply_pattern.phpとlog.datのパーミッションを666に設定してください。
>botを動かすにはbot.phpにブラウザでアクセスしてみてください
ここができません。
パーミッションとは何のことで、どうすればその「666」にできるでしょうか?
そしてアクセスできないんですが……;
どなたか回答して頂ければ嬉しいです。
>>400 ですが、もう一点すみません。
.+?*()などの特定の記号の前には\をつける、とありますが、具体的にどの記号に有効なんでしょうか?
「�堯廚任笋辰燭蕁�?」になってできませんでした。
\をつけないと表示されない記号、\をつけても表示されない記号がある場合どうすれば表示されるようになるか、
よろしくお願いします。
>>400
ホームページの作り方からまず勉強しなおしましょう
それから>>324 を読んで勉強
>>402
分かりました、とりあえず自分でちょっと勉強してみます。
ありがとうございました。
>>375
ちょww
bot.php でリプライの実行制限を if 文で書くことは改造じゃないですよw
>>388
鯖の cron の動作指定については、鯖により違います。
php の指定が必要だったり、動作ディレクトリの指定が必要だったりします。
こちらも参照
Twitterbotのcronスレ
http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1260351215/
bot初心者です。
twitter bot GENERATORを利用していたのですが、PHPによるbotに挑戦しようとしています。
途中で不明点が発生しましたので、ご教授お願い致します。
【バージョン】Easybotter 2.04beta
【設置鯖名】@pages
【PHPのバージョン】php5.2.6
【実 行】手動
【手動】動かない
【不明点など】
ファイルをアップロードし、試しにbotを動かしてみるの項目でファイルにブラウザでアクセスしても、なにも表示されない。
特にエラー文が表示されるわけではなく、本当に真っ白です。
data.txtと、reply_pattern.phpとlog.datのパーミッションは666に設定しました。
よろしくお願い致します。
>>406
bot.phpの設定部分をコピぺしてみて
>>407
<?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");
>>408
まずは↓のオートフォローだけ試してみようや
$response = $eb->autoFollow();
他は//でコメントアウトしてね
>>409
とりあえず、
$response = $eb->postRandom("data.txt");
だけ試したら成功しました。
ありがとうございます。
bot初心者です。
【バージョン】Easybotter 2.03beta
【設置鯖名】@pages
【PHPのバージョン】php-5.2.6
【実行】手動
【手動】動かない
【不明点など】
今日、少し弄りましたら
Warning: require_once(HTTP/OAuth/Consumer.php) [function.require-once]: failed to open stream: No such file or directory in /usr/local/www/htdocs/kokyonkobot/public_html/EasyBotter.php on line 49
Fatal error: require_once() [function.require]: Failed opening required 'HTTP/OAuth/Consumer.php' (include_path='.:/usr/local/lib/php:/usr/local/www/htdocs/kokyonkobot/public_html/PEAR') in /usr/local/www/htdocs/kokyonkobot/public_html/EasyBotter.php on line 49
がでるようになりました。
どうしたら元に動くようになるか教えてください。
bot製作初心者です。
【バージョン】Easybotter 2.04beta
【設置鯖名】@pages
GAE-cronにて作動させています。通常ポストはなんとか自動でできるようになったのですが、
リプライが作動しなくて困っています。
直接叩いてみると
Parse error: syntax error, unexpected '?', expecting '(' パス on line 65
と出ます。エラーの出ている65行目、その前後を見てもエラー部分がわからず。
ためしにリプライパターンのその部分のパターンを削ってみると、
次は別の場所にエラーがでます。
一体どういうことなのでしょうか・・・。
65行目付近載せて置きます。
"反応ワード"=> array(
"台詞:G",
"台詞:M",
"台詞",
),
(:G、:M)はその台詞のキャラの記述です。コンビbotなので。
それから<?phpは最後に>で閉じなくてもいいんですよね?
ラストはモデル通りの);で閉めてありますが。
よろしくおねがいします。
>>412
エラーをググって調べたらエラーの意味はわかるのですが、それはちゃんと調べたかな?
「?」が多いと言われてるので、どこかで半角の「?」を使っちゃってるとかないかね
>>411
すぐにBOTのフォルダ変えて、垢バレしてるから
>>413
65行目がエラーだということしかわからなくて・・。
?ですが、半角のものはなく、かなり減らしたのですが同じエラー
出てしまいました・・
>>415
エラー行は目安でしかないので、全体をチェックしなきゃダメだよ
412です。他の事でもお聞きしたいことが・・。
さっきまでは普通に自動postできていたのになにかを少しいじったらdate.phpですごいエラーが出てしまい、なんとかエラー自体は直せたのですが、こんな表記のままになってしまいました。
Twitter????????????@**_bot???????????「台詞」 http://twitter.com/**_bot/status/105721914065?????????@????????
これ直せないでしょうか?
再び412です
>>416
そう思い何度も全体をチェックしたのですが、コロンやセミコロンなどの見落としはありませんでした。
しかし65行目をもう一度打ち直してみたり、そこを削除してアクセスをしてみても、次は他の構文にエラーで出ているので
65行目以外にもどこかがおかしいのだということはわかるのですが・・
>>417
まずは落ち着いて、焦らず、情報はまとめて書こう
ファイルの文字コード・改行コードは確認してる?
あとブラウザがUTF-8になってなくて文字化けしてる可能性もある
できれば>>324 のテンプレをもう一度使って書きこんで
あなたの文章では「今」の状況が掴みにくいので
>>417
何かの拍子にエンコードをUTF8以外にしてアップしたのだと思います
他の人も言ってますが、エラーの行数は目安であってとんでもないところにあるときもある
だから全部を見ないといけない。(であるべきところが?になってるよと言ってるのだから
どうしても分からなければ最悪reply_pattern.phpをもう一度初めからやり直して1つ1つ
確認しながら入れていけばいい
>>411
動いてたのに弄っておかしくなったのなら、何を弄ったのか教えて貰わないことには解法は教えられないわ
とりあえずOAuthとPEARの中身をアップし直して、各ファイル文字コード・改行コード確認かな
>>419 >>420
【バージョン】
【設置鯖名】 @pages
【PHPのバージョン】PHP-5.2.6
【実行】 GAE-Cron(でいいのでしょうか
【手動】 動く
【不明点など】
あいかわらず↓のような感じです。
Parse error: syntax error, unexpected '?', expecting '(' パス on line 65
文字化けもしっぱなしです。
文字コード・改行コード共に確認しましたがちゃんと出来ていました。
ブラウザも正常のようです。
リプライパターンは実は一度初めから書き直して、今だしているものが2度目なのですが。
最悪、また全て1かた作り直そうかとも考えています
■初心者の方へ■
質問を書き込む前に>>324 を読もう!
かなりのトラブルの解決方法がわかるよ!
>>422
んーと、まずリプライパターンのエラー解決について
パターン部分を全て「/*〜*/」でコメントアウト
上から順に1パターンずつ外していって、リプライでエラーが出るか否かを確認
エラーが出た部分に何か問題がある
>>424
Parse error: syntax error, unexpected '*' パスon line 78
とでてしまいました。コメントアウトの*にも反応しているんでしょうか?これは全てコメントアウトした状態です。
どこも外していないのにいきなり78を指摘されました。
もう1からやり直すしかなさそうですよね
>>422
自分がやりたいこと65行も書き出す前に、wikiにもあるように
reply_pattern.phpを何も書き換えずアップして
@○○bot おはようございます
と試してみたのかな?まずはそれをやってみたらいいよ
なんとなく根本的に何か勘違いしている気がする
"反応ワード"=> array(
"答え1",
"答え2",
),
で1セットですよ。書き換えるとしたら ""または"",の間にある
反応ワードと答え1答え2のところです
他はいじらない。正規表現は使わないでやってみて
>>426
それで1セットだということは理解しています。
台詞、と書いたのはその反応ワードの答えが台詞になっているということで
台詞と表記させていただきました。
わかり辛くてすみません。
何も書き換えず・・とwikiにあるということですが。
ここを見たのは本当に数時間前で、すでに始動させてみるところまでやっていたのです。
もう一度最初からやりなおしてみることにしました。
そのときはその手法をとりたいとおもいます。wikiもみつつ。
お答えくださったみなさん、どうもありがとうございました。
>>405
ありがとうございます。
cronスレで聞いてみます。
>>427
今更ですが@pages特有のクセで、UTF-8のPHPファイルをアップすると
先頭に?が挿入されてしまう人もいるようです
?が多いということなので、管理画面から直接入って
?<?php になっていたら
↓
<?php と直したらいいそうです
一度確かめてみてはどうでしょうか?
毎回お世話になっています。
【バージョン】Easybotter 2.04bata
【設置鯖名】@pages
【PHPのバージョン】5
【実行】 まだ試していませんがGAEです。
【手動】 一応反応する
【不明点など】
Twitterへの投稿に成功しました。とはでるのですが
@ぼっとに投稿したメッセージ:?????????????
みたいに文字化けをしていまいます。
文字コード改行コード等やレスの確認をしてみましたがどうしても解決できません。
data.php、reply_pattern.php、log.datのバーミッションも666に設定しています。
ご教授願いできませんでしょうか?
【バージョン】Easybotter 2.04beta
【設置鯖名】@pages
【PHPのバージョン】php5.2.6
【実行】GAE
現在、通常ポストやreply_pattern.phpを使ったリプライは問題なく動いています。
「@aaa 一曲歌って」と言われたら
「@bbb わかった。『○○』を歌うよ」/「@bbb じゃあ、『△△』を歌うよ」
といった風に、相槌部分Aと、曲名Bをそれぞれランダムに選ぶリプライを作りたいと考えています。
先程、違う言葉で暫定的に動かしていたら無事に成功したのですが、複数のファイルを行き来している
間に間違えて上書きしてしまったのか、EasyBotter.phpのどこにどんな文を入れたのかが
分からなくなってしまいました。残っていた文は、
if(stristr($reply->text, "色")){
$randcolor1 = array("赤","青","黄色");
$randcolor2 = array("桃","水色","橙");
$status = "色1は".$randcolor1[array_rand($randcolor1)]."で色2は".$randcolor2[array_rand($randcolor2)]."だよ";
}
こんな感じです。statusをmessageとしていた様な気もするのですが、色々試しても動かなくなって
しまい困っています。
今までにEasyBotter.phpを書き直した事もなく、上の文もこのスレを参考に書きました。
アドバイスお願い致します。
大事なところが抜けていたので付け加えます。
・通常postが??????というように文字化けします。reply_pattern.phpは文字化けしません。
それともう一つ、リプライされたときの返事は通常ランダムとパターンを用意していますが、
パターン(reply_pattern.php)がまったくと言っていいほど反応しません。
また、TLのpostにも反応しません。
連投失礼しました。
>>432
アップロード時のFTP・ファイルマネージャで文字コード等が改変されてる可能性はない?
【バージョン】Easybotter 1.42
【設置鯖名】inetd
【PHPのバージョン】PHP4
【実行】GAE- Cron
【手動】動く
【不明点など】post_random、reply_random、reply_pattern、の3つのphpファイルを使用しています。
そのうち、reply_pattern.phpのみが作動しないようです。
reply_pattern.phpの文法(セミコロン、カッコ、コンマなど)は何度も見直しました。
reply_random.phpのほうでReplyPatternはTRUEにしてあり、phpファイル名も指定してあります(初期設定のまま変更してません)。
reply_random.phpの「編集しないでください」の部分は一切弄っていません。
なお、このスレの上のほうで、エラーメッセージが出るという方がいらっしゃったようですが、こちらではエラーが一切出ず、
ただ、reply_pattern.phpの設定が完全に無視された状態でリプライが吐き出されます。
replt_random.phpとpost_random.phpの設定は完璧に反映されています。
余裕がおありでしたら、教えてくださいませんか?
よろしくお願いします。
>>434
文字コード・改行コードは確認したかな?
>>433
ffftpでうpろーどしてるのでffftpやブラウザなどの確認をしてみましたが、"変更された"ようなことは見つかりませんでした。
まだ解決はしてなく、苦戦の一方です。
>>432 の#2、3の問題について一応bot.phpをのせておきます。
$response = $eb->autoFollow();
$response = $eb->postRandom("data.php");
//$response = $eb->postRotation("data.txt");
$response = $eb->reply(2,"rpl.php","reply_pattern.php");
$response = $eb->replyTimeline(2,"reply_timeline.php");
#2 ・・・ リプライされたときの返事は通常ランダム(rpl.php)とパターン(reply_pattern.php)を用意していますが、パターンがまったくと言っていいほど反応しません。リプライでどうpostを送っても必ずrpl.phpに書いてある反応をしてしまいます。
#3 ・・・ TLの言葉に反応しません。
>>435
ありがとうございます!
> 文字コード・改行コード
すみません、上で書き忘れました。それも既に確認済です。
TeraPadでの編集でしたので、「UTF-8N」「LF」で保存してあります。
なお、パーミッションも確認済みです。
(一般には666ということですが、私の使っているサーバでは600で動くようです。他の2つはそれで動いているので、問題ないはずですが…)
たびたびすみません。
>>434 ,437 について、
パーミッション666で改めて試してみましたが、
post_random、reply_randomの2つはそれでも問題なく動作しました。
相変わらずreply_pattern.phpが動きません…
申し訳ありませんが、どなたかお知恵を貸していただけたら助かりますm(_ _)m
はじめまして、よろしくお願いします。
【バージョン】EasyBotter2.04beta
【設置鯖名】 @pages
【PHPのバージョン】
【実行】 GAE cron
【手動】 動く
【不明点など】
結論から申しますと、Rotationだけが機能してくれません。
$response = $eb->postRandom("data.txt"); や
if(date("i") % 15 === 0){
$response = $eb->postRandom("data.txt");
}
などの指定では順調に動くのですが、Randomの部分をRotationに変えた途端、動作しなくなってしまいます。
data内のテキストは数十用意してあるので、発言制限に引っ掛かっているわけではないと思うのですが……。
ちなみにリプライなども普通に動いており、本当にRotationだけが駄目な状態です。
どなたか、アドバイスいただけると幸いです。
申し訳ありません、過去ログをたどったのですが、問題点が分からないので相談させてください。
【バージョン】Ver.2.0
【設置鯖名】 @PAGES
【PHPのバージョン】PHP-5.2.6
【実行】 手動
【手動】 動かない
【不明点など】リプライが作動しない。
BOTにリプライを送ったあと、手動でbot.phpにアクセスしても「2分以内に受け取った@はないようです。」と表示されます。
いくつか同じような方がいらしたようですので、このスレに書かれていた方法をいくつか試しました。
bot.phpの内容をランダムポストを実行するのみにすると正常に作動。
ですのでreply_patternを>>107 さんの書かれていたものに、bot.phpを
<?php
require_once("EasyBotter.php");
$eb = new EasyBotter();
$response = $eb->reply(2,"data.txt","reply_pattern.php");
?>
に変更してみたのですが、同じく「2分以内に受けた@はないようです。」とのことでした。
reply_patternの問題ではないと判断し、settingを見てみたのですが、不備は見つけられませんでした。
お手数をおかけしますが、ご回答いただければ幸いです。
はじめまして、失礼ながら早速質問させていただきます。
【バージョン】Easybotter 2.04beta
【設置鯖名】@pages
【PHPのバージョン】5以降だと思われます
【実行】GAE-Cron
【手動】 動かない
【不明点など】
>>270 >>315
などにも質問はあったのですが、答えが見当たらなかったので…
bot自体の呟きは1時間間隔、
TL・リプライに反応語句がある場合は2〜3分間隔 というようにしたいのですが…
どなたか教えていただけたら幸いです。
ソースの公開の必要があればします。
>>441
散々なくらい既出なので>>324 を読んでください
■初心者の方へ■
質問を書き込む前に、必ず>>324 に書かれている内容を熟読・実行してください。
コピペで済ませていると、何らかの問題が生じた時に対処ができません。
場合によっては鯖を吹っ飛ばしてしまうこともあります。(過去に事例があります)
■PHPのバージョンを調べたい
<?php
echo 'Current PHP version: ' . phpversion();
?>
↑のみのファイルを作りphp形式で保存、サーバーに上げてphpを実行する。
Current PHP version: バージョン ←このように表示されます。
>>324 のリンクで発見しました。
どうも失礼いたしました。ありがとうございます
#1の文字化けについて自己解決しました。
私はnotepad++を使っていましたがそれが原因だったそうで、
terapadに変えて更新したら難なくと文字化けは直りました。
まだ#2、3は解決してないです。
どうかご教授お願いします><
連投失礼です。
最後にお答えしてくれた方、ありがとうございました。
すみません、やっぱり判らないので教えて頂けると幸いです。
【バージョン】Easybotter 2.04bata
【設置鯖名】 さくら
【PHPのバージョン】PHP-5.2.12
【実行】 GAE(3分設定)、さくら(1時間に1度だけ)双方
【手動】 一部ファイルだけが動く
【不明点など】
通常ポストを20分おき、時間帯で2種を使い分け。
こちらは問題なく動いているのですが、
リプレイを時間帯によって使い分けしようとすると
reply_pattern.php
の内容のみを全部の時間で吐き出します。
もしかしてEasyBotter.phpの131.132
//リプライする
function reply($cron = 3, $replyFile = "data.txt", $replyPatternFile = "reply_pattern.php"){
$replyLoopLimit = $this->_replyLoopLimit;
を変更しなくてはならないのでしょうか?
以下、bot.php中身です。
<?php
//=============================
//EasyBotterを呼び出します
//=============================
require_once("EasyBotter.php");
$eb = new EasyBotter();
//=============================
//botの動作をここに書いてください
//先頭に//がある行はコメント扱いなので実行しません。実行したい行の頭の//を削除してください。
//=============================
//$response = $eb->autoFollow();
//$response = $eb->postRandom("data.txt","data02.txt");
//$response = $eb->postRotation("data.txt");
//$response = $eb->reply(3,"reply_pattern.php");
$response = $eb->replyTimeline(3,"tl_pattern.php");
//bot.phpを実行したときに、0分、20分、40分だったら実行される
if(date("i") % 20 === 0){
if(date("G") > 0 && date("G") < 7){
$response = $eb->postRotation("data02.txt");
} else {
$response = $eb->postRotation("data.txt");
}
}
if(date("G") > 5 && date("G") < 11){
$response = $eb->reply(3,"reply_pattern.php");
} else if(date("G") > 10 && date("G") < 16){
$response = $eb->reply(3,"reply_pattern02.php");
} else if(date("G") > 15 || date("G") < 1){
$response = $eb->reply(3,"reply_pattern03.php");
} else {
$response = $eb->reply(3,"reply_pattern04.php");
}
すみません、自己解決できました。
すみません、何度も失礼します。
自分で出来る限り>>436 の#2、#3の原因を探してみましたが終わりが見えてきません。
#2 ・・・ あるレスでEasyBotter.php内をいじると動くときがあると聞きましたので、
行131の//リプライするの次の行にあります、 function reply()の記述を、
function reply($cron = 2, $replyFile = "rpl.php", $replyPatternFile = "reply_pattern.php")
と変更してみましたが変わりもなく、変更前と変わりませんでした。
#3 ・・・ これがまったくといって不可解です。
EasyBotter.php内行181の//タイムラインに反応するより、次行の
function replyTimeline()を
function replyTimeline($cron = 2, $replyPatternFile = "reply_timeline.php")
と記述しましたが、これも変わらずでした。
また、bot.phpにアクセスするとたぶん#3関連だと思いますが
Warning: Invalid argument supplied for foreach() in (ディレクトリ)/EasyBotter.php on line 278
と表記されます。
レスを見てる限りだとEasybotter.phpを操作する必要がないそうですが・・・
"foreachに不正な引数が渡されています"ということが表記される理由もさっぱりならないので
何方かご教授していただけると嬉しいです><
長文失礼しました。
御教授宜しくお願いします。
【バージョン】2.03
【設置鯖名】 @pages
【PHPのバージョン】PHP-5.2.6
【実行】 GAE-cron
【手動】 動く
【不明点など】
TLにも、リプライでの反応語句にも反応しません…
------bot.php
$response = $eb->reply(3,"non_rep.txt","reply_pattern.php");
$response = $eb->replyTimeline(3,"tl_pattern.php");
-----------
reply_pattern.phpに反応キーワードが書いてあり
non_rep.txtはリプライに反応キーワードが無い場合ランダムに返すデータが書いてあるのですが、
reply_pattern.phpに書いた語句をリプライで送ってもnon_rep.txtが帰ってきてしまいます…
日本語分かりづらくてすみません…
さんざん既出だろうと思いつつもいくら検索してもいまいち求めている答えが見当たらなかったので質問させていただきました。
参考になるURLだけでも教えていただけたらなと思います(´;ω;`)
>>450
2.04を使ってください
すみません真上に同様の質問がございましたね!
たびたびすみません…orz
たびたびすみません ほんとすみません
>>451
記述ミスです、2.04でした(´・ω・`)
>>449
まずはWikiにある通りにやってみてください
それでダメならまた考えましょう
>>447
コメントアウトしてるものをすべて消して
使うものだけ残してください
それでもダメならまた考えましょう
それと、PHPをすべて直して
$response = $eb->reply(3,"reply_pattern.php");
も
$response = $eb->reply(3,"","reply_pattern.php");
にしてください
本来これが正しい書き方のはず……
>>438
つまりパターン反応をしないということですか??
念をおして言っておきますがreply_patternは単体では動きません
reply_randomが内部で使用しています
>>455
すいません、447です。一応、前の名前のところの数字『289』は全く違う方でございます(焦)
えと、$response = $eb->reply(3,"","reply_pattern.php");に変更してコメントアウトも全て消したら、今度は真っ白な画面しかでなくなりました。
現在は
if(date("G") > 5 && date("G") < 11){
$response = $eb->reply(3,"","reply_pattern.php");
} else if(date("G") > 10 && date("G") < 16){
$response = $eb->reply(3,"","reply_pattern02.php");
} else if(date("G") > 15 || date("G") < 1){
$response = $eb->reply(3,"","reply_pattern03.php");
} else {
$response = $eb->reply(3,"","reply_pattern04.php");
}
の部分を消して、時間帯別のリプをしない形にしております(これは動く)
通常ポストはきちんと時間別で動いているのですが、リプレイと平行しては使えないんでしょうか?
>>449
リプライパターンファイルの検証はなさってますか?
一度、解凍したそのままのパターンファイルを使ってみられては?
毎回ありがとうございます。
>>458 さんのおかげで#2、3が解決したのをご報告します。
サンプルの奴に変えたところ反応したため、自分が作成したファイルと見比べをしてみたら
最初の$dataが$date になってました。
分かってしまうととても恥ずかしいミスです。
自分の見落としのせいでいろいろレスを書き込んでしまい申し訳ございませんでした。
ちなみに#3も同様でした。
またお願いすることがありましたら書き込みします。
今回の件は申し訳ございませんでした;
たびたびすみません…失礼します
【バージョン】2.04
【設置鯖名】 @pages
【PHPのバージョン】PHP-5.2.6
【実行】 GAE-cron
【手動】 動く
【不明点など】
相変わらずTLにもリプライにも反応しないのです。
自分が書いたデータがいけないのかと思い 解凍しなおして
また作ってはみたのですが…
元から入っている「おはよう」をリプライで送りつけても
いろは歌が帰ってきてしまいます;
bot.phpの変更では
//$response = $eb->reply(2,"data.txt","reply_pattern.php");
//$response = $eb->replyTimeline(2,"reply_pattern.php")
の//を消した程度です…
その他はsetting.phpに各種自分で取得したconsumer/secret,
Access token/secretを入れた程度です。
何度もしつこくすみません><申し訳ないです…
>>460
wiki見ましたか?reply_pattern.phpが両方とも同じです。
01を付けるなりなんなりして片方のファイル名を変えて下さい
質問失礼致します。
非常に初歩的で申し訳ないのですが、
http://www.sdn-project.net/labo/oauth_old.html
の通りにOAuth認証を自アプリで行おうとしています。
しかし最後のポスト設定で詰まってしまいました。
// twitterOAuth.phpを読み込む。パスはあなたが置いた適切な場所に変更してください
require_once("twitterOAuth.php");
エラー箇所がライン3とのことなので、ここのパス指定の方法が違っているのだと思います。
ここはどのように書けば良いのでしょうか……?
>>461
>両方とも同じ
タイムラインに反応するパターンを書いたデータは
とりあえずリプライに反応するようになってから変えようと思ってます…(´・ω・`)
>>460 ,463
解凍し直したのは2.04ですよね。全て入れ替えましたか?
2.02以前のはバグがありますのでEasyBotter.phpだけ入れ替えても駄目です。
とりあえずリプライだけにしてみましょう。
$response = $eb->reply(2,"data.txt","reply_pattern.php");
//$response = $eb->replyTimeline(2,"reply_pattern.php");
それからdata.txtとreply_pattern.phpのパーミッションが666になっているか確認。
これでやってみて下さい。
>>464
ご指摘ありがとうございます
もう一度全部消して解凍しなおして 入れ替えて
リプライだけでやってみましたが やっぱりだめでした…
いろは歌が返ってきました;
【バージョン】Easybotter 2.04beta
【設置鯖名】@pages
【PHPのバージョン】
【実行】GAE-Cron
【手動】通常投稿はできる
【不明点など】
30分ごとの通常投稿はできていて、
Twitterへの投稿に成功しました。@ほにゃららに投稿したメッセージ:ほにゃらら
~分以内に受け取った@はないようです。
~分以内のタイムラインに反応する単語がないようです。
と出るのですが、@を送ると
~分以内に受け取った@はないようです。
の分が消えて、リプライを返してくれません。
どこに問題があるのかまったく分かりません。
どなたかご教授お願いします。
>>462
wikiみて
【バージョン】Easybotter 1.4
【設置鯖名】@pages
【PHPのバージョン】PHP-5.2.6
【実行】GAE-Cron
【手動】動く
【不明点など】
リプライチェック、cronともに2分にしており、基本的にきちんと反応してくれるのですが、2分以内に複数リプライ(それぞれ別の方から)を受け取った際に、一人にだけリプライを返してしまいます。
ループ制限はしておりません。
また、もらったリプライの語句もチェックしてみたのですが、重複しておらず、Twitterの規制にひっかかったわけでもなさそうです。
2.04がうまく動かないので、1.4のまま続けたいのですが…これは2.04にしないと直らないのでしょうか?
お手数ですがご意見お願いいたします。
初めまして。最初から見てきましたが、
ここって、初心者OKですよね?
それも、プログラミングの初心者でなく、
PCの素人のレベルなので、
いろんなカタカナや記号がすでに分からなくて、
圧倒されていますが、質問させてください。
【バージョン】 バージョン2.04beta
【設置鯖名】 さくら
【PHPのバージョン】 5.2.12(標準)
【実行】 さくらのcron
【手動】 動く
【不明点など】手動以外で呟かない。
さくらのcron設定は初心者は触らないほうがいいみたいですが、
1時間おきにランダムに呟くようにしたいのです。
実行日時の欄は1時間毎になるように設定できたのですが、
実行コマンドが分かりません。
いろいろなサイトを見て、
cd /home/アカウント名/www/ディレクトリ名 ; /usr/local/bin/php/bot.php > /dev/null
とか、
cd /home/さくらユーザー名/実行ファイルの置いてあるディレクトリ名/ ; /usr/local/bin/php/実行ファイル名 > /dev/null
と、入力すればイイとのことでしたが、アカウント名=ユーザー名は自分の名前の単語を入れればいとわかりますし、
後者の実行ファイル名というのは、前者にあるbot.phpなのもわかりますが、
…すみません、ディレクトリ名というのが、どこの何の言葉(単語)なのかが
さっぱり分からなくて、
別サイトのQ&Aで質問したら、サーバーに適当なディレクトリを作って
という回答が1行目から始まったのですが、その作り方も分からず、
でも、せっかく作り始めたので辞めたくないので、
どうか、簡単な説明で、助けて下さい。
>>469
ディレクトリ=フォルダですよ
>>469
アカウント名=ユーザー名は自分の名前の単語ではありませんよ
アカウント名があなたの名前(例えば山田太郎という人で、yamadatarouに設定)ならそうですが。
アカウントは例えばあなたのサイトがhttp://hogehoge.sakura.ne.jp というサイトなら
hogehogeという部分がアカウントです。
>>469
用語が分からないのは設置以前の問題です。
設置したい思いは分かりますが、『さくらのcron設定は初心者は触らないほうがいい』と
分かっているのなら、これらの用語が分かってからにして、それから挑んでも遅くはないです。
ディレクトリ アカウント 用語 意味などを入力して検索すれば、これらの用語を専門用語を
交えない説明してくれるサイトもあります。そんなに時間はかからないと思いますが
まずは説明されている用語を理解してからbotの設置した方が良い様に見えます
レンタルサーバーや他の共有ユーザーに迷惑をかけないためにも
469です。
>>470 さま
ありがとうございます。
フォルダを作って、そこにbot.phpを入れればいい、ということでしょうか。
そうして、コマンドの「ディレクトリ名」を、そのフォルダ名にすればいい、ということで…。
ちなみに、その際、そのフォルダにパーミッションの設定の変更は必要でしょうか?
replay…など、3つほど、パーミッションを666にするとの説明があったので、
もし、新規作成したフォルダにも、設定の必要があれば教えて頂きたいです。
>>471 さま
ありがとうございます。
こちらの日本語の不十分さで、お手数かけました。
アカウントは、説明していただいたモノが、自分で思っていた部分と
同じでしたので、安心しました。
>>472 さま
ご指摘、ありがとうございます。
いろいろなサイトで、簡単にbotが作れる、ということが書いてあったので、
手順どおりにいけば、素人でも大丈夫なのかと思っていました。
すみません。
cronの設定ができて機能し始めたら、
@で話しかけても反応しない、という問題も教えてもらおうと思っていましたが…
…せめて、もう少し時間をかけて、自分の知識を増やすことから
頑張ろうと思います。
皆様、貴重なお時間、スペースをお借りして、すみませんでした。
phaさまの解説を見ながら何度か挑戦してみたんですが
初心者すぎてわからず・・・・
結局今はボットジェネレーターさんを使ってbotを動かしているのですが、
ボットジェネレーターさんを利用されている方の中で沢山の方が
TLに反応するところだけをEasyBotterだけを利用してみたいと思っているのですがなかなか理解できません。
どのファイルをサーバーに上げればいいのか、それとも、reply_pattern.phpの中身だけ編集して上げればいいのか…
教えていただけると大変助かります。回答宜しく願い致します。
>>474
私設のwikiをどうぞ
http://wiki.livedoor.jp/easybotter_wiki/
そこに書かれている手動実行編の手順どおりにすれば出来ると思いますが
それでも分からなければ、使われている単語や表を理解してから
設置に挑んでも遅くはないと思います
474のものです><
>>475 さま
ありがとうございます><
でもどうしても
Fatal error: Class 'PEAR_Exception' not found in /usr/local/www/htdocs/(idです)/public_html/bot/PEAR/HTTP/Request2/Exception.php on line 59
と表示されてしまいます。どこを確認してもどこを直せばよいのか分かりません。
■初心者の方へ■
質問前に、まずは>>324 を読んでください。
質問済みの方も>>324 を読んでない方はまず読んでください。
基礎知識がないと「理解したつもり」で重大なミスをおかす場合もあります。
プログラミングは場合によっては同じサーバーの他利用者に迷惑をかけてしまうこともあります。
面倒臭がらずに、まずは勉強!
とっかかりがわかると、色んな事ができるようになりますよ!
こんばんわ。質問させてください。
環境は
【バージョン】 バージョン2.04beta
【設置鯖名】 さくら
【PHPのバージョン】 5.2.12(標準)
【実行】 さくらのcron
【手動】 動く
【不明点など】cronで、50分おきに呟くように設定、そこは上手く機能したのですが、
@で話し掛け、返事も返ってきたのですが、もう一度話しかけると無反応
(別の反応ワードで話し掛けてます)、かつ、それ以降は50分おきのpostも
されなくなってしまいました。その間に、別の方に@で話し掛けられていたのですが、
反応ワードが入っているにも関わらず、それもシカト。
bot.phpやreplay_patern/phpなどは、初期に入っているダミーの部分しか書き変えておらず、
Easybotter2.0のBBSの183さんと似ている気もするのですが、
$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");
ここは、必要と思われる部分の//を消す以外、触っていません。
時々、出てくる、twitter側の異常か何かでしょうか。
勉強不足で申し訳ありませんが、どなたかご教授願います。
ちなみに324も見てきたつもりです。
>>478
ただ単に、このまま50分毎で動かしてもと最新2分以内にしかリプライできません。
$response = $eb->reply(2,"data.txt","reply_pattern.php");
の数字の所は最新○分以内を取得する〜なので、
もし50分毎に1回bot.phpを叩くなら数字を50にしないと全て取得しません。
>>479
追記
このまま50分毎にbot.phpを叩くと、フォロワーさんが増えると50分間にリプライされる数が増え、50分に一気にリプライするのでTLを埋めてしまう可能性が大きくなるのでご注意ください。
>>480
50分に1度のリプでも、botのフォロワー同士がフォローしあってない限りTL埋めにはならないと思う
BOTのTL埋めという点では、フォロワーが増えたらどのみち埋まるのでは?
>>481 さん
>>フォロワーが増えたらどのみち埋まるのでは?
481さんのおっしゃる通りです。
ただこれに関しては違います。
>>botのフォロワー同士がフォローしあってない限りTL埋め
なぜなら、botの会話暴走は1回ずつリプし合ってそれが重なって
初めてTL埋めになります。
50分に1回ならbot同士も1回ずつなので、全くTL埋めになる可能性はほとんどありません。
>>482
ん?
結局@50分ならTL埋めにならないってことなのでは?
>>483
文章を読み違えていました。すみません、謝ります。
よく知られているキャラの場合では
フォロワーさんが内輪になることが多いです。
TL埋めになる場合があるので気をつけてくださいということです。
通常の場合はTL埋めにはなりませんね^^;
本当に紛らわしい文章でごめんなさい。
478です。
>>479 様>>480 様
回答、ありがとうございます。
今夜、早速修正してみます。
でも、この場合、2を50に変えると、
リプの間隔も50分に一度しかしない、ということですよね…?
>>481 様〜>>483 様
貴重なご意見、ありがとうございます。
初心者なので、こうした意見も、とても参考になります。
また、質問が出来た際は、皆様、よろしくお願いいたします。
>>485
その通りです。
もしリプの間隔を短くしたいなら、
cronの方を短時間間隔で使えるところにし、
なおかつbot.phpのランダムポストの記述を
if条件文を使って50分にポストするようにしなければなりません。
if条件については2.0スレ、初心者スレの所で多く既出、
「if php」で検索すれば必ずヒットするものですので、ログをよむなりしてください。
すみません、色々検索し見てみたのですがどうしても分からず、お力をお借りしにきました。
既出の質問だとは思うのですが、お答え頂ければ幸いです。
よろしくお願いします。
【バージョン】Easybotter 2.03beta
【設置鯖名】@page
【PHPのバージョン】5.2.6
【実行】GAE-Cron
【手動】 動く
【不明点など】
ランダムポストを30分おきにしたいと思い、bot.phpを下記のようにしました。
<?php
//=============================
//EasyBotterを呼び出します
//=============================
require_once("EasyBotter.php");
$eb = new EasyBotter();
$response = $eb->reply(2,"data.txt","reply_pattern.php");
if(date("i") % 30 === 0){
$response = $eb->postRandom("data.txt");
}
?>
cronの設定はリプライ用に2分置きのものと、30分周期(■最終起動:(-) 結果:(-) ※次回予定:2010/03/23 12:30(JST)と表示されています)に設定しました。
リプライは問題なく発言しますし、手動で11:30のランダムポストも出来ました。
それ以外の時間に手動で動かしてもランダムポストはされません。リプライ用の「2分以内に受け取った@はないようです。」しか
表示されていません。
cronの設定が悪いのか、phpを何か書き損じているのか、あちこち調べてコピペしなおしたりアップしなおしたりしても
わかりません。
初心者丸出しの質問で本当に申し訳ありませんが、ご教授いただけないでしょうか?
また、リプレイ時に設定されてない言葉だとdate.txtからランダムに選んで発言するのですが、
決まった言葉(「聞き取れません、もう一度〜」等)を発言するように設定するにはどうしたらいいのでしょうか。
よろしくお願いします。
>>487
ええと、あなたが設定したとおりの動作をしていますね。お話からすると。
設定ミス等ではなく、まさに設定通りです。
bot.php では動作の条件付けをしますが、
どういう条件付けをしたのか、これを機に php の勉強をしてみましょう。
また、リプライで返答パターンにない場合に決まった返信をする、
既出のはずですよ、確か。検索してみて下さい。
>>488
うらさま、レス有難うございます。
質問文の方を書き損じておりました、申し訳ございません。
設定があっているとのこと、安心致しました。
ですが、実際にtwitter上でbotが決まった時間(30分置き)に自動でランダムポストで発言してくれないのです。
なので、cronの設定に不備があるのかそれともphpの方に不備があったのかと思ったのですが…cronの方なのでしょうか。
phpの方も昨日から付け焼刃で色々と調べて勉強している状態です。
まだまだ本当に初心者で申し訳ありません。
リプライの返答パターンについてはもう一度スレを探してみます。
有難うございました。
485です。
>>486 様
ご意見、ありがとうございます。
さくら鯖は、あまり短時間の設定に向いていないようなので、
ifの条件をきちんと理解できるようになるまでは、
cron設定30分、@のリプの間隔も30分になるようにして、
しばらくやっていきたいと思います!
>>490
なにも分かってませんね。ちゃんとさくらのコントロールパネルから
cron設定の所に書かれている注意書き読んでいたのですか?
・メモリやCPUに著しく負荷をかける処理は他のお客様にご迷惑がかかりますのでおやめください。
サーバ運用に支障をきたす場合はやむを得ない場合には、予告無く設定解除、機能制限することがあります。
・実行頻度が1時間以内に連続する場合や、CPU処理時間が60秒以上連続で利用される場合、予告なく設定解除される場合があります。
知らなかったで済まそうと思って許されることではありません
はっきりいって迷惑です
>>491 様
すみませんでした。設定、直しました。
今後は外部cronも使うように検討していきます。
ご指摘、ありがとうございました。
また、他の皆様のもご迷惑をおかけし、申し訳ありませんでした。
>>491
ん?
さくらのcronはコンパネから5つ設定できるが、それぞれが最短1時間単位という意味だよ
(鯖に問い合わせ下のでこれは間違いない)
だから、5つのcronを組み合わせれば最短12分単位で実行できる
SSHからCUIで設定すれば、理論上もっと設定できるんだけどね
>>493
1つのcronで1時間毎だから5つのcronを駆使すれば
最短12分単位にできるというのは知ってます
裏技や抜け道があっても設定もできない初心者にいらんこと教えて混乱させないで下さい
EasyBotter2.04betaで、
if(date("i") % 30 === 0){
$response = $eb->postRotation("data.txt");
}
を設定し、30分毎にポストしたいのですが、
使っている Free Web Cron Serviceだとかなり時間にズレがあり、
30分、00分かっきりには叩いてくれません。
現在はポスト用(30分に1回)、リプライ用(4分に1回)、
と個別にphpファイルを作り個別に叩いている状態です。
Cronはそのままで何か良い設定の仕方はありませんでしょうか…
関連する記事も見たのですが、このような質問は見つけられず…
宜しければお知恵をお貸しください…!
>>495
30分ごとにcron回しててphpファイルを個別にしてるならそのまま
$response = $eb->postRotation("data.txt");
だけでいいのでは?
>>494
だからといって誤情報を書くのはいかがなものか
@PAGES というレンタルサーバーにファイルをアップロードしたところまではいいのですが、パーミッションを666に設定がよくわかりませんん。
やりかたをどなたか教えていただけませんでしょうか。
てか、なにこのエロいツイッター
http://twurl.cc/2c5p
プログラムやphpについて一から勉強し始めた素人ですが、どなたかご教授願います。
【バージョン】EasyBotter2.04beta
【設置鯖名】@pages
【PHPのバージョン】5.2.11
【実行】手動
【手動】動かない
【不明点など】
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");
?>
手動でランダムにポストさせるところまではできたのですが、リプライさせようとするとうまくいきません。
最初の状態からsetting.phpとbot.php以外は何もいじっていません。
試しにおはよう!とリプライしてから叩くと
Twitterへの投稿に成功しました。@***_botに投稿したメッセージ:@本垢名 おはようございます、御主人様 http://twitter.com/***_bot/status/10973510840
Warning: file_put_contents(log.dat) [function.file-put-contents]: failed to open stream: Permission denied in /usr/local/www/htdocs/ユーザー名/public_html/ディレクトリ名/EasyBotter.php on line 69
と出て、もう一度叩くと
Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : Start tag expected, '<' not found in /usr/local/www/htdocs/ユーザー名/public_html/ディレクトリ名/EasyBotter.php on line 516
Warning: simplexml_load_string() [function.simplexml-load-string]: in /usr/local/www/htdocs/ユーザー名/public_html/ディレクトリ名/EasyBotter.php on line 516
Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in /usr/local/www/htdocs/ユーザー名/public_html/ディレクトリ名/EasyBotter.php on line 516
Twitterへの投稿に成功しました。@に投稿したメッセージ: http://twitter.com//status/
と出ます。
あるいは「2分以内に受け取った@はないようです。」のメッセージが消えて真っ白になる場合もあります。
EasyBotter.phpに問題があるように思いましたが何もいじってないので原因がわからず…。
どなたか御指南頂けると嬉しいです。よろしくお願い致します。
K2EditorとFFFTPを使っています。
496さん回答ありがとうございます。言葉が足りずすいません、
今個別に叩いているのを1枚に纏めたい、と考えています。
ですが、
if(date("i") % 30 === 0){
$response = $eb->postRotation("data.txt");
}
この指定だと、30で割ってあまりが出ない分、つまり30分
ぴったりか、00分ぴったりでなければならない、と言う事ですよね?
つまり誤差が出て10分に叩いたり40分に叩いたりしても
ポストは行われない、という事になると思うのですが…
これがどうにも解せなくて…
>>500
それはパーミッション(許可情報ともいう)を変更してないからですね。
log.datとリプライ反応が入ったファイル、TL反応が入ったファイル全てを読み込み、書き込み権限を全員に持たせて下さい。
>>501
bot.phpを分けて使うしかないね
もしくは、59〜1分・29〜31分でアクセスしたとき実行するようにするとか
>>502
直りました!どうもありがとうございます…!
初めまして。
こちらのスレを読ませて頂いたり自分でも色々試したり、実際にbotを動かしている方に質問しても解決しなかったので、
藁にもすがる思いで書き込みしました。
【バージョン】Easybotter 1.42(安定版)
【設置鯖名】ロリポップ
【PHPのバージョン】5
【実行】GAE-Cron
【手動】動かない
【不明点など】
reply_random.phpが動かないみたいです。
手動で動かそうとすると、
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ')' in /home/sites/lolipop.jp/users/*****/web/*****/reply_pattern.php on line 10
と出てしまいます。
php自体はツイッターのIDやパスワードの部分を変えただけです。全角スペースなども入れていません。
何度かやってもだめだったので、あらためてダウンロードからしなおしてみても同じでした。
TeraPadを使っていますが文字コードもUTF-8Nになっています。
ちなみにpost_random.phpの方は正常に動いています。
リプライが動作しません。
どう考えたらいいのか分からないのででお聞きしたいです。
EasyBotter2.0をほぼそのまま使用、cronはWebcron.orgの無料お試ししています。
現在webcron.orgのbot.php実行を一時間間隔にしています。
これで一時間間隔でランダムポストされます。
ただこの状態では@を飛ばしてもリプライされません。
何十回も試して数回リプライされた程度です。
bot.phpが実行される前後じゃないと駄目なようなので試しに
cronの設定を5分間隔(無料で一番短い間隔)に変更してみると
定期投稿と一緒にリプライが帰ってきました。
ただ、これだと定期リプライも5分間隔でされてしまいます。
定期リプライと@を拾うcronの設定の違いはどこで示されているのでしょうか?
$response = $eb->reply(2,"data.txt","reply_pattern.php");
また、上のbot.phpの記述の2は2分間隔でcronを実行する記述のようですが
Webcron.orgのcron設定と合わせなければいけないのでしょうか?
初歩的以前の問題だと思うのですが、どうかお願いします。
>Webcron.orgのcron設定と合わせなければいけないのでしょうか?
そうです
>定期リプライと@を拾うcronの設定の違いはどこで示されているのでしょうか?
ifやswitchで条件式つけてわけてください
もしくはbot.phpを個別に作ってひとつずつcronでアクセスさせる
■初心者さんへ
まず>>324 を読んで、wikiや過去ログを調べてみてね!
質問があります。
2.0で手動で発言したい場合は1.4のようなフォームを使う方法なのでしょうか?
Twitterにログインして発言すれば?
>>509
自分が普通に発言するようにbotのアカウントでログインすればいつでも手動で発言できます
自分でログインして発言するとvia webになりますよね?
1.4のように via APIみたいなbotっぽいものになればいいのですが…
503さん回答ありがとうございます。
う〜んやっぱり2つのファイルを別々に叩くのが一番手っ取り早いですよね…
59分〜01分に…と言う事ですが、予測不可能なくらい毎日ずれてるので
それでは恐らく対処出来ないと思います…
cronの乗り換えも視野に入れて考えてみます。ありがとうございました!
>>510 ,511
こちらの初心者スレで、EasyBotter2.0スレでの回答を紹介するのはまずいでしょうかねえ?
>>513
ま、Freeのサービスですしね。
自宅PCで叩く方法もありますよ。
>>510 ,511さんとうらさんのおかげで解決することが出来ました
ありがとうございました
【バージョン】Easybotter 2.03beta
TL上の誰かにランダムで@を飛ばしたい場合
data.txt内に @{follower_id} ○○○○○○○○
と書き込めばできるのですが、最後のツイートが一時間前の人などに飛んでしまう場合があります。
そこで、「最後のツイートが○○分前の人に飛ばす」「タイムライン上の上から○番目までの人に飛ばす」
等にすることは可能ですか?
すいません。バージョンは2.04betaです。
■初心者さんへ
まず>>324 を読んで、wikiや過去ログを調べてみてね!
>>517-518
すみませんがそれは改造ネタなので、初心者スレには向いてないので、
2.0スレかこんな機能があったらいいなスレにお願いします。
始めまして。いつもお世話になっております。
皆様のお力を借りたく、書き込ませていただきます。
過去ログやwikiを拝見しましたが、既出の質問でしたらご容赦ください。
【バージョン】EasyBotter2.04beta
【設置鯖名】@pages
【PHPのバージョン】5.2.6
【実行】GAE-Cron
【手動】動く
【不明点など】
通常ポストやリプライなどは問題なく動くのですが、
リプライを時間別に設定しようと、wikiの時間分けの項目を参考に条件付けをしていましたが、
いくら@で飛ばしても、元のデータ「reply_pattern.php」で返ってきてしまいます。
記述がいけないのかと思い、wikiのサンプルをコピペしても元のデータのままでした。
通常ポストとリプライのcronは別々に叩いています。
reply_pattern.phpを削除してみてもエラーが起きて、
reply_pattern.phpが見つかりませんというようなエラーが出てしまいます。
以下記述
//6時から8時
if(date("G") > 5 && date("G") < 9){
$response = $eb->reply(2,"reply_morning.php");
//9時から14時
} else if(date("G") > 8 && date("G") < 15){
$response = $eb->reply(2,"reply_noon1.php");
//15時から19時
} else if(date("G") > 14 && date("G") < 20){
$response = $eb->reply(2,"reply_noon2.php");
//20時から0時
} else if(date("G") > 21 || date("G") < 1){
$response = $eb->reply(2,"reply_evening.php");
//就寝時間
} else {
$response = $eb->reply(2,"reply_night.php");
}
アドバイスをお願いします。
失礼しました。
//20時から0時
} else if(date("G") > 19 || date("G") < 1){
$response = $eb->reply(2,"reply_evening.php");
です。
>>521
数日前に
$response = $eb->reply(2,"","reply_noon1.php");
か
$response = $eb->reply(2,"reply_noon1.php","");
こういう風にしたら?ってレスがあった気がするんだが…
>>523
そういうことですね。
使わないからといって引数を省略したせいで、
デフォルト値が有効になっていたんですね。
>>523 さん、>>524 うらさん
ありがとうございます。時間別で返せるようになりました。
解りやすい解説、とても感謝しております。
初めまして。
ご助言をいただきたく書き込みをさせていただきます。
EasyBotter2.04betaを使用し書かれてある通りに着々と作って行っておりますが
「試しにbotを動かしてみる」
という動作から先に進めません。
ブラウザで開いて見ているのですが
Parse error: syntax error, unexpected $end in /usr/local/www/htdocs/*****/public_html/*****/data.php on line 15
(個人的なものなので*****でid等を消してます)
と表示されてしまいます。
試しにファイルを消去して作り直し再度うpしてみましたが直りません。
この場合どのデータが間違っている可能性があるんでしょうか;;
因みに鯖は@pagesを使用させていただいてます。
一応ログなどすべて拝見いたしましたが分からなかったので投稿させてもらいます。
既出事項でしたら申し訳ありません。
相手の発言の引用やオウム返しをさせるにはどうすればいいでしょうか?
>>526
;;と付けるのはあなたのクセ?
syntax errorと出ているから簡単なミスだよ
data.txtをdata.phpにしたのだと思うけど
最後の);がぬけてるんじゃないかな
それか) ; という具合に)と;の間に半角空欄があるとか全角になってるとか
簡単なミスだから"",の数と);を落ち着いてよく調べて
このスレの445さんではありません。別人です。申し訳ありませんでした
しつこいけど、質問の際は>>324 をよく読んでテンプレ使って下さいな
テンプレで情報が整理されていた方が、回答者に状況が伝わります
初めまして。今回、bot作成に挑戦しようとこちらのサイト様を参考にさせていただいているのですが、「ファイルを編集するエディタの設定」で行き詰ってしまっています。「@pages」で設定する場合、「文字コードと改行コードを設定できるエディタを使って、文字コードはUTF-8、改行コードはLFに設定してください」の設定はどのように設定したらよいのでしょうか?ご教授お願いします。
>>531
一つ上の530さんのレス読みましたか?
>>324 のリンク先のwikiにちゃんと書かれてますよ。
これつかってみ!マジでいいから
http://pcmax.jp/rm94361
はじめまして。
バージョン20でbotを作ろうとしています。
一通り単語を入れて、サーバーにアップしたんですが
「tw.txtとreply_pattern.phpとlog.datのパーミッションを666に設定してください。」で
tw.txtというファイルが見当たりません。
Ver.1.4にはあるようですがこれは両方作らなくちゃいけないという
事なんでしょうか?
よろしかったら教えてください。
>>534
tw.txtはdata.txtのことです。1.4ではtw.txtでしたが、2.0ではdata.txtと名称が変わりました。
ですので、ランダムリプライ、リプライ返事用ファイル及びTL返事用ファイルがデフォルトでのdata.txtにあたります。
>>535
お早い回答ありがとうございます!
はじめまして。
easybotter利用させて頂いています、有難うございます。
過去ログ等は一応確認したつもりですが、自分では解決出来そうにありませんでしたので、皆様のお力をお借し頂ければと思います。
【バージョン】Easybotter 2.04beta
【設置鯖名】@pages
【PHPのバージョン】PHP-5.2.6
【実行】GAE-Cron 2分間隔
【手動】動く
【不明点など】指定日時のポストを1回だけ正確に行いたい
bot.phpの以下の箇所
************************************
//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");
}
************************************
これを応用して、「特定の日時に1回だけポストをする」という動きを作りたいと思いました。
PHPの知識はありませんが、自分なりに調べて書いたコードが以下です。
************************************
if(date("n") == 3 && date("j") == 29){
if(date("i") < 3 && date("G") == 10){
$response = $eb->postRandom("test.txt");
}
}
************************************
bot.phpは2分に1回GAE-Cronで実行していますので、一応3月29日の10時過ぎにtest.txtに書かれた文言をつぶやいてくれるように出来てるかな、と思います。
ですが、心配事が2つあります。
1)
GAE-Cronのせいなのか@pagesのせいなのか判断できないのですが、2分ごとにきちんと実行出来ていない事が多々あります。
replyでは10分前までのTLから拾うようにする等して対処出来ていますが、上記場合には、 date("i") < 3 だと1度ポストに失敗すると終わりになってしまいます。
逆に設定する時間間隔を date("i") < 10 のように余裕を持たせると、何度もポストしてしまう恐れがあります。
この問題を解決する方法はありませんでしょうか?
2)
上記の方法で私が実現したいのは、「今日はバレンタインデーです」といったように、その日の行事や誕生日等のお知らせをつぶやく事なのですが、1日イベントを追加する度に1つテキストファイル(中には1フレーズのみ)を増やしてみたところ、とてもbotフォルダ内が見にくくなってしまっています。
あまりに管理しにくい為、何か方法がありましたらお教え頂けませんでしょうか。
私が考えたのが、
①bot.php内に直接つぶやく内容を書けないか
②イベントで使うテキストファイルをディレクトリに纏められないか
の2つですが、どちらも自分では実現出来ませんでした。
以上です。ヒントだけでも結構ですので、お力をお貸し頂ければと思います。
宜しくお願いします。
>>537
②のディレクトリにまとめるなら普通に可能です。
たとえばbot.phpと同じ所に置くディレクトリの名称をeventとします。
そしてeventのディレクトリの中にValentine.phpをつくるとします。
すると、bot.phpとかの記述は、"event/Valentine.php"というふうに
ファイル名を指定することになります。
過去に同じ質問があったようなのですが
解決方法が不明のままだったのでお知恵をお借りしたいと思います。
【バージョン】Easybotter 1.42
【設置鯖名】@pages
【PHPのバージョン】PHP-5
【実行】GAE-Cron
【手動】動く
【不明点など】reply_pattern.phpを読み込まず特定の
単語を@で送ってもtw.txtの文がランダムで返ってくる。
手動で動かすと
Warning: Invalid argument supplied for foreach() in /usr/local/www/htdocs/(アカウント名)/public_html/(ファイル名)/reply_random.php on line 172
というエラーが出てランダムに@でtw.txtの文が投稿されます。
reply_random.phpはいじっていないので原因が分からないです。
reply_random.phpの中身は以下のように設定されてます。
$useReplyPattern = TRUE;
$replyPatternFile = "reply_pattern.php";
$resOnlyBegginingReply = FALSE;
$resOnlyNotRT = TRUE;
$replyLoopLimit = 3;
行き詰って困ってます。
どなたか助言をくださると助かります。
>>537
1)について、
現状、Twitter への投稿がエラーの場合は、エラーと表示するだけですからね。
難しいですね。
postRotation を改造して、エラー時はローテートしないようにすることでしょうか。
2)について、
特定イベントの告知に使えるような機能が、現状 EasyBotter にないので難しいです。
で、Twit Delay などの代理 Twit サービスを利用するのはやはりダメなんでしょうね。
うらは EasyBotter.php を require しつつ別命令を仕立てた告知用 php で動かしています。
要は、データファイルに特定日時と発言内容を書いておいて、その日時になったらポストすればいい、と。
どちらにせよ、改造ネタですので初心者スレ向きの話題ではないですね。
<チラシのウラ>
そういえば、さくらサーバーに移ってから投稿エラーが皆無なので、エラー処理は考えてないな。
</チラシのウラ>
>>539
reply_pattern.php に対応パターンがない場合、tw.txt からランダム発言するのは仕様です。
つまり、
> reply_pattern.php に対応パターンがない
あるいは
> reply_pattern.php でパターンが定義されていない
のどちらかです。
後者での原因はいくつか考えられます。 >>324 や wiki の方もご覧になりましたか?
お早い回答ありがとうございます。
reply_random.phpの対応パターンは
$data = array(
"おはよ"=> array(
"おはようございます、御主人様",
"Good morning, master.",
),
"こん(に)?ち[はわ]"=> array(
"こんにちはこんにちは!",
),
と、なっています。
いくら「こんにちは」や「おはよう」と@を送っても
tw.txtからランダム発言が返ってきます。
>>324 やwikiも何度も読み返してみたり調べたのですが
解決策が見つからず途方にくれてます。
また助言をくださると助かります。
>>542
FTPのモードは何でアップしてる?
アスキーとバイナリを逆にしてみたらうまくいくかもよ
>>542
$reply_pattern = array(
"おはよ"=> array(
"おはようございます、御主人様",
"Good morning, master.",
),
"こん(に)?ち[はわ]"=> array(
"こんにちはこんにちは!",
),
);
じゃなくて?
$dataはver2.0なのだが
お早い回答ありがとうございます。
$dataを$reply_patternに変更したところ
上手く@が単語に反応してくれました。
初歩的なミスで大変お恥かしいですが、
ありがとうございました!
助言くださった方々本当にありがとうございます。
書き込み失礼します。
【バージョン】2.04beta
【設置鯖名】@pages
【PHPのバージョン】5.2.6
【実行】GAE-Cron
【手動】動く?
【不明点など】リプライが返ってこない。
BOT同士の会話というか、やり取りをさせたいと思っています。
でもBOT1→BOT2のリプライがどうしても返ってきません。
自アカ→BOT2、BOT2→BOT1ですと問題なく返ってきます。(おはようで試してみました)
cronは2分おきに叩いていますが、BOT1→BOT2の際は手動でも叩いてみましたが、発言した直後でも2分以内に受け取った@はないようです。と出てしまいます。
wikiの「botと名の付くアカウントを制限する」という機能は、自分が設定しない限り適応されませんよね?
これはTwitterの不具合という事なんでしょうか?それともBOT1、もしくはBOT2の設定ミスなのでしょうか?
■いま日本の最高権力者は薩長連合(鹿児島県、山口県)の田舎侍たちです■
■日本はいまだに武家社会です
・坂本龍馬は日本をいまも破壊しているテロリスト薩長連合の工作員だっただけの者です。
・織田信長の時代から戊辰戦争まで、鉄砲隊のガンパウダーはガンパウダー1樽につき、
日本人の若い娘50人を海外に売ることで調達していました。
・日本人が貯蓄した金が海外にいき、信用創造で1000倍になりそれで日本の土地が買われる。
日本は破産し、IMF管理下でも 薩長連合は安泰で国民はIMFに感謝するように洗脳される。
■日本の政治家には朝鮮人の疑いのある人たちがいます。安★部、小★泉、菅★、小★沢。
■2ちゃんねるはトウ一きょう会が運営してIP集めや、自作自演して洗脳工作する場です。
■薩長連合のために警察がインターネット規制をする。今年の春から東京では匿名でネットカフェから情報を発信できなくなる。
■<「経世会(旧田中派)」VS「清和会」>
(田中派,経世会)逮捕←東京地検特捜部
(清和会)安泰
詳細
http://megalodon.jp/2010-0319-0241-00/jbbs.livedoor.jp/bbs/read.cgi/school/15753/1267194346/533-534
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
>>546
BOT2体の実行時間はずらしてる?
同時刻に叩いてると、サーバー内処理の順序の関係でリプライを読み漏れたりするよ
記述に関しての質問です。
リプライやTLで2つ以上の語句が一致した場合にのみ返信する
ということは可能でしょうか。
また、可能でしたら、その記述方法を教えてください。
>>549
正規表現でどうぞ
>>538
>>540
早速のご回答有難うございました!
>>538
出来るのですね!有難うございます!
早速フォルダ分けを試してみましたが、エラーが出てしまっています。
Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : Start tag expected, '<' not found in ******/EasyBotter.php on line 521
Warning: simplexml_load_string() [function.simplexml-load-string]: in ******/EasyBotter.php on line 521
Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in ******/EasyBotter.php on line 521
bot.phpにはこの様に記載しました。
if(date("n") == 3 && date("j") == 30){
if(date("i") < 30 && date("G") < 5){
$response = $eb->postRandom("test/test.txt");
}
}
※時間の指定はテスト用に適当に変えています。
書き方に問題があるのでしょうか?
お手数ですが原因がお分かりでしたらお知恵をお貸し下さい。
>>うらさま
ご丁寧に回答してくださって有難うございます!
1)について
なるほど、そうですね。チラシのウラ情報が役に立ちそうです・・・!
エラーが出なければいいんですもんね・・
2)について
Twit Delayというサービスは知りませんでした、なるほど、便利そうですね!
送信元?が「Twit Delayより」というようになってしまうようでそれだけが気になるところですが、当面このサービスを使わせて頂きつつ要望スレに要望として書かせて頂こうかなと思います。
そして改造はやはり敷居が高そうではありますが、もう少し調べたり勉強してみたり、してみようと思います!
有難うございます^^
>>550
正規表現で可能ということですね。
分かりました。ありがとうございます。
>>548
二分と三分に変えてみましたが、手動で叩いても変わらずじまいでした。
はじめまして、こんばんは。
バージョン 2.04betaをダウンロードをし、必要な部分などを入力して自分のサーバーへアップロードをしました。
そしてbot.phpにアクセスをして確認をしてみたところ、
”Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in 〜〜〜〜 EasyBotter.php on line 8”
のエラーが出ました。
〜〜〜〜の部分は自分のアップロードをした場所のパスです。
EasyBotter.phpは何もいじっていないのですが、どうしてエラーが出るのかわからず困っております。
どうかお教えいただけると幸いです。
反応語句が入ってないリプライに特定の言葉を返すようにしたいのですが、具体的にどうすればいいですか。ご教授お願い致しますorz
初心者さんはまず>>324 を読んでね!
>>555
ランダムリプライの中身をそれだけにする
自力で調べてもわからず、質問いたします。
【バージョン】2.04beta
【設置鯖名】 @PAGES
【PHPのバージョン】
【実行】 FreeWebCronService
【手動】 動く
【不明点など】 手動では動くのですが、cronが作動しません。
FreeWebCronServiceのログを見る限り、アクセスできているようなのですが…。
(HTTP Response 200 duration 2s size 0 bと出ています)
ちなみにbotの中身はautoFollow()とpostRandom("data.txt")のみです。
よろしくお願いします。
>>558
>>324 のwikiにある通りの手順でもいっかいやってみなよ
>>559
ありがとうございます。
wikiはずっと参照しているのですが…。
もう一度冒頭から手順を確認しましたが、問題点が摘出できませんでした。
特に難しいことをしているわけではないので、サーバとcronの相性ぐらいしか原因が思いつきません。
>>551
パーミッション(許可情報)を変更してないからですね。
>>500-502 で既出ですので確認ください。
>>557
ありがとうございます。あともうひとつすみませんが、挨拶などの特定の言葉には挨拶を返しつつ、それを施行することは出来ませんでしょうか。
>>562
日本語でおk
1つのリプに対して二つの返事ってこと?
二つの返事内容をまとめて1回のリプで返したいの?
まったく別のリプに対して別々の返事を返したいの?
>>562
うーん。意味が分かりませんww
エスパーでレス!ぇぃ
> $response = $eb->reply(2,"data.txt","reply_pattern.php");
という時に、 reply_pattern.php に反応語があれば返答を発言し、
かつ、 data.txt の中身が1行だけなら、反応語がない時その言葉だけを返します。
これは仕様の通りですね。
挨拶に返答したいなら、反応語に挨拶を登録すればよいのです。
こんにちは。初心者丸出しの質問で恐縮なのですがお願いします。
botのパスワードを変更したあとにphpファイルのパスワードも
変更して更新したのですが、「パスワードやユーザー名を
もう一度チェックしてみてください」の表示が出て投稿失敗してしまいます。
ツイッターのIDも変更すると反映されるまで時間がかかるとのことですが
しばらく経てば反映されるのでしょうか?お教えいただけたら有難いです。
ちなみにパスワードを変更する前までは普通に動作していました。
自己解決しました!
板汚し申し訳ありませんでした。
言葉が足りませんでした。すみません。
もう少し詳しく書きますね。
使っているのはEasyBotter 2.04
挨拶などの反応語句には予め用意した文章をランダムに返信し、それ以外のリプライが来た場合は普段投稿している文以外の文を返信したいのです。
今の様子は、挨拶などにはちゃんと挨拶を返すようなのですが、関係のないリプライが来た場合「data.txt」の中からランダムに選ばれてしまうようです。
試しに別のテキストファイルを作ってそのファイルの中から反応語句のない場合に返す文を返信するように設定してみたのですが、文字化けしてしまって…orz
>>563
全く別のリプライに別々の返事を返したい方です。
>>564
その場合普段のツイートも出来なくなってしまいませんか
とても初歩的な質問なのですがツイートを1時間おきにしたい場合どうすればいいのですか。
>>567
根本的にEasyBotter公式説明の読み込みが足りてないよ
さらに言えば非公式wikiの通りにやれば貴方が困っている事全て解決します
> 全く別のリプライに別々の返事を返したい方です。
元々そういうリプライをするスクリプトですよ
> その場合普段のツイートも出来なくなってしまいませんか
出来なくなりません
>>568
>>324 を読んでみればわかるよ!
こんにちは。一つ質問をさせてください。
相手からリプライを貰ったら、それをそのままリツイートするBOTが作りたいのですが、これって可能でしょうか?
>>570
可能ですよ。プログラミング、ガンバってくださいねっ!
>>570
非公式RTをポストすることはできます
ただ、デフォルトのままですと相手へのリプライで返してしまいますので
冒頭の「@id 」を除去する必要がありますね
ただこれは既出の改造ですから、初歩的なスクリプトと英単語が理解できれば難しくはありません
EasyBotter2.04でBOTのアイコンを変えるプログラムについて質問です。
こちら
http://twbot.blogspot.com/2010/03/easybotter2pearhttpoauth.html
にある通りにEasyBotter2.04に書き加えて画像をアップロードすることはできたのですが、
例えばこちらが「変身して」とリプライすると、BOTのアイコンが変わると同時にBOTが返事をする
「変身して」以外のリプライを受けた場合はもとのアイコンのまま(アイコンが戻る)
というプログラムを具体的にどうに書けばいいのか分かりません。
bot.phpで「変身して」などの語句を設定するのでしょうか?
答えていただけると幸いです。
>>573
改造ネタは初心者スレの範疇ではありませんよ
■初心者の方へ■
いきなり色んな事をしようと思うと躓いてしまします。
アレ?と思ったらまずは基本に立ち返って確認してみよう!
まずはEasyBotter公式の説明を読んだ上で下記二つのURLを参照
簡易FAQ:http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1259657570/168
非公式wiki:http://wiki.livedoor.jp/easybotter_wiki/
上記を熟読してもわからなければ、思いつく単語をこの掲示板の全てのスレッドで検索してください。
初歩的なミスについてはほぼ解決方法が出そろっています。
検索例)
リプライ関連:リプ、@、reply、返信などで検索
タイムライン関連:TL、タイムラインなどで検索
CRON関連:CRON、bot.phpなどで検索
機能の組み合わせ:if、switch、条件、bot.phpなどで検索
二重投稿:二重投稿、if、bot.phpなどで検索
リプライと同時に他のポストをする:bot.php、if、同時などで検索
via〜変更:API、via、OAuthなどで検索+http://twitter.com/oauth_clients
スクリプト初体験の方は、PHPリファレンスで最低限の勉強をしましょう。
下記5項目がわかれば基本機能を使いこなすことができるようになります。
(これらはPHPに限らず多くのプログラミングにほぼ共通するものです)
bot.phpで必要な知識
├演算子
├比較演算子
├条件分岐(if、switch)
└date関数
reply_pattern.phpで必要な知識
└正規表現(メタ文字)
上記を調べたり勉強してもわからなければ下記テンプレを使って質問をしてください。
【バージョン】
【設置鯖名】 レン鯖名/自宅鯖
【PHPのバージョン】
【実行】 CRON鯖名/ブラウザ自動更新/手動/他
【手動】 動く/動かない
【不明点など】 (エラーメッセージがあればコピペ推奨)
色々自分で試してみたのですがどうしても解決に結びつかないため、
すみませんがお力を貸してください。宜しくお願いします。
【バージョン】EasyBotter2.04beta
【設置鯖名】 @pages
【PHPのバージョン】
【実行】 GAE cron 2分間隔
【手動】 動く
【不明点など】
昨日から突然@で話しかけられると二度重複してリプライするようになりました。
ファイルを弄った覚えもなく、また一旦ファイルを全て削除しアップロードしなおしたのですが、
それでも変わらず重複リプライを続けています。
手動でbot.phpにアクセスしても重複しません(リロードし二度アクセスしても二分以内に発言がありませんというメッセージが出ます)。
二重投稿やリプライの検索ワードで過去ログも見てみたのですが、探し方が悪いのか対処法を見つけられませんでした。
お手数をお掛けしますが対策、ヒントをお願いいたします。
>>571 >>572
遅くなりましたが返答ありがとうございます!
頑張ってみます。
>>576
答えは出ていると思います。
つまり、通常では OK で、 cron では NG 。
よって GAE cron に原因があって、二重投稿してしまうということですね。
ということは GAE cron の設定を見直すなり、一旦解除した上で再登録したり
といったことをすると良いのではないでしょうか。
>うらさま
返答有難うございました。
cronも一旦無効にし、再度有効にしてみたり、時間の設定を変えてみたりと色々してみたのですが、もう一度試してみようと思います。
初歩的な質問にお時間を割いていただいて本当に有難うございました。
もらったリプライにはちゃんと反応するのですが、2分以内だとbot.phpを叩くと何度も返信してしまうのは普通ですか?
>>580
2分以内の@に対して@を返す、という設定にしてるのならそうですよ
bot.phpを打つ度に2分以内の@をチェックするのですから
>>581
そうなんですか。分かりましたありがとうございます*^^*
いつも見させて頂いています。質問させて頂きます。
【バージョン】EasyBotter2.04beta
【設置鯖名】@pages
【PHPのバージョン】5.2.6
【実行】 GAE-cron(2分間隔/動作している)
【手動】 動作している
【不明点など】リプライだけ返さない問題について
cronスレの83さんの仰る通り、リプライだけスルーするようになりました。
・手動で起動しても、「2分以内の@は無い」と返されます。
・TLへの反応、定期ポストは正常です。
・パーミッションもphaさんの解説通りに設定、また変えても同じでした。
・文字コード確認済みです。
・cronの間隔を変えても変わりません。
83さんの投稿が一ヶ月前でしたので、今もその現象が続いているのか?
それとも、自分の設定がおかしいのか?
判断がつかず投稿させて頂きました。
そもそも@pagesとGAE-cronさんは相性が悪いとも読みましたが、
手動でも動かない(@をスルーする)とあれば原因が違うところにあるのだと思い、
うかつにサーバーを変えても同じかもしれない、と悩んでいます。
(そもそもロリポップ・さくらで不安定だったので@pagesに変えているので…)
reply_pattern.php、リプライ用のファイル.txtも正常です。
(パーミッションは666です。644他でも同じでした)
改善を図るにはまずどこから修正すればいいのか、ヒントをお願いします!
(未だtwitter側の不具合が続いているのでしたらごめんなさい)
今日はエイプリルフールで、Twitterを使ったネタも多くあります
この為Twitter全体が重くなっています
これによりTL取得ができない場合もままあるようなので
明日まで待って、それでも回復しないようならもう一度書きこんでみて下さい
もらったリプライに返信を2回ずつ返してしまうのですが…。
>>575 を読んでからな
はじめまして、よろしくお願いします。
【バージョン】EasyBotter2.04beta
【設置鯖名】@pages
【PHPのバージョン】5.2.6
【実行】 GAE-cron(5分間隔)
【手動】 動作したりしなかったり
【不明点など】
@を飛ばすと返信も定時ポストもしなくなる。
サーバーに.phpなどをアップロードした直後は手動でも定時も動作する。
→しばらくすると止まる。
リプライもたまに動作するが、特定の単語が含まれているのにreply_pattern.phpではなく
data.txtから返信を返す。
直接bot.phpを叩いても「投稿に成功しました」とでるのに、TLには反映されません。
cronをはじめ2分間隔にしていたせいかと思い、5分にしたのですが変わりません。
どうぞよろしくお願いいたします…。
すみません、動作が不安定なのは発言の種類が少ないからだったようです。
増やしたのでこれで様子を見ます。
調べ不足で申し訳ありませんでした。
せめてスレ内検索とか出来たら同じような質問見ることもないのに。
普通にググったらここに戻って来るんだ。テンプレに引っかかって。
>>324 に比べて>>575 はわかりやすく、柔らかい言葉になったのに
いま日本の最高権力者は薩◆長◆連◆合(鹿児島県、山口県)の田舎侍たちと閨 閥(けいばつ)です。
■日本はいまだに武家社会です ■
・坂本龍馬は日本をいまも破壊しているテロリスト薩◆長◆連◆合の工作員だっただけの者です。
・織田信長の時代から戊辰戦争まで、鉄砲隊のガンパウダーはガンパウダー1樽につき、 日本人の
若い娘50人を海外に売ることで調達していました。
・総理大臣、大蔵大臣、外務大臣や公安、警察、自衛隊の歴代トップは鹿児島県、山口県、 高知県、
佐賀県、 長崎県出身者ばかりです。国策捜査は薩長連合やアメリカのための捜査です。
日本の政治家には朝鮮人の疑いのある人たちがいます。安★部、小★泉、菅★、小★沢。
2ちゃんねるは統一京会が運営してIP集めや、自作自演して洗脳工作する場です。
<「経世会(旧田中派)」VS「清和会」>
(田中派,経世会)逮捕←東京地検特捜部
(清和会)安泰
詳細
http://megalodon.jp/2010-0319-0241-00/jbbs.livedoor.jp/bbs/read.cgi/school/15753/1267194346/533-534
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
閨 閥
http://www.kyudan.com/column/keibatu.htm
■■■■■■■■■■■■■■■■■■■■■
統一京貝=2ちゃん運営=清和貝=薩◆長◆連◆合
>>583 の者です。
エイプリルフールの混雑も少なくなったようですが、未だに同じ症状です。
また、だんだん定期ポストも怪しくなり、TL拾いだけがしっかり動いているので
やはりパーミッションなどでズレが出ているのでしょうか…
改めてよろしくお願いします。
>>592
今は、本家アメリカの方で絶賛エイプリルフールネタやってるよ
ってのは置いといて
cronスレ83はTwitter公式が情報出すほどの全体的な不具合だったので、今回は違う
実際のところ、リプライ関連ではパーミッションはあまり関係ない
おかしくなる直前に何か弄ったり、アップし直したりしたことはないかね?
>>583 の方と同じ症状がでているため、便乗で書き込みをさせてください。
【バージョン】EasyBotter2.04beta
【設置鯖名】@pages
【PHPのバージョン】5.2.6
【実行】 GAE-cron(2分間隔)
【手動】 動作している
【不明点など】
@リプライだけ反応しません。
TLにはきちんと反応します。
定期ポストに関してはBOTジェネレーターさんを使わせていただいているため、
私の方では分かりません。
昨日の夕方までは@にもTLにも通常通り反応していました。
夕方確認した後は一切変更をしていません。
今朝になって@リプライに反応しないことに気づき、一旦ファイルを削除し、
再度アップしなおし、パーミッションも見直しましたがおかしな点はありません。
@で発言したあとに手動で叩くと「2分以内に受け取った@はないようです。」と出ます。
原因が分からず、時折@を飛ばして様子を見ているのですが…何か思い当たる原因は
ありますでしょうか?
>>594
wikiの通りにやってみましたか?
log.datだけパーミッションを変更して
そのほかはそのままでokです
それだけで自分は@pagesで動いてますので、もう一度1からやり直してみて
>>595
レス有難うございます。
あれから何度か@発言のテストをしていたらリプするようになったのですが、
不安定だったのでアドバイス通り1からやり直し、パーミッションもlog.datのみ変更しました。
今は安定して動いております。
不勉強でお手数をかけてすみませんでした…本当に有難うございます。
>>583 ,594の方とかぶった質問になってしまいますが、質問させていただきます。
【バージョン】2.04beta
【設置鯖名】 さくら(スタンダート)
【PHPのバージョン】5.2.12
【実行】 さくらのCRON(5分間隔設定)
【手動】 動かない
【不明点など】リプライに一切反応しない(自動・手動共に)。
7時ごろまではリプライに反応していました。
bot.phpに定時ポストを時間ごとに違う反応に設定追加と
reply_pattern.phpの変更(単語の追加)をしたところ一切反応しなくなってしまいました。
手動でしてみても真っ白い画面か5分以内に受け取った@はないようですのメッセージしか出ません。
確認したところreply_pattern.phpに記述ミス("がない部分があった)ので修正しましたが、それでも反応がありません。
他に試してみたことは
reply_pattern.phpに新しく追加した部分を削除してのテスト
bot.phpの時間ごとに違う反応の部分を削除してのテスト
定時ポストの部分をすべて削除してリプライ反応のみのテスト
すべてのファイルを消してアップロードしなおしてのテスト
デフォルトのbot.phpとreply_pattern.phpでのテスト
CRONの間隔を10分に変更してのテスト
>>595 のlog.datだけパーミッションを変更
以上を自動・手動で試してみましたが、リプライに反応しませんでした。
定時ポストは1時間ごとに設定してますが、そちらは動いているようです。
色々追加しては定時ポストやリプライに反応しなくなってもなんとか直すことが出来たのですが、
今回だけはお手上げ状態で困っています。
何か勉強不足なところがあるのかもしれません。
何か原因となる部分がありましたら指摘していただけると助かります。
よろしくお願いします。
すみません、597の者です。PCからのテストでは全く反応しなかったのに、先程携帯からリプライしたところ反応が返ってきました。
原因が分かりませんが動いたようなのでしばらく様子見します。
ご迷惑おかけしました、申し訳ないです。
うん、だからね。
Twitterの御本家であるアメリカはまだエイプリルフール当日なの。
それを考慮に入れて、エイプリレ回線混雑を回避した上でテストして、
それでもおかしいというのなら書き込んでよ。
質問失礼します
EasyBotter2.04betaを使用しています
postした時に表示される「EasyBotterから」という部分を変更したいのですが、うまくいきません
EasyBotter2.0スレなども参考にしているのですが、botのアカウントでログインしているにも関わらずOAuthの一覧にEasyBotterが表示されません
どうしたらいいのか分からず手詰まり状態なので、どなたかご教授いただけますでしょうか
よろしくお願いします
>>574
そうですね…
わざわざご指摘ありがとうございました。
>>600
>>575 で再確認
はじめまして。バージョン 2.04betaを使用しております。
PHPのバージョンはPHP 5.2.12
設置サーバーはさくら(スタンダード)を使用していて
実行は手動です。
リプライは正常にできるのですが、ランダムでの発言をすると
data.txtの改行が認識されていないらしく改行なしで投稿されてしまいます。
以前のバージョンに関して同じ症状の質問への回答の方法もためしてみたのですが
やはり改行なしで表示されてしまいます。
OSがmacなのでそれが悪いのかもと思い、ダウンロードした最初の状態でアップロードし直してみたのですが
それでも同じように改行が認識されないで投稿されました。
文字コードも改行コードも指定されたものに設定しています。
こちらの掲示板やwiki、PHPリファレンス等プログラミングに関することも調べてみたのですが原因がわからなかったので質問させていただきました。
よろしくおねがいします。
>>603
文字コード、改行コードが間違ってないのなら、FTPかパーミッションのせいじゃないかな
>>603
自分もMacで、改行コード文字コード共に間違ってないのに
解決出来ないまま終わってしまいましたが
まずDLしたファイルのままいじらずそのままアップし
そのファイルが改行認識成功したら
サーバーのコントロールパネル(ファイルマネージャーなど)から
中の文章を編集して解決しました。
未だに、何故改行が無視されるのか分かりませんがw
とりあえず、これで自分は成功しているので
さくらのコンパネからファイル編集試してみては。
【バージョン】2.04beta
【設置鯖名】 ロリポップ
【PHPのバージョン】ver.5.2.6.
【実行】 Web cron
【不明点など】
TLへの反応、リプライではなく、通常ポストで@を飛ばすことは可能でしょうか。
data.txtにそのまま書き込んだのでは、@を飛ばした相手だけではなく、全体に表示されてしまいますよね…?
>>606
改造が必要です
初心者ネタではありませんので
別の該当スレで
はじめまして
@PEGESにアップロードしたところ
Warning: require_once(Services/Twitter.php) [function.require-once]: failed to open stream: No such file or directory in /usr/local/www/htdocs/(ID)/public_html/(アドレス)/post_random.php on line 36
Fatal error: require_once() [function.require]: Failed opening required 'Services/Twitter.php' (include_path='.:/usr/local/lib/php') in /usr/local/www/htdocs/(ID)/public_html/(アドレス)/post_random.php on line 36
というエラーが出ました、
バージョンは1.42でpost_random.phpとtw.txtをアップロードして
手動でアクセスしました
どうしたらいいのでしょうか
はじめまして。
特定IDからのリプライをスルーさせたいのですが
どうすればできるのでしょうか?
使用しているのはバージョン1.42です。
すみません解決しました
どうやら一個ずつアップロードしてたのが原因だったようです
まとめてファイルごとアップロードしたところうまくいきました
ご迷惑おかけいたしました
cronを設定するのはbot.phpだけでいいのでしょうか。
これは、data.txtは30分置き、reply_pattern.phpは2分置きにしたい場合でも同時に設定してくれるということでしょうか…
その際はそのbot.phpのcronの時間設定は2分置きなどでも問題ありませんか?
>>604
回答ありがとうございます。
パーミッションも指定された666に設定してあります。
FTPの設定が悪いのでしょうか?
FirefoxのfireFTPでバイナリモード、アスキーモードの両方でアップロードを
ためして見たのですがやはり改行が認識されませんでした。
>>605
回答ありがとうございます。
試してみたのですが、やはり認識されません。
コントロールパネルからいじってみてもおなじようです。
改行の末に「,」をつけてみたところ
いいこと, あるよおー, ミスター, ドーナツ!,
ドーナツ!, いいこと, あるよおー, ミスター,
ミスター, ドーナツ!, いいこと, あるよおー,
あるよおー, ミスター, ドーナツ!, いいこと,
こんなかんじに改行なしのままで文の中身がランダムに投稿されていました。
テンプレ使わずに質問してるみなさーん!
>>575 は確認しようね!
散々既出の質問ばっかだぞ!
>>607
お返事ありがとうございます。
改造が必要なのですね。まずは色々と勉強してみようと思います。
【バージョン】 バージョン2.04beta
【設置鯖名】 toypark
【PHPのバージョン】 5.1.6
【実行】 cronjob.de使用
【手動】 動く
【不明点など】
TLリプライ機能を使いたいのですが、cron実行時に毎回やっているとテロのようになるのでifを使って5回cron実行で1回TL反応、というようにしたいです
if(rand(0,5) === 0){
$response = $eb->replyTimeline(5,"reply_pattern2.php");
}
上記のように書いているのですが、TLに反応してくれません
どのように変更したらいいのでしょうか
または、このような機能をつけることは無理なのでしょうか
2.04beta を使わせていただいております。
以前は他サイトさまを参考に作っていたのですが、cronの関係上一つにまとめて手軽に作れるこちらのに魅力を感じました。
ただ、まだまだ未熟者ゆえソースの違いになじめておりません。
どのスレや過去ログ、wikiを見ても出来なかったので質問させていただきます。
wikiを参考に時間別にpostしたいと考えております。
if(date("G") > 5 && date("G") < 11){
$response = $eb->postRandom("morning.txt");
} else if(date("G") > 10 && date("G") < 16){
$response = $eb->postRandom("noon.txt");
} else if(date("G") > 15 || date("G") < 1){
$response = $eb->postRandom("evening.txt");
} else {
$response = $eb->postRandom("night.txt");
}
というのがありますが、これはいったいどこに組み込めばいいのでしょうか?
このままだとcronが動くたびに発言してしまいますよね。
色々と入れ子にしたりなんだりと、わからないなりにいじってみたのですが、
どうしてもpostしてくれません。
(if(date("i") == "0")で設定した場合のpost、リプライは正常です)
また、この時間帯は発言しない、などもできるのでしょうか?
どうぞご教授お願いいたします。
>>615
rand(0,5)はあくまでphp内でランダムに5分の1の確率で実行させます
連続で実行しないこともあります
5分の1っていうのは結構きついですよ
countlog.dat等を作成し、bot.phpにアクセスするたびに+1記録させ
5になったらTL反応させ、カウントはリセットし0に戻す。
というようなのをやってみては?
ただしこれは改造ネタですのでこのスレはスレ違いです
ある程度ご自分でphp勉強しましょう
>>616
どこに、というのはどういう意味でしょうか…?
bot.php内だというのはわかってますよね?
どうしたいのかもう少し詳しく書いてもらわないとわかりません…
あとこれは初心者スレの内容じゃありませんので該当スレにてお願いします
改造に値しますので、wikiを見るだけでなくある程度php勉強しましょう
>>617
countlog作成は盲点だったので、その手法でやってみようと思います
解決策いただきありがとうございました
wikiに方法が載っている2.0に変えたので解決しました。
>>617
すみません言葉足らずでした。
もちろんbot.phpというのは理解しております。
今はif(date("i") == "0")に入れ子しているのですが、うまく動いてくれません。
スレチのようですので、改造スレ等に行ってみます。
ありがとうございました!
>>620
そのレベルで改造スレはむしろスレ違い、あなたは正しくこのスレが相応しい
>>575 を再確認して
>>621
コピペミスですスミマセン意味不明なこと書いてしまって
前のプログラムはちゃんと作れていたのですが…、
このPHPとは勉強しながらずっと戦ってるのでもっと仲良くなろうとおもいます
「bot.phpにアクセスしよう」でつまづきます…。
date.txtにアクセスすると、デフォルトの「いろはに…」が表示されるのですが
bot.phpにアクセスすると、画面に何も表示されず
bot.phpをダウンロードする画面になるんですが、何がいけないのでしょうか?
【バージョン】EasyBotter2.04beta
【設置鯖名】@pages
【PHPのバージョン】5.2.6
【実行】GAE-Cron
【手動】動く
【不明点など】
特定の時間帯(例えば23時から翌朝6時など)の間、botの通常ポストを停止させようと思いEasyBotter2.0スレの420を参考にソースを加えてみたところ、通常ポスト、リプライともに停止してしまいました。
参考にしたソースを全て削除してアップロードし直すとリプライ反応はしますが、通常のポストがcornで叩くとできなくなっています。
//=============================
//botの動作をここに書いてください
//先頭に//がある行はコメント扱いなので実行しません。実行したい行の頭の//を削除してください。
//=============================
//$response = $eb->autoFollow();
if(date("i") % 20 == 0){
$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");
ソースのどこがどう間違っているのかいまいちわかりません。
通常ポストをcornで動かし、かつ時間指定で停止させるためには、ここにどう書きくわえればよいのでしょうか?
すみません、>>623 は解決しました。
>>624
散々既出の件なので>>575 で
>>626
すいません。ありがとうございました。
初めてbotを作ります。
EasyBotter2.04beta を使用
デフォルトのbot.phpに無い機能で
時間指定postをさせたいのですが、(朝7:00なら、「おはよう」等)
どういった構成にすれば宜しいでしょうか?
特定時間以外はランダムpostとパターンreplyを行いたいです。
>>628
cronを複数打てるようならランダムpostやリプライと別のPHPファイルと
txtファイルを作ってpost_Rotationにすればよろしいかと。
余談ですが私はGAEを使っていてcron打つ時間を指定できるのでそうしてます。
GAE側でエラーが出たり鯖が落ちたりしちゃうとどうしても時間ズレちゃいますけど、
その辺りはご愛敬ということで。
私も初心者なのでもっとスマートなやりかたがあると思うのですが…
きちんとした方法が書けず申し訳ないです。
>>628
自分も時間指定postがしたかったのですが上手く行かず
結局時間指定post用とreply用の二つを設置してcronでそれぞれ制御してます
同じ問題で躓いている人は多いと思うのですが
>>629 さん同様もっとスマートな方法があるなら知りたいです
>>629-630
wikiで簡潔に解説はしてあるんだがね…
Easybotter1.42で自動フォロー返しを行うのは不可能なんでしょうか?
不可能なものは不可能
可能なものは可能
>>612
うらも、さくらサーバー使ってますので、ちゃんと動きますよ。
うらのテキストエディタは cotEditor 、FTP クライアントは FileZilla です。
で、鯖に上げて改行がおかしいのなら、bot.php や reply_pattern.php が動かないはずです。
データ区切り文字を , にした時ですが、 setting.php にも設定が必要ですよ。
投稿された文章に , があることから、カンマが区切り文字として認識されてないことが分かります。
このあたりから検討ください。
■■■■■■ 書き込み前に ■■■■■■
>>575 に書かれている内容を必ず確認してください。
初心者にありがちなミスの対処方法はほぼ既出となっています。
data.txtをdata.phpに書き変えたとして、
"発言内容",
"発言内容",
"",
と意図的に空欄を作ってつぶやかないコトがあるようにする、というのは可能ですか?
data.txtのままで、bot.phpの方をいじればできそうだなとも思ったのですが、
そこまでの技術はないので…
よろしければお教えいただけると幸いです。
>>636
無理だと思って諦めてるんじゃないですか?
やってみろよ!頑張れ頑張れ!!絶対できるよ諦めんな!
(修造BOT風励まし)
(ヒント。 *.php 定義ファイルは $data としてデータを返すので…ごにょごにょ…)
今botを作っているんですが、
編集の仕方の枠??の中の
$data = array(
//「おはよ」を含む発言(「おはよ」「おはよう」「おはよー」など)を受け取ると「おはようございます、御主人様」もしくは「Good Morning, Master.」と返すサンプルです
"おはよ"=> array(
"おはようございます、御主人様",
"Good morning, master.",
),
//「今日の運勢」を含む発言を受け取ると6種類の中からランダムな返答を返すサンプルです
"今日の運勢"=> array(
"大吉",
"中吉",
"小吉",
"末吉",
"吉",
"凶",
),
//「こんにちは」「こんにちわ」「こんちは」「こんちわ」を含む発言を受け取ると「こんにちはこんにちは!」と返す正規表現のサンプルです
"こん(に)?ち[はわ]"=> array(
"こんにちはこんにちは!",
),
//「◯◯は好き?」という発言を受け取ると「◯◯おいしいです」と返す正規表現のサンプルです
//ただし「◯◯」の前には空白か「、」か「。」を入れないと「は好き?」以前の文章が全て繋がって表示されます
"([^\s、。]+?)は好き?"=> array(
"$1おいしいです",
), //「会話終了」を含む発言を受け取るとリプライを返さなくするサンプルです
"会話終了"=> array(
"[[END]]",
),
);
のようなものがよく分かりません><
どなたか、例えばそのここを編集する、ってとこに、
① とか書いて、
下のほうに①=説明.
を書いていただければ・・・><
>>638
//で始まる行が説明です。
どこを編集するかは説明を読めばわかると思いますが…。
説明読んでも意味わからないならやめた方がいいです・・・><
>>561
お返事大変遅くなって申し訳ありません。
ご指摘有難うございました、パーミッションを変更して、無事フォルダ分けに成功しました!
これでファイルを量産しても管理しやすくなりました。
有難うございました!
>>631
Wikiのver.2.0-応用-時間分けのページを参考にしたのですが
上手く行きませんでした
例えば朝7:00にohayo.txtからランダムpostする場合
(cronは2分間隔設定)
if(date("G") == 7 && data("i") == 00){
$response = $eb->postRandom("ohayo.txt");
}
ではダメなんですよね…
>>641
cronのアクセスする時間が合って無いんじゃないの?
>>634
レスありがとうございます!!
解決いたしました。他の場所を調べすぎてsetting.phpのほうを見落としてました。
ありがとうございます!
>>641
> data("i") == 00
0 かどうか判断したいのに「 00 」とは困りましたね。
>>575 の「 bot.php で必要な知識」を調べてみて。
>>641
ああしまった読み取りミス。
>>641 については、 data() という関数はないので、date() のタイプミスですね。
あと、>>644 での回答、 date("i") は 00 から 59 までを返すので間違いですね。
ああ、はずかしい。
BOT同士の会話のことで教えてください。
【バージョン】EasyBotter2.04beta
【設置鯖名】@pages
【PHPのバージョン】5.2.6
【実行】 GAE-Cron
【手動】動作の不具合は自動・手動ともありません
【不明点など】
BOT同士会話をさせたいと思うのですが、@で話しかけられた場合に@で返事をすると、
相手方のBOTから1度特定のリプライがあり、その後はリプライパターンにない返事が延々と続いてしまいます。
ループ制限のおかげで途中で止まるのですが、他の方のBOT同士の会話を見ていると、
@で話しかけられた場合に@ではない通常の発言で返すようになっており、
それで会話が止まっていました。
BOT同士、会話などで検索しても分からなかったため、ヒントをいただけないでしょうか。
宜しくお願いします。
>>646
改造が必要なので該当スレへ
それと>>575
>>647
スレ汚し申し訳ありません。
>>575 を参考に他スレで相談してみます。
お手数お掛けしてすみません…有難うございました!
>>645
アドバイスありがとうございました
dataのスペルミス気付きませんでした…
dateに直したら時間指定postできました
タイプミスを防ごうとして解説欄の2月14日のみvalentine.txtの所をコピペして
書き換えたのがマズかったようです
初歩的なミスで恥ずかしいけど
自分で気付かなかったミスを指摘して下さって感謝してます
ありがとうございました!
ブログの記事が公開されたら記事内容を取得してきて発信するボットってありませんか?
>>650
作ればあるよ
これマジいいから使ってみ
http://pcmax.jp/rm94361
【バージョン】EasyBotter2.04beta
【設置鯖名】@pages
【PHP のバージョン】5.2.6
【実行】 AXXISS land.to
【手動】動きます
【不明点など】リプライが機能しません。
そろそろ5日ほど同じ所で足踏みしているので、
お暇な方がおられたら教えていただけませんか。
なんとか定期的にコメントを発するようには出来たのですが、
なぜかリプライをしてくれません。
別のアカから手動で@コメントを送った後、botのphpにアクセスすると、
用意していた返答をしてくれることもあります。法則は謎です。
あと、関係があるのかわかりませんが、botのphpにアクセスすると、
Warning: preg_match() [function.preg-match]: Compilation failed: nothing to repeat at offset 0 in /usr/local/www/○○○○○○○○○/EasyBotter.php on line 237
Warning: preg_match() [function.preg-match]: Compilation failed: nothing to repeat at offset 0 in /usr/local/www/○○○○○○○○○/EasyBotter.php on line 237
Warning: preg_match() [function.preg-match]: Compilation failed: nothing to repeat at offset 0 in /usr/local/www/○○○○○○○○○/EasyBotter.php on line 237
Warning: preg_match() [function.preg-match]: Unknown modifier 'g' in /usr/local/www/○○○○○○○○○/EasyBotter.php on line 237
という文章が表示されることがあります。line279の場合もあります。
調べたらよく似た記述でした。
>>653
マルチ乙w
あっちで貰ってた答えそのままだと思いますよ
reply_pattern.phpはちゃんと見直しました?
元のファイルやphaさんの説明を見ながら一行ずつ見比べて、
分からなかったのでこちらでも質問させていただきました。
マルチと呼ばれるものだったならすみません。
>>655
reply_pattern.phpを弄ったのなら一度元に戻して、「こんにちは」とかでちゃんとリプライするか確認してみて下さい。
>656
アドバイスありがとうございます。
reply_pattern.phpの初期ファイルをそのままアップロードして、
こんにちは、で話し掛けてみましたが、
リプライはありませんでした。
【バージョン】Easybotter 1.42
【設置鯖名】land.to
【PHPのバージョン】5.2.11
【実行】GAE-Cron
【手動】動く
【不明点など】
reply_random.php内に「resOnlyBegginingReply = FALSE; //TRUEだと文頭に自分あての@があったときのみ反応します FALSEだとそうでなくても反応します」
とあるのですが、これは自分のbot宛の発言でなくとも特定の単語をTL上から拾ってリプライをするということでいいのでしょうか
>>658
そうですよ
ごめんなさい、>>659 は盛大に間違いでした
>>658
TRUEにすると「@BOT こんにちは」には反応するけど、「@tanin @BOT こんにちは」には反応しないということです
FALSEにすると両方反応しますが、
たとえば「@tanin こんなボットができてたよ→@BOT」のようにBOTに話しかけられていない場合でも反応してしまうわけです
【バージョン】Easybotter 2.04
【設置鯖名】@pages
【PHPのバージョン】5
【実行】GAE-Cron
【手動】動く
【不明点など】
ポスト停止時間(1時〜6時)の間、リプライは稼動させたい。
if(date("G") >= "7" || date("G") == "0"){//7~24時
今のifの状態です。お力を貸していただけると嬉しいです。
>>654
あっちで回答したの俺だけど
なんでこっちで聞かないの?って言ったからこっちにきたんだろう
>>655
bot.phpとsetting.php以外は弄らなくていい
wikiの手順どおりまず1からやってみようか
>>661
>>575
すごく初歩的なことで恥ずかしいのですが、
もし朝・夜のポスト用にmorning.txtやnight.txtを作った時、
bot.phpに打ち込むのって「自分のサーバーの+morning.txt」になるんでしょうか?
それともdata.txtと同じようにmorning.txtだけで起動するんでしょうか?
>662
その節はどうもありがとうございました。
アドバイスに従って、bot.phpとsetting.phpのみ編集し、
他は初期状態でアップロードして、bot.phpにアクセスしてみたのですが、
Twitter????????????
??????@AAA_BOT
object(SimpleXMLElement)#10 (2) {
["request"]=>
string(20) "/statuses/update.xml"
["error"]=>
string(19) "Incorrect signature"
}
2?????????@????????
と表示されて、返信はおろかポストも出来ないようでした。
カスタマイズしてあるファイルをアップし直すとポストされます。
恐らくカスタマイズの過程ではポスト出来ていたはずなので、困惑しています。
setting.phpのページで紹介されていた「PHP+OAuthで Twitter - SDN Project」を拝見して、
OAuth認証でクライアントの表示をいじったこと位しか、変わったことはしていません。
基本の基本からで申し訳ありません。
>>664
"Incorrect signature" ですか。
>>575 にある wiki の「ver.2.0*よくある質問*PHPエラー」ページをご覧ください。
>>663
ファイル位置の絶対指定か相対指定かというお話でしたら、どちらでも構いません。
ファイルは同じディレクトリ階層に置き、ファイル名のみ指定というのが一般的です。
まずは bot.php の例の通りにやってみましょう。
■■■初心者の方へ■■■
書き込み前に>>575 の確認を!
>>666
ディレクトリ内にアップロードすればファイル名だけで大丈夫なんですね。
こんな初歩的な質問に答えていただきありがとうございました。
どうも初心者です。
自分で色々調べてみたんですが、ちっとも分からないので質問します……
【バージョン】2.04beta
【設置鯖名】 @pages
【PHPのバージョン】5.2.6
【実行】 手動
【手動】 動かない
【不明点など】
object(SimpleXMLElement)#10 (2) {
["request"]=>
string(20) "/statuses/update.xml"
["error"]=>
string(22) "Status is a duplicate."
}
上のような表示が出てくるんですが、Status is a duplicate.でスレッド内などを検索してみても全然ヒントが出なくて……
IDやOAuthのキー等は間違ってないはずなんですが……
それと、Status is a duplicate.の意味が知りたいです。教えて頂ければ幸いです。
既出だったらすいません
すいません。言い忘れが。
・通常ツイートができない。
とりあえずランダムツイートだけ設定しました。他はいじってません
>>669
ステータスが重複してるってことでしょう
情報不足なのでbot.phpの設定部分をコピペして
>>671
>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("データを書き込んだファイル名");
//用意したデータを順番にポストしたい
$response = $eb->postRotation("データを書き込んだファイル名");
//@で話しかけられたときにリプライしたい
$response = $eb->reply(cronで実行する間隔(単位:分), "データを書き込んだファイル名", "パターン反応を書き込んだファイル名");
//タイムラインの単語に反応してリプライしたい
$response = $eb->replyTimeline(cronで実行する間隔(単位:分),"パターン反応を書き込んだファイル名");
//自動でフォロー返ししたい
$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","めでたしめでたし");
*/
?>
動作のとこしかいじってないはずなんですけどね……
>>672
全部コピペしろ、じゃなくて設定部分を…って書いてあったんだがw
もちろんdata.txtの中身は弄ったり上書きしてないよね?
念のためセッティングファイルとコードを再確認してみて
それで何事もなければwikiの通りに一からアップし直し
こんばんわ。お知恵をお貸しください。
【バージョン】 バージョン2.04beta
【設置鯖名】 さくら
【PHPのバージョン】 5.2.12(標準)
【実行】 さくらのcron
【手動】 動く
【不明点など】 @への返信、TLへの返信をしたときに、
定期ポストをしない時がある。
定期ポストは1時間に1回。
@への返事は12分おき。
TLは、1時間に1分ずつ、5回拾う、という設定で、
cronを5つ、時間差で動かしています。(正時から12分おき)
bot.phpは、ほとんど触っていなくて、普通に稼働しているのですが、
たまに、定期ポストと同じタイミング(毎時00分)で、@や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(12,"data2.txt","reply_pattern.php");
$response = $eb->replyTimeline(1,"reply_pattern2.php");
>>668
なるほど、そういうことでしたか
ありがとうございました
こんばんは、初心者です。
ver1.4から2.0へ乗り換えようと思ったのですが動作しません。
一通り設定を終え、
アップロードURL/twitterbot/bot.php
に手動でアクセスしたのですが、ページが白紙のままで動作しませんでした。
お知恵をお貸し下さい。
>>669
連続投稿 Duplicate text 規制ですね。
どうやら API でもきちんとエラーが出るようになったようです。
Twitter API で “Status is a duplicate.”がでる。 ≪ Ctrl+Z
http://u-thule.sakura.ne.jp/blog/2010/03/114
要は発言の数を増やしておけば問題ありません。
>>674
まず12分おきの cron のたび、4つ全ての処理を行っているようで、
お書きのような動作設定にはなっていないようですよ。
設定の見直しと、動作条件づけを。
postRandom() は軽い処理なので、投稿が失敗することはないと思います。
通常は稼働していて、その時だけというのは普通ないように思えますけど。
>>673
>>677
!! ファイル自体はおかしくはなかったんですね・・・・よかった・・・・!
つまり同じ発言のしすぎって事ですか ほええ もっと重いエラーだとおもってました・・・・
うらさんありがとうございます!672.673さんもありがとうございました!!
>>678 うら様
674です。お返事、ありがとうございます。
説明不足で申し訳ありませんでした。
コピペしたのは00分のbot.phpの中身で、
残りの4回分のbot.phpには別の名前を付けて、
12分、24分、36分、48分に作動させています。
そちらの4回のほうは
$response = $eb->autoFollow();
$response = $eb->postRandom("data.txt");
の2つは//で消し、返事オンリーにしてあります。
なので、1時間に1回の定期ポストをするのは
00分のbot.phpだけです。
定期ポストが失敗していることに気付いた時は
手動でbot.phpにアクセスし、発言していますが、
手動で操作したから、次にcronでアクセスした時に
正しく動作しない、というようなことはありえるのでしょうか??
すみません。「bot.php」にアクセスすると「Warning: require_once(HTTP/OAuth/Consumer.php) 」などが出る場合はやはり失敗しているのでしょうか?
botも「Test OAuth update.」とpostして以来全く動かないのですが…
主にMacユーザーの方で、「tw.txt(data.txt)の中身が全部改行無しで出力される」
という内容を過去の書き込みで読みました。
また、Ver.1.4以前の「よくある質問」ページにも原因調査中と記載されていました。
私も同様に困っていたのですが、OAuth認証の内容を変更したところ、
data.txtの改行が反映されるようになりました。
はじめ【setting.phpの編集】―【このサイトでOAuth認証のキーを取得する】の内容で設定していたのを、
【setting.phpの編集】―【すでにOAuth認証用のキーを持っている人は】の項目から誘導されている
ページを参考にOAuth認証用アプリを作り、OAuth認証の設定を独自のものに変更しただけです。
data.txtの方は全く手を付けていませんが、OAuth認証の再設定後にbot.phpを実行したところ、
きちんと改行部分で区切られて1語だけpostされました。
ちなみに環境は、
EasyBotterバージョン:2.04beta
OS:Mac OS X 10.6.3
エディタ:CotEditor
サーバー:ロリポップ
です。
同様にお困りの方がいらっしゃいましたら、少しでも参考になればと思い、報告させていただきました。
投稿場所を間違えていたら申し訳ありません。
bot作成初心者です。
【バージョン】 バージョン2.04beta
【設置サーバー名】 @pages
【PHPのバージョン】 5.2.6
【実行】 Free Web Cron Service(予定)まだ設定していない
【手動】 postのみ
【不明点など】 TLへのリプライがされない。
以下問題点
Warning: preg_match() [function.preg-match]: Compilation failed: nothing to repeat at offset 0 in /usr/local/www/htdocs/renibot0/public_html/EasyBotter.php on line 279
40行ほど表示された後、10分以内のタイムラインに反応する単語がないようです。と表示される。
bot.phpでは
$response = $eb->autoFollow(2);
if(rand(0,5) === 0){$response = $eb->postRandom("data.txt");}
//$response = $eb->reply(10,"data.txt","reply_pattern.php");
$response = $eb->replyTimeline(10,"reply_pattern.php");
と記述しています。
まだ、実験段階で@返信ではなく、TL返信を先に設定したいと思ったのですが…エラーが出てどうしようもありません。
どなたか、ご教授お願いします。
【バージョン】 バージョン2.04beta
【設置サーバー名】 @pages
【PHPのバージョン】 5.2.6
【実行】 GAE
【手動】 リプしない
【不明点など】
定期postをジェネレーターで、リプライをcronを使ってやろうと思っていじっていたのですが、
@を飛ばしてbot.phpにアクセスすると真っ白になります。(2分以内に〜も出ません)
パーミッションも文字コードも改行コードも、掲示板で見たところは見直したのですが、
原因が見えてきません。
どこに不具合があるのでしょうか。
>>683
$response = $eb->autoFollow(2);
この(2)って?
2分ごとにってつもりで付けたしたのかな?
自動フォローはbot.phpにアクセスした時に働くのでここでは制御できない。
最初に書いてある通りの記述に戻してやってみて。
あとディレクトリ名が見えてるので変更した方がいいと思います。
>>683
EasyBotter.php の279行あたりは、リプライパターンと照合の処理ですね。
reply_pattern.php を見直してみましょうか。
>>684
>>575 でもう一度確認を。
>>680
たまに失敗 というのはないと思いますけど。
内的要因か、外的要因か。
cron のログを00分のだけ受け取ってみて、様子をみましょうか。
>>681
> Warning: require_once(HTTP/OAuth/Consumer.php)
そのディレクトリにある Consumer.php を読み出そうとして失敗しているものと思われます。
>>575 からアップしたファイル群の再確認を。
>>685
>>686
有難うございます。見直してきます!!
>>685
ご指摘頂き、恐縮です。
すみません、初歩的なのですが…質問の直し方が分かりません;;
教えていただけないでしょうか?
編集はできないよw
鯖にアップしたフォルダの名前を変えるしかないよ
質問です
20分置きにランダムポストしたい場合は
$response = $eb->postRandom("data.txt"); に何を付けたしたら
良いですか?
リプライや特定言語の設定は5分でcronも5分で設定していますが
それだと5分おきにポストしてしまうので…。
宜しくお願いします。
>>691
>>575 のwiikiで
これマジいいから使ってみ
http://pcmax.jp/rm94361
初めまして。
3日前に作り始めました。PHPに触るのも初めてです。
【バージョン】Easybotter 2.04bata
【設置鯖名】 @PAGES
【PHPのバージョン】PHP-5.2.6
【実行】 AutoCron Ver1.03
【手動】 手動でも自動でも動いてはいます
【不明点など】
bot.txt内の言葉はツイートするのですが、@にもTLにも全く反応しません。
「reply_pattern.php内のセリフで返してこない」のではなく一切返事をしてきません
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");
UTF-8 LF 666の設定もしてあります。
教えてくださると嬉しいです
何とかサーバーのところまでたどり着いたのですが、
自分は@pegesを使用していて、FFFTPもダウンロードしているのですが、
そこからがよく分かりません><
何方か教えてくれませんか??
>>695
>>575 がお勧めです
>>696
CRONをちゃんと2分ごとに設定している?
$response = $eb->reply(2,"data.txt","reply_pattern.php");
$response = $eb->replyTimeline(2,"reply_pattern.php");
この2の数字はbot.phpが実行された時に「2分以内」にTLや@があったら返事をするって意味だよ?
まあ、このままの2分間隔だと鯖に負担がかかるから、5分ごとぐらいにした方がいいと思うけど。
間違えた>>694 宛です
>>697
そういうことなのですか・・・!
cronは40分間隔にしてました
でもcronを2分ごとにしちゃうと2分ごとにbotが喋っちゃいませんか?
>>699
>>575 見ればいいのに
>>700
わ!できました!
いきなり応用をやるべきではなかったですねすいません;ありがとうございます!
>>575 もありがとうございます!
23時〜7時は1.txtを
17時〜19時は2.txtを
その他の時間はdata.txtを
30分置きに発言
ってこれでいいのでしょうか?
if(date("i") % 30 === 0){
if(date("G") > 22 or date("G") < 8){
$response = $eb->postRandom("1.txt");
}else if(date("G") > 16 && date("G") < 20){
$response = $eb->postRandom("2.txt");
} else {
$response = $eb->postRandom("data.txt");
}}
>>702
合ってる
というか、実際やってみればいいんじゃないかな?
switchのほうが軽いらしいけどね
if(date("i") % 30 === 0){
switch(true){
case (date("G") > 22 || date("G") < 8):
$postfile = "1.txt";
break;
case (date("G") > 16 && date("G") < 20):
$postfile = "2.txt";
break;
default:
$postfile = "data.txt";
}
$response = $eb->postRandom($postfile);
}
こんにちは、お教えを請いたくてやってきました。
【バージョン】Easybotter 2.04bata
【設置鯖名】 @PAGES
【PHPのバージョン】PHP-5.2.6
【実行】 AXXISS land.to
【手動】 自動で動いている
【不明点など】
>>694 さんと同じく、
ランダムポストは問題ないのですが、リプとTLに対応させられません。
手動でbot.phpにアクセスすると
「2分以内に受け取った@はないようです。」若しくは
「2?????????@????????」<上記の文字化け?
とのみ表示されます。
cronは2分ごとに設定しており、bot.phpの記述は、
$response = $eb->autoFollow();
//bot.phpを実行したときに、0分、20分、40分だったら実行される
if(date("i") % 20 === 0){
$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");
としてあります。
問題の見当が付きませんで、どこかミスを指摘して貰えないでしょうか。
こんにちは。
最近、このようなエラー?が大量に出るのですが
Warning: preg_match() [function.preg-match]: Compilation failed: unmatched parentheses at offset 29 in /usr/local/www/htdocs/zackfair/public_html/EasyBotter.php on line 279
EasyBotter.phpは、まったく触っていません。
どこがどうなんでしょうか?
【バージョン】Easybotter 2.04bataを使っています。
よろしくお願いします。
>>704
phpの文字コードか
プラウザの文字コード合ってる?
cronは後回しだよ
手動で成功するかが最初の問題です
wikiの手順どおりやってみて
>>705
>>686 と同じ回答になっちゃいますね。
>>うら様
ありがとうございました。
見落としてました。
おっしゃるとおりでした。
ありがとうございます。
こんにちは。
サーバーは@pegesを使用しています。
FFFTPもダウンロードしているのですが、
そこからが分かりません><
何方か教えてくれませんか?
↑ミスです;
↑の質問をした物ですが、
PHPバージョンというのがよく分からないのですが、
何ですか??
>>710
公式の説明と>>575 のwiki見て、意味がわからないなら
ホームページ作成から勉強したらいいと思う
>>687 うら様
680です。アドバイス、ありがとうございます。
なかなか誰かに話し掛けてもらえるbotではないので、
上手く00分から遡ること12分以内に@が無かったり、
自分でテストをする時間が取れなくて、きちんと
試してはいないのですが、
さくらのcronのエラーログを見たら、
設定時間(毎時00分)以外のエラーしかなく、
cronのログを受け取る、というのも、
どうすればいいかを、これから調べて試してみたいと思います。
何から見直したらいいかもわからなかったので、
お返事頂けて助かりました。
また、分からなくなったら、
こちらに書き込みをさせていただきます。
少々遅くなりましたが、まずはお礼までm(_ _)m
はじめてbot作成に挑戦している者です。
phpでのコーディングは初めてなので、わからない事だらけなのですが宜しくお願いします。
EasyBotter2.04を使って設定をし、サーバーへUPしました。
サイトの開設にあるとおりに、実行してみましたが、
「Twitterへのpostに成功しました。」
とは表示されずに、
bot.phpのソース内容が全文表示されるという状況です…。
何がいけないのかさっぱりわからずに掲示板に頼らせて頂きます。
どなたかレスお願いします…泣きそう…
>>713
ソース内容が全文表示というあたり、PHPが使えない鯖かphp.iniやhtaccess等の設定が必要な可能性もある
>>575 をまずは確認、特に問題ないようなら鯖のマニュアルを確認
PHPのバージョンと設定周りをよくよく確認して、それでも問題ないようならテンプレ使って質問して下さいな
>>714
ありがとうございます。
プロバイダーに確認した所、どうもPHPに関しての返答が曖昧だったため、
使えないのではないかと思いました。
再度別の鯖をレンタルしてチャレンジしてみようと思います。
テンプレなどの件教えてくださってありがとうございました。
次回はテンプレ使います^^
【バージョン】 バージョン2.04beta
【設置サーバー名】 @pages
【PHPのバージョン】 5.2.6
【実行】 GAE
【手動】 TL反応・リプライしない
【不明点など】話し掛けていない時に直接アクセスすると、
「2分以内に受け取った@はないようです。
2分以内のタイムラインに反応する単語がないようです。」
話し掛けてからアクセスすると、
「Warning: array_rand() [function.array-rand]: First argument has to be an array in /usr/local/www/*********/EasyBotter.php on line 220
Warning: array_rand() [function.array-rand]: First argument has to be an array in /usr/local/www/*********/EasyBotter.php on line 220
2分以内のタイムラインに反応する単語がないようです。」
と出ます。エラー部分は変わることもあります。
wikiの手順に従って設置してきたのですが、リプ成功後、
data.txtの内容は一部しかポストしたくなかったため、reply_pattern.phpを編集しました。
<?php
$data = array(
"おはよ"=> array(
"aaaaaaaaaaaaa",
"bbbbbbbbbbbbb",
"ccccccccccccc",
),
//data.txtからの抜粋
"ddddddddddddd",
"eeeeeeeeeeeee",
"fffffffffffff",
);
こんな感じです。拾うように設定してあるワードに対してはリプライするようです。
上下のパーツを別ファイルにして、bot.phpで2つファイルを設定すると時折リプするのですが、
dataからの抜粋ファイルがtxtでもphpでも、返答は「Array」の一言のみです。
複数回会話する設定なのですが、1回で終了してしまいます。
あまりに意味がわからなかったので、今のような状態にしました。
文字コード、改行コード、転送モード、全て確かめてはアップし直しているのですが、上手くいきません。
助けていただけるとありがたいです。
>>712
通常の設定では捨てている結果出力をメールしてもらえばいいと思います。
こちらを参照。
Twitterbotのcronスレ
http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1260351215/88
>>716
つぶやきファイルと返答パターンファイル。性質の違うものはいっしょにはできませんよ。
reply() で data.txt の使い回しをしたくない場合は、別のつぶやきファイルを指定しましょう。
>>718
うら様、早速の返信ありがとうございます。
軽々にまとめてしまっては、やはりいけないのですね。
別ファイルも用意はしてあるので、そちらを使ってみます。
ただ、そうするとリプライに「Array」というものが混じってしまうのが難点です。
これはファイルを分けたからでも、それがphpだからでもないんですよね?
何か原因か回避策はありますでしょうか。
また出来るまでアップロードと試行錯誤を繰り返してみるつもりですが、
何かありましたらご指南いただければありがたいです。
5回に1回ラムダムに実行ではなく5回目に一回ポストしたいのですが
どうやったらいいですか?
Cronは手動なので正確にいかないのです
0分、20分、40分だったら実行されるは時間がずれてしまってうまく
動かないので…。
【バージョン】Easybotter 2.04bata
【設置鯖名】 @PAGES
【PHPのバージョン】PHP-5.2.6
【実行】 Webcron.org
【手動】 動く
【不明点など】
手動で更新するとリプライを返すのですが
自動だと返してくれません
手動更新だと返してくるので書き間違いはないと思うのですが・・・
どうしたらいいのでしょうか?
■bot.php
<?php
require_once("EasyBotter.php");
$eb = new EasyBotter();
$response = $eb->reply(2,"data.txt","reply_pattern.php");
$response = $eb->autoFollow();
$response = $eb->postRandom("data.txt");
$response = $eb->replyTimeline(2,"reply_pattern.php");
?>
■reply_pattern.php
<?php
$data = array(
"おはよ"=> array(
"おはよう",
"おはよう!",
),
);
>>717 うら様
712です。案内、ありがとうございます。
メールを受け取れるように設定してきました。
しばらく様子を見てみようと思います。
ありがとうございました!
これからPHPを学習してbotを作成しようと考えています
初心者がPHPで作成するには難易度が高いでしょうか?
ご回答よろしくお願い致します。<(_ _)>
>>721
>>694 以降を読んだ?
>>723
難易度は高いけど、真面目に勉強する気があってわからない事をちゃんと自分で調べる事が出来るなら、
初心者でも作れないわけじゃない。
>>723
何の初心者か、ってことと、勉強する気があるのか、ってのが重要
PHPが初めてでもCGIの設置を自分でしたことがあるとかならすぐに慣れると思う
FTPを使ってWEBサイトをアップしてる程度というのなら敷居は低いが、ちょっと頑張る必要がある
FTPって何?タグって何?というレベルだと、まずはWEBサイトを作るなどして慣れた方が良い
勉強する気があるのか、についてはやる気の問題なので何とも言えないけど
まったくのズブの素人が手を出すには、ちょっと敷居が高いよ
「プログラミングが出来ない人でも」とは書いてあるこれは「プログラムを一から組めなくても」という解釈でとった方が良い
プログラミングやスクリプトの基礎を知らないとサーバーに迷惑をかけたり、Twitterに負荷をかける原因になりかねない
難しそうだなと思うのならBOTジェネレーターを使った方が良い
>>724 >>725
御助言ありがとうございます!
まったくの素人と言って良いレベルです・・・
一か月後までに作成しなければならないので、今回はBOTジェネレータを使用して作成します。
質問させてください
【バージョン】Easybotter 2.04beta
【設置鯖名】@pages
【PHPのバージョン】PHP-5.2.6
【実行】GAE-Cron
【手動】動く
【不明点など】
特にエラーも見当たらず、今のところ正常に作動しているのですが
BOTのTLを見ると通常、 □削除(または返信) □リツイート と
表示される部分が □削除(返信) のみしか表示されず、確認用の
アカウントのTLでも、今回作成したBOTのみリツイートが表示されませんでした。
Easybotterのガイドに従い変更した点は、 data.txtをdata.phpに変更、
UTF-8では表示されなかったため文字コードはUTF-8Nで保存、
OAuth認証用のキーを別に取得し送信元の名前を変更しました
ブラウザを変えてもファイルをアップロードしなおしても、表示されません
また最終段階で気づいたため、初めから表示されていなかったのかどうかは不明です
調べてみましたが全く見当がつかず、質問させていただきました
申し訳ありませんが、ご回答よろしくお願いいたします
>>727
自分のツイートはリツイートできない仕様だけど、それとは違うの?
>>728
個人的に使用している別のアカウントで今回作成したBOTをフォローして確認したのですが、
他の方や他の方が作成したBOTのツイートには「リツイート」ときちんと表示されますが
自分のBOTだけ「返信」のみの表示でした
それから今回作成したBOTのTL上ではリツイートの表示が全くされず、
上記の個人的なアカウントのツイートにカーソルをあわせても「返信」しか表示されません
ツイッターの設定にリツイートボタンを非表示にするようなものはないですよね…?
見当違いな質問でしたらすみません
BOTに鍵かけてない?
>>730
それが原因でした…。鍵を外して確認したところ、きちんと表示されました
もっとよく調べていろいろ試してから質問するべきでした
初心者とか無知とかそれ以前の問題で、大変恥ずかしいです…
ですが、これで堂々と稼動させることができます!
ご回答ありがとうございました
こんなくだらない質問にお時間を割いてくださり感謝しております
>>719
php での出力が Array となる。つまり出力させているのが配列だからです。
何か仕様と違った指定をしていませんか?
php が理解できるのでしたら、データファイルをどのように処理しているかご覧になってください。
>>720
プログラムは呼び出された瞬間のことしか分からないので、5回目であると分かる仕掛けが必要ですね。
以下のレスがヒントです。
雑談スレ
http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1259657570/162
>>732
うら様
返信ありがとうございます。PHPは実は全く分からず、このbotの設置も手探りです。
リプライ時のみ「@△△ Array」もしくは「@△△ a~」と表示され、
コンマなどの抜けがないか調べても原因が分からず、頭を悩ませていました。
なにかPHPの設定の不備なのですね!調べ直すとっかかりをありがとうございます。
作りたいものの性質上botを複数作っていて、その両方に同じ症状が出ているので、
まずひとつを何とかすべくPHPを見直してみます。
お忙しい中何度も本当にありがとうございます。
パーミッションの設定をしようとしたのですが、
log.datが見つかりません。
何処にあるんでしょうか??
>734
中身空のファイルでいいから作ってうpすればいいよ
ただし、文字コード・改行コードは確かめてね
>>735
バージョン2.04betaをダウンロードしたのですが、
http://mp0.jp/psRMKn
で大丈夫でしょうか?
logっていうのは、log.datと思っても大丈夫ですか??><
>>736
短縮 URL は踏みたくないので想像でレスします。
Windows の設定で「登録されている拡張子を表示しない」となっていると思われます。
設定を外すと、拡張仕込みで表示されます。
でも普通の FTP クライアントは、それに関わらず拡張子を表示しますよ。
というか、まずホームページの仕組みとか、 FTP でのアップロードとか、
確認しておいた方が良いと思いますよ。大丈夫です?
aguseで調べたら>>736 はヤフメ?のページっぽい
http://www.aguse.jp/?m=w&url=http%3A%2F%2Fmp0.jp%2FpsRMKn&x=56&y=4
>>737
なんとかできました、すいません・・・><
文字コードですが、
Unicode (UTF-8,BOM有)
Unicode (UTF-8,BOM無)
という2つがあったのですが、どちらを選択すればいいのでしょうか?
使ってるエディタは、Meryです。
>>739
(・∀・#)つ http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1261905206/
>>740
無しのほうがいいんですね、有難うございます><
サーバーはどんなサーバーを使用すればいいのでしょうか?
やっぱり、有料のサーバーのほうがいいのでしょうか…
今Sitemixを使用してるんですが、
ホームページビルダーが必要らしく…
HPの作成では必ずビルダーが必要なのでしょうか><
あと、おすすめのサーバーってなんでしょうか??
本当に素人で、重ね重ねすいません><
質問です。
【バージョン】Easybotter 2.04beta
【設置鯖名】ロリポ
【PHPのバージョン】PHP-5.2.6
【実行】webcron.org
【手動】動く
【不明点など】
動作に問題があるというわけでは全くないのですが、
一応bot同士の会話ループ制限しとこうかなーと思って
(たまに10往復くらいいってることがあるので……)
wikiにある「特定のアカウントとの会話(リプライ)数を制限したい」を
試してみたところ、ちゃんと動作はするしkaiwalog.txtにも書き込まれるのですが
phpに直接アクセスすると「line 271に問題あるよ」と表示されてました。
271行目を確認してみてもその部分は元からあったところなので
書き加えたのが原因というわけでもなさそうです。
結局、追加した部分を削除したら元通りになったのですが
これは一体どういうことなのでしょうか?
改造は自己責任で
初心者スレはスレ違いです
【バージョン】Easybotter 2.04
【設置鯖名】@pages
【PHPのバージョン】PHP5
【実行】GAE
【手動】動く
【不明点など】
昨日の夜OAuth認証の「〜から」の部分を変更する作業をしました。
エラーなどは出ませんでしたが、今のところ定期ポストもリプライも止まってしまっているようです。
リプライを飛ばしてbot.phpにアクセスしてみたら3分以内の返信はないと言われてしまいます。
ただ単にまだ反映されてないという状態ならいいのですが、何か間違いがあったのでしょうか…。
分かる方がいたらお願いします。
>>742
「line 271に問題あるよ」とのことですが、 php は明確なエラーを返しているはずです。(英語ですが)
wiki の通りにコピペしたなら、271行目は、 $status = $res[array_rand($res)];
パターンマッチで得られた返答パターンから返答を決定する箇所ですね。
エラーの可能性を考えるなら、 $res が配列ではなかった、とかでしょうか。
もっと具体的な情報がないと、ですね。
>>744
定期ポストがなされないのでしたら、動いていないということになります。
OAuth 認証については、アプリとパスワードのセットのようなもので、
EasyBotter のセットを使って投稿すれば EasyBotter からとなり、
独自認証のセットを使えば、そのアプリからと表示されます。併用もできます。
php にブラウザでアクセスして、エラー表示が出ていませんか?
または再度やり直してみましょう。
具体的なエラーは
Warning: preg_match() [function.preg-match]: Compilation failed: unmatched parentheses at offset 36 in /home/sites/lolipop.jp/users/*****/web/*****/EasyBotter.php on line 271
です。何度か確認してみたのですが、毎回最初二回ほどは動作、
その後はphpにアクセスしてもページ真っ白でリプライの投稿も無し
という感じです。
はじめまして、質問させていただきます。
EasyBotter2.0を使わせていただいていて、
EasyBotter 非公式wikiの機能追加のところに載っている
「特定のアカウントに対しては、別のリプライパターンを読み込ませたい」
を使いたいのですが、botとついてるアカウントに対する設定はなしで、
特定のアカウントだけに対して設定がしたいので、
botの設定のところだけを消した、
//■■特定の人には別パターン■■
$userName = (string)$reply->user->screen_name;
switch($userName){
case "abcd"://abcdというアカウント名に対して
case "efgh"://efghというアカウント名に対して
$replyPatternFile = "xxx_pattern.php";//xxx_pattern.phpを適用する
$this->_replyPatternData[$replyPatternFile] = $this->readPatternFile($replyPatternFile);
break;
}
の設定部分だけを直して、
説明通りの場所に入れたのですがどうしても動きません。
他にも思いつく限りのことを試したのですが、
どうしてもわからなかったので質問させていただきました。
どうしたらいいのか教えてください。
すみません>>742 、>>747 ですが
>毎回最初二回ほどは動作、
>その後はphpにアクセスしてもページ真っ白でリプライの投稿も無し
この部分については、相手botに二回返した後に
他から話しかけられていない、定時postの時刻でもない場合にこうなるのは通常なんですかね?
どっちにしろリプライ投稿と同時に出るエラーについてはよくわからんままです。
現在Sitemixをサーバーで使用しているのですが、
ホームページビルダーが必要らしいのですが、
サーバーって全部ビルダーが必要なんですか?
※wikiの機能追加について質問する人へ※
すべて自分で動作チェックしてから載せていますので、手順通りやれば出来ないはずはありません。
#ミスに気づけばもちろん随時修正しています。ミスのせいで起きた質問であれば、回答しています。
機能追加は改造です!改造する前にPHPの基本を勉強をしてください。
それが出来ないのであれば改造しないでください!wikiにそう書いてあるはずです!!!!
初心者を脱出したら、と書いてありますよね?
はっきりいうと、守れないなら質問するな!
自己責任で勝手にやってちょうだい。そのかわり他人を頼らないで。
>>742 >>747
preg_matchエラーは大体pattern.phpミス
改造する前にきちんとPHP勉強してとwikiに記載しているはずです
>>743 の注意は無視して、回答してくれる人の意見だけ聞くような自分勝手な人にならないでください
機能追加項目は初心者に宛てたものではありませんよ
>>748
もう少し詳しく書いてほしい。何行目に追加したのでしょう?
リプライのところではなくTLのところに追加したのではありませんか?
//リプライを作る、の下のほうの
foreach($this->_replyPatternData[$replyPatternFile] as $pattern => $res){
ですよ
はじめまして。質問なのですが今順序的にはファイルをアップロードし、botを動かしてみよう!の段階に入ってます。ダウンロードしたEasyBotter2.04betaフォルダの中身を全て(PEARの中身なども)アップロードしたらいいのでしょうか…?あと説明のtw.txtが分かりません;宜しかったら教えてください><
<751
回答ありがとうございます。
説明がわかりにくくてすいませんでした。
wikiに
foreach($this->_replyPatternData[$replyPatternFile] as $pattern => $res){
の直前に挿入する・と書いてあったので、
そのままそこに入れています。
その前に「特定のアカウントとの会話(リプライ)数を制限したい」の機能も使ってるので
行数は何もしていないのとずれてると思いますが、
266行目、//リプライパターンと照合ともともと書かれているところの2行目、
if(!empty($this->_replyPatternData[$replyPatternFile])){
と
foreach($this->_replyPatternData[$replyPatternFile] as $pattern => $res){
の間に
//■■特定の人には別パターン■■
$userName = (string)$reply->user->screen_name;
switch($userName){
case "abcd"://abcdというアカウント名に対して
case "efgh"://efghというアカウント名に対して
$replyPatternFile = "xxx_pattern.php";//xxx_pattern.phpを適用する
$this->_replyPatternData[$replyPatternFile] = $this->readPatternFile($replyPatternFile);
break;
}
のアカウント名とファイル名を変えただけのものを挿入しています。
「特定のアカウントとの会話(リプライ)数を制限したい」の方は
wikiに書かれているものをそのまま使っていて、問題なく動作しています。
バージョンはEasyBotter2.04betaです。
他は一切いじっておらず、
改変というほどの改変はしてないつもりなのですが、
何か間違っているのでしょうか・・・
botに反応部分を消したのがいけないのでしょうか。
教えてください。
>>753
スレ違いですよ
>>753
751で動作再確認しましたが、やはり問題ないです
※botの部分を消して、特定のIDのみで
//■■特定の人には別パターン■■
$userName = (string)$reply->user->screen_name;
switch($userName){
case "abcd"://abcdというアカウント名に対して
$replyPatternFile = "xxx_pattern.php";//xxx_pattern.phpを適用する
$this->_replyPatternData[$replyPatternFile] = $this->readPatternFile($replyPatternFile);
break;
}
その書き換えでどこかミスっているとしか考えられません
もしくはそのpattern.phpにミスがないか再確認してください
これ以上はこれだけの情報ではわかりませんし、
初心者スレではなくPHP質問スレ等でしてもらった方が良いかと
<755
回答ありがとうございます。
何かミスがないか確認してやり直してみます。
それでもわからなかったらまたphpの方のスレで質問します。
ご丁寧にありがとうございました。
「つかれ」には反応するけど「おつかれ」には反応しないってできますか?
>>757
「つかれ」より上に「おつかれ」のパターンを置く
「おつかれ」用のパターンを入れるか、中身をカラにするか、会話終了に設定
>>758
なるほど!ありがとうございます!
正規表現で [^お}つかれ でもいいんじゃないかな
>>745
bot.phpにアクセスしてもエラーも出ないしOAuth認証の登録自体は成功したと思ったのですが、
リプライと飛ばしても「〜分以内の返事はありません」ってなってしまうので、
botとOAuth認証したbot自体がリンクしてない状態っぽいです。
もしかしたら何回か登録をやり直してたので規制に引っかかったのかもしれないです。
しばらく放置してまたやり直してみます。ありがとうございました。
botを試しに動かしてみたら
object(SimpleXMLElement)#5 (2) {
["request"]=>
string(20) "/statuses/update.xml"
["error"]=>
string(22) "Status is a duplicate."
}
というエラーが出て投稿できませんでした
これはどういう意味なんですか?
はじめまして。今回初めてbotおよびphpに挑戦する初心者です。
こちらのサイトを参考にしてがんばってみたのですが、bot.phpを実行すると以下のようなエラーが返ってきます。
-----ここから-----
Twitterへの投稿に失敗しました。
ユーザー名:@***** (伏せます)
object(SimpleXMLElement)#10 (2) {
["request"]=>
string(20) "/statuses/update.xml"
["error"]=>
string(19) "Incorrect signature"
}
-----ここまで-----
おわかりの方いらっしゃいますでしょうか? どこをチェックしなおしたら良いか、アドバイスをいただけると嬉しいです。
よろしくお願いします。
そろそろ>>575 再確認の時期ですよ!>初心者の皆さま
初めまして。wikiや他の場所でも検索したのですが
どうしても解らなかったのでこちらで質問させて頂きます。
昨夜試しにbot.phpを実行してみたのですが、
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in *****(URL)/EasyBotter.php on line 8
という表示が出てきました。
EasyBotter.phpは特に触っておらず、
そこの8行目に呼び出されると思われる
setting.phpのidも確認したのですが
全角、構文ミス、id入力ミスなどもないです。
こういった例で、他に何か見落としがちなミスなどはありますか?
はじめまして。
試しにbotを動かしてみたら、投稿には成功したのですが、文字化けしてしまいました。
いろいろいじってみたのですが直りません;
原因は何でしょうか?
>>766
文字コードが何で保存されているか確認してください。
文字コードを間違っていると文字化けされます。
>>765
基本、いじるのは setting.php の""内と、 bot.php 、( data.txt 、 reply_pattarn.php )のみです。
bot.php をもう一度精査してみてください。
766です。文字コードはUTF-8で保存してあります。
改行コードはLFです。これで合っていますよね?
やっぱり文字化けのままです;
>>769
もし可能ならUTF-8N/LFで保存してみて
それとFTPが文字コードを勝手に変換する場合もあるので、そのあたりも確認を
申し訳ございません。質問させてください。
【バージョン】 EasyBotter2.03beta
【設置鯖名】 @pages
【PHPのバージョン】 5.2.6
【実行】 GAE-Cron(4分間隔)
【手動】 動く
【不明点など】 リプライを返さない
ランダムポストはするのですが、リプライが返ってきません。
リプライをしてからbot.phpにブラウザでアクセスしたところ、
成功ともエラーとも出ず、真っ白な画面になります。
4分経つと「4分以内に受け取った@はないようです。」と表示されます。
どなたかアドバイスをお願いいたします。
>>771
昨日あたりからTwitterの重さでエラーがちょくちょく出てる気がする
Twitterが原因でないならlog.datをうpし直してみたら直るかも
>>771
白い画面ということは、 php の構文エラーも考えられます。
reply_pattern.php に本当に間違いがないか確認下さい。
元々のファイルと見比べるのも1つの方法です。
あと、2.04beta をお使い下さい。
一見、普通の女の子の日記ですが、
ある事をした後に更新しています。
かなり中毒性が高いので注意が必要かもしれないです。
ttp://stay23meet.web.fc2.com/has/
一見、普通の女の子の日記ですが、
ある事をした後に更新しています。
かなり中毒性が高いので注意が必要かもしれないです。
ttp://stay23meet.web.fc2.com/has/
すみません、基本的な質問です。
【バージョン】 EasyBotter2.03beta
【設置鯖名】 シーサイドネット
【PHPのバージョン】5.2
【実行】 GAE-Cron(10分間隔)
【手動】 動く
【不明点など】
data.txtやreply_pattern.phpに入れていない文言が出たときに
【その言葉は覚えてません】という言葉で返したいのですが、どこに何を入れたらよいのでしょうか?
・・・・・・・・・・・・?
data.txtがそうじゃないの?
data.txtはつぶやきですよね?
ではなくて、【その言葉は覚えていません】とだけ出したいのです。
no_reply.txtというファイルに【その言葉は覚えていません】という単語だけを入れて
$response = $eb->reply(10,"no_reply.txt","reply_pattern.php");
としましたが、反応がありません。
それはおかしいと思う
文字コードが合ってないんじゃない?
>>779
初歩的ミスでした、文字コードでした、すみません。
失礼します。質問させてください。
【バージョン】 EasyBotter2.04beta
【設置鯖名】 @page
【PHPのバージョン】5.2.6
【実行】 GAE-Cron(2分間隔)
【手動】 動く
【不明点など】
@とTLのリプを区別するために通常のreply_pattern.phpとは別に、TL用にtlreply_pattern.phpを作ってbot.phpのファイル名のところを変更しました。
すると、通常、TL両方のリプに反応しなくなってしまいました。
bot.phpを調べてみると、EasyBotter.phpの on line 279でエラーが出ていることがわかりました。
エラーが出たのはEasyBotter.phpでの構文がreply_pattern.phpに設定されているからだと思い、
PHPの正規表現なども調べてみたのですが、どうにも行き詰ってしまいました。
どなたかご教授をお願い致します。
>>781
bot.phpで記述した指定部分をコピペしてみて
>>782
レスありがとうございます。以下がbot.phpでの指定部分です。
$response = $eb->replyTimeline(1,"tlreply_pattern.php");
文字コードはUTF-8のLFです。
bot.phpで上記以外にいじったのは
if(rand(0,4) === 0){
$response = $eb->postRandom("data.php");
}
の部分のみです。
>>783
リプの記述の方は?
余談
bot.phpに記述するreplyTimeline(などの後に続く数字は、○分以内にあるものを取得するという部分なのでcronで叩く分数と同じか、それ以上でなければ○分よりも前の部分のリプは無視します。
>>762
>>763
の方とにたようなエラーが出ます。
=================================
Twitterへの投稿に失敗しました。
ユーザー名:伏せておきます
object(SimpleXMLElement)#10 (2) {
["request"]=>
string(20) "/statuses/update.xml"
["error"]=>
string(22) "Status is a duplicate."
}
=====================================
と出てきました。
どうすればいいでしょう?
>>785
Status is a duplicate=ツイート重複
>>786
ありがとうございます。
発現パターンが少なかったってことですね。
問題解決しましたありがとうございます
はじめまして。bot generatorを使ってボット作成中です。
返信機能について、bot generatorの利用ガイドには、ランダム返信か、
一対一の返信パターンの登録しか載っていませんが、これを組合せて
「おはよう」→「おはよ〜」「おはよ」「おはようございます」からランダムで表示
というような返信を登録することはできますか?
>>788
「おはよ」に対応する語句を複数登録でFA
>>789
788です。できました!ありがとうございました。
>>784
ご指摘のとおり、reply_pattern.php、tlreply_pattern.phpのPHP構文に間違いがあったようで、
その部分を削除したところ、反応してくれるようになりました!
ただ手動で動作確認をしていると、リプライに対してだと思うのですが、
Warning: file_get_contents() [function.file-get-contents]: Unable to access data.txt in /usr/(略)/EasyBotter.php on line 406
Warning: file_get_contents(data.txt) [function.file-get-contents]: failed to open stream: No such file or directory in /usr/(略)/EasyBotter.php on line 406
という警告?が出ます。
EasyBotter.phpの406行目を見てみると、
//つぶやきデータを読み込む
function readDataFile($file){
if(preg_match("@\.php$@", $file) == 1){
require_once($file);
return $data;
}else{
$tweets = file_get_contents($file);
$tweets = trim($tweets);
$tweets = preg_replace("@".$this->_dataSeparator."+@",$this->_dataSeparator,$tweets);
$data = explode($this->_dataSeparator, $tweets);
return $data;
にある
$tweets = file_get_contents($file);
この部分ということになるみたいです。
このEasyBotter.phpの警告はbot.phpの
$response = $eb->postRandom("data.php");
の部分を
if(rand(0,4) === 0){
$response = $eb->postRandom("data.php");
}
にすると出てくるようでした。
でも一応通常リプもTLリプにも反応してくれるようになったので、放って置いても大丈夫なのでしょうか・・・?
それから余談のお話とても参考になりました。本当にありがとうございます。
【バージョン】 EasyBotter2.04beta
【設置鯖名】 ロリポップ
【PHPのバージョン】5.2.6
【実行】 GAE-Cron(15分間隔)
【手動】 動く
【不明点など】
1.4から2.04betaへ移行いたしました。bot.phpの
//=============================
//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");
この部分のみを変更(頭の//を取っただけです、以下の文章には触れておりません)し、
実行のGAE-Cronを2分間隔にし手動テストを行った際は、
通常POST、@で話しかけられたときにリプライ、タイムラインの単語に反応してリプライ、
すべてがきちんと動きました。
ここから、本番へ移行させるに当たり、実行のGAE-Cronを15分間隔に設定したところ、
通常POSTおよび@で話しかけられたときのリプライは反応しますが、タイムラインの単語には
反応しなくなりました。
そこで、//// cronを実行するたびに毎回実行するのではなく、以降のプログラムの頭に//を
つけ、反応させないようにすればよいのか?と思い、着けてみたものの変わらず。
実行するところの、
//$response = $eb->postRandom("data.txt");
を
if(date("i") % 15 === 0){
$response = $eb->postRandom("data.txt");
}
にしてみたのですがこれも変わりませんでした。
エラー等は出ません。bot.phpを叩きに行けば反応はします。
wikiや掲示板を見たのですが、わからないため質問させていただきます。
宜しくお願いします。
【バージョン】 EasyBotter2.03beta
【設置鯖名】 @pages
【PHPのバージョン】 5.2.6
【実行】 GAE-Cron
リプライとTL拾うのと自動フォロー返し&フォローの際
メッセージ送るとかは成功しています。
3分間隔で実行してましたが
1時間おきに定期ポストをすべく
wikiや、ここの過去ログ見て、いろいろ試しましたが
どうしても、定期ポストができません。
if(date("i") == 0){
$response = $eb->postRotation("teikidata.txt");
}
にして、2分間隔で実行するように変更したのですが
ポストしません。
if(date("i") == "0"){
if(date("i") == 0){
if(date("i") % 30 === 0){ ←試しに
どれもダメでした。
どこがどうダメなんでしょうか?
ご指導お願いします。
えっと、他との絡みがおかしいのでしょうか?
//=============================
//EasyBotterを呼び出します
//=============================
require_once("EasyBotter.php");
$eb = new EasyBotter();
//=============================
//botの動作をここに書いてください
//先頭に//がある行はコメント扱いなので実行しません。実行したい行の頭の//を削除してください。
//=============================
$response = $eb->autoFollow();
//$response = $eb->postRotation("data.txt");
$response = $eb->reply(2,"data.txt","2reply_pattern.php");
$response = $eb->replyTimeline(2,"reply_pattern.php");
if(date("i") == 0){
$response = $eb->postRotation("teikidata.txt");
}
/*
よろしくお願いします。
>>793
cronスレとかで既出の情報だけどGAE-CRONは実行時間がジャストじゃないことがあるらしい
if(date("i") >= 0 && date("i") < 3){
これでテストしてみたらどうかな
>>795 様、ありがとうございます。
早速テストしてみます。
そして今
User is over daily status update limit.なので、
明朝確認してみます。
>>795
if(date("i") >= 0 && date("i") < 3){
より
if(date("i") < 3){
の方がスマートだね
たまにツイート重複にかかってる人いるけど、テスト中はツイート削除しちゃえばいいよ
一度削除すれば重複にならないから
>>795 様
>>797 様
いろいろ教えていただきありがとうございました。
ポストできるようになりました。
ただ、同じ台詞ばかり1時間おきにポストしてるようなので
336も台詞用意してるのに?!
また、調べてみます。
質問させていただきます。
フォロワーAが「ひらけ」、フォロワーBが「ゴマ」とTL上で呟いた際に、
A,Bの両名に「@Aと@Bが扉を開きました」のようなリプライを飛ばしたいのです。
これってeasybotterをいじって出きるようなものなんでしょうか?
771です。
>>772 様
>>773 様
遅くなりましたがご回答ありがとうございました。
twitterの重さが原因だったようです。解決いたしました。
ありがとうございました。
初心者ながら色々調べてbotを作ろうとしている者です。
時間帯別で発言させる設定はなんとかできたのですが
日曜のみ発言内容を変えたいのですが
どのように組み入れるべきでしょうか?
PHPの参考サイトを見ても、よく理解できなくて;
お手数ですが、ご教授ください。
>Twitter APIのBASIC認証は2010年6月に廃止予定
>>801
時間別が出来てるみたいなのでヒントを
曜日を取得するのはdate("w")。日曜が0〜土曜が6
>>798
rotationで実行してるのなら、データファイルのパーミッションを666なり606なりに変えてみて
というかねー、bot.phpの時間分岐で云々言ってる人たちー
date関数や演算子についての解説サイトがwikiからリンク貼ってあるんだし、それくらい確認しようなー
>>791
つぶやきデータファイルについて、 data.txt から data.php に変更していて、
かつ postRandom() 、 postRotation() 、 reply() のいずれかで初期値を省略していますね。
data.txt は省略時の初期値ですので、存在しないとエラーになりますね。
省略をやめるか、 data.txt を空のファイルにすると読み込みエラーはなくなります。
>>792
>>575 や wiki チェックされました?
bot.php より
> //@で話しかけられたときにリプライしたい
> $response = $eb->reply(cronで実行する間隔(単位:分), "データを書き込んだ〜", "パターン反応〜");
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> //タイムラインの単語に反応してリプライしたい
> $response = $eb->replyTimeline(cronで実行する間隔(単位:分),"パターン反応〜");
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>799
できます。ただしもちろん、特別処理をすればです。
要改造。初心者スレの範囲外です。
そうですねえ。
TL 取得時に別途キーワードチェックして、照合時に外部ファイルに touch() 。
相方のキーワードが来たら、外部ファイルを見て、 OK ならツイート、かな。
キーワードを『』で囲むとかすれば、正規表現で判定しやすいでしょうね。
関数化した際の値渡しもできますし。
やっぱりGAE-CRONは実行時間がジャストじゃないことがあるらしいのか
1時間おきにPostできたり、まったくしなかったり。
調子が良いと
if(date("i") >= 0 && date("i") < 3){
だと、1時間ごとにダブルPOSTしました。(0分ジャストと1分)
if(date("i") < 3){
に変更したらタイミング悪かったのか?POSTしませんでした。
GAE-CRONのせいでしょうか?
GAEがずれてる場合もあるけど
CRONとサーバーの時間がずれてる場合もあるので
できれば生ログを見てGAEの接続タイムを調べた方がいいよ
>>809
if(date("i") >= 0 && date("i") < 3){
if(date("i") < 3){
この二つはどちらも同じ意味だよ
だから、ダブルPOSTしたりPOSTしなかったりってのはこのifが原因ではなく
CRON・鯖のどちらか、または両方がいけなかったんじゃないのかね
そしてtw.txtとreply_pattern.phpとlog.datのパーミッションを666に設定してください。
と書いてあるのですが、
log.datがありません;
どこにあるんでしょうか??
>>810 様
>>811 様
ありがとうございます。
CRONとサーバーの時間がずれてる場合ですか?
どうやって調べて
どうやって、調節するのかわからないので
ちょっと、ぐぐってみます。
いつも助言ありがとうございます。
>>812
>>734-735 で
下記のエラーが出ました。
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /アドレス/EasyBotter.php on line 8
サーバーはヘテムルです。
検索しましたが対処方法がわからず…お知恵を貸してください><
>>812
>>737 も追加で。
>>815
>>575 や wiki はチェックされました?
syntax error は php 構文エラーです。
"}" がおかしい、と指摘があります。
指定している bot.php 、 setting.php 、 reply_pattern.php をチェックください。
うらさんありがとうございます。
php5ではなかったようで、5にしたら動きました^^
また、bot.phpの設定を下記にしてるのですが
$response = $eb->autoFollow();
$response = $eb->reply(5,"data.txt","reply_pattern.php");
if(rand(0,4) == 0){
$response = $eb->postRandom("data.txt");
}
if(date("n") == 5 && date("j") == 5){
$response = $eb->postRandom("birthday.txt");
}else{
$response = $eb->postRandom("data.txt");
}
5回に1回ではなく今のところ毎回書いてるのですが原因は何でしょうか?
もしお分かりになられましたらご回答をお願いいたします。
こちらを参考に、何とか設置。
定期ポスト、リプライまではできています。
Wikiの
「特定のアカウントに対しては、別のリプライパターンを読み込ませたい」を
加えようと思い、EasyBotter.phpに追記しましたが、リプライが返って来ません。
ソースは以下の通りです。
//リプライパターンと照合
if(!empty($this->_replyPatternData[$replyPatternFile])){
//■■特定の人には別パターン■■
$userName = (string)$reply->user->screen_name;switch($userName){
case "****"://****というアカウント名に対して
$replyPatternFile = "xxx_pattern.php";//xxx_pattern.phpを適用する
$this->_replyPatternData[$replyPatternFile] = $this->readPatternFile($replyPatternFile);
break;
}
foreach($this->_replyPatternData[$replyPatternFile] as $pattern => $res){
どこかおかしいでしょうか
ご教授願います
【バージョン】 EasyBotter2.04beta
【設置鯖名】 @pages
【PHPのバージョン】 5
【実行】 GAE
【手動】 動く
data.txtの内容が200行くらいあるんですが、
こういう場合分散させたほうがいいんでしょうか?
>>818
randはあくまでランダムですので、連続で外れる場合も有れば当たる場合もあります。
>>819
>>751-755
>>821 様
失礼しました;
同じ内容があったのですね
舐めるようにここを見たつもりでしたのに、お恥ずかしいです
ご親切にありがとうございました
もう一度確認してみます
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /home/sites/lolipop.jp/users/サイトアドレス/web/al_bot/EasyBotter.php on line 8
と出てしまいます。
ここで質問されている方もいらっしゃったので、replyの構文も、全部チェックしたのですが
全角を使ったものや、閉じ忘れも何度確認しても見つかりませんでした。
初心者は最低ラインで始めると良いと書いていたので
dateだけを読み込む形にもしてみたのですが、変わらず同じエラー文が出ます。
この表示だと、構文エラー以外には有り得ないのでしょうか?
何時間もあれこれ読んでいるのですがさっぱりわからず………。
ご伝授いただきたいです……!
>>823
>>575 のwikiの通りにやってる?
やってないならwikiにある通りにやってみて
>>824
別窓で開いて、平行して見ながらやりました…。
自分じゃ気付かない何かが違うのかもしれないです…。
OAuth認証がうまくいってない、という可能性はないのでしょうか?
テンプレ通りにやれば出来そうだと思ったんですが…難しいです。
またゆっくり頑張ってみます。
また現在ボットジェネレーターを使用しているのですが
こちらと併用して自サーバでも動かす、という事は出来るのでしょうか?
例:
リプライは自サーバ、時間を指定してのTLはボットジェネレーター使用、等
>>825
}が足りないってエラーなんだから、データファイルに何かしら不足があるか、余計なものがついてるか
そのくらいだと思うんだがねえ……勿論、データファイルはDLしたまま弄らずにアップしてテストしてるんでしょ?
併用はできるよ、via〜の部分が違うだけ
>>818
っと、postRandom() が重複してますよ。
誕生日判定の例外時もにツイートする設定になってますので、
叩かれるたびにツイートしてしまいます。
} else {
のところを、
} else if(rand(0,4) == 0) {
にして、前段のを取ったらよろしいかと。
>>823
php5 ではないという可能性は?
>>815 ,818 参照
あと>>575 の質問テンプレを使ってもらえるとより状況がわかります。
こんにちは。
botを設置して快調に動いているのですが、
リプしても、リプが返ってこない時が多いのですが、
これはやはりサーバーの問題でしょうか?
【cron】GAE
【鯖】有料鯖
【php】5
追記失礼
EasyBotter 最新版で文字コードもUTF-8N LFにしてあります。
リプが返る人と返らない人がいます。
たびたび質問すみません。
1時間おきのランダムポストが
2時間おきとか5時間おきになります。
Google app engineを見ると
15 secs late Success だったり、27secs late Successです。
2分おきに動かしてたのですが
3分おきに変更してみました(あまり関係無いのだろうけど)
それで
3分おきでも
if(date("i") >= 0 && date("i") < 3){
if(date("i") < 3){
は、同じでいいでしょうか?
何か、対処方法とかありましたら、助言お願いします。
すみません、2分おきだからこそ
if(date("i") >= 0 && date("i") < 3){
if(date("i") < 3){
ですね。
板汚してすみません。
>>831
if(date("i") >= 0 && date("i") < 3){ ←0分以上かつ3分未満=0・1・2分
if(date("i") < 3){ ←3分未満=0・1・2分
3分以上の間隔のCRONでないとダメだよ
0分のジャストタイムから2分間隔だと0分と2分で実行されちゃうじゃない
>>832
え・・・そうなんですか?
ていうか、もう、2分間隔でも3分間隔でも
POSTしないんで、迷路みたいです;;
0分だと、混雑してるとかでしょうか?
すみません、30分おきにして
ま、最悪、1時間に1回POSTしてくれたらいいなとか
if(date("i") % 30 < 33 === 0 && date("i") < 3){
これは、おかしいですか?
>>834
date関数と演算子と比較演算子の勉強をしてください、>>575 を参考に
すごくおかしい
失礼ます・・・!
TL反応さえたいのですが、どうしても出来ません。
ただいま手動で行っているのですが、bot.phpを叩いた時にどうしても下記の表示がでてしまいます。
Warning: preg_match() [function.preg-match]: Compilation failed: nothing to repeat at offset 0 in /usr/local/www/htdocs/re1869/public_html/twitbot/EasyBotter.php on line 279
Warning: preg_match() [function.preg-match]: Compilation failed: nothing to repeat at offset 0 in /usr/local/www/htdocs/re1869/public_html/twitbot/EasyBotter.php on line 279
Warning: preg_match() [function.preg-match]: Compilation failed: nothing to repeat at offset 0 in /usr/local/www/htdocs/re1869/public_html/twitbot/EasyBotter.php on line 279
Warning: preg_match() [function.preg-match]: Compilation failed: nothing to repeat at offset 13 in /usr/local/www/htdocs/re1869/public_html/twitbot/EasyBotter.php on line 279
Warning: preg_match() [function.preg-match]: Compilation failed: nothing to repeat at offset 0 in /usr/local/www/htdocs/re1869/public_html/twitbot/EasyBotter.php on line 279
EasyBotter.phpが原因なのかと思ったのですが、279行は一切編集していない状態です。
因みに、
if(preg_match("@".$pattern."@u",$text, $matches) === 1 && !preg_match("/\@/i",$text)){
が279行に当たります。
使用サーバーは@pages
EasyBotter2.04beta
を使わせて頂いております。
他、定期ポスト、リプライは問題なく稼動しております。
どなたか、宜しくお願い致します。
なんか最近エラー多い気がする
Twitterが重いからかな
初めまして
【バージョン】2.04 beta
【設置鯖名】@pages
【PHPのバージョン】PHP-5.2.6
【実行】 GAE-cron
【手動】 動く
【不明点など】自動ポストしない
一昨日初めてbotを作成したんですけど、自動ポストをしてくれません。
手動ではポスト成功します。あとGAEで動作確認をすると
「on time Success 」と出ますが、やっぱり自動でポストしません。
このスレやcronのスレ見てもいまいち分からなくて…
http://ko-lab.net/twitter/google-app-enginegae%E3%81%A7cron%E5%8B%95%E3%81%8B%E3%81%99%E3%82%84%E3%82%8A%E6%96%B9%E3%82%92%E3%82%86%E3%81%A8%E3%82%8A%E5%90%91%E3%81%91%E3%81%AB%E3%81%BE%E3%81%A8%E3%82%81%E3%81%A6%E3%81%BF/
のページを参考にして全部やったんですけどあり、足りないものとかあるんでしょうか?
特にエラーメッセージなどは見ていません。
アドバイスよろしくお願いします
>>838 です
適当にやり直したら自動ポストできました。
失礼しました。
【バージョン】2.04 beta
【設置鯖名】@pages
【PHPのバージョン】PHP-5.2.6
【実行】 GAE-cron
【手動】 動く
【不明点など】
>>838 です。何度もすみません
前の問題は解決して、自動ポストは出来るようになったんですけど
自動リプライができません。
手動だとリプライできるんですけど…
いろいろ探してても良く分かりませんでした。
何回かファイルも書き換えたりしてます。phaさんの使ったり、wiki参考にしたりしました。
GAEの動作確認もsuccessのままです。自動リプライが出来ない原因のアドバイスお願いします。
bot.phpの中身↓
<?php
//=============================
//EasyBotterを呼び出します
//=============================
require_once("EasyBotter.php");
$eb = new EasyBotter();
$response = $eb->reply(2,"data.txt","reply_pattern.php");
$response = $eb->postRandom("data.txt");
$response = $eb->autoFollow();
?>
正規表現についてなのですが、()の入れ子って可能でしょうか?
例えば、
"((おはよ|オハヨ).?|お早う)(ございます|ゴザイマス)?"
で
「オハヨ」にも「おはよう」にも「お早うゴザイマス」にも対応できますか?
正規表現の解説サイトとかも見てみたのですが入れ子については
よくわからなかったので、よろしくお願いします。
>>841
できますよ。
あいさつについては、うらはこうしてます。
> お(早|はよ|はや)|オハヨ|グ(ッ|ン)(.*)モーニン
>>828
それだけでは何ともいえません。サーバの問題かと聞きながら、鯖名もあげないのでは。
リプライが成功する場合もあることから、リプライパターンのエラーとも推測できますが。
>>836
その279行目は、リプライパターンを検証している処理です。
そこでエラーが検出されるということは?
>>840
その reply() で指定している「cronで実行する間隔」と、実際の cron 間隔とは同じですか?
>>841
ついでに。
テキストエディタに、正規表現で検索できるものがあります。
鯖に上げる前に、これでちゃんと引っかかるかテストしてみるのもありです。
>>844
どうもありがとうございます。
事前にローカルで確認できるならそれが一番いいので
よさそうなエディタ探してみることにします。
>>843
replyは2分で、cronは5分にしてました。
今どっちも5分に直したのでこれで様子を見たいと思います。
アドバイス本当にありがとうございます!
失礼します
どなたかご教授いただけたらなと思います><
先ほどリプライ・TLに反応するパターンを書きなおして更新したところ
なぜか急にTL(に反応語句がある場合)に対するリプライと
通常ポストを2重ポストするようになってしまいました
bot.phpには全く触っていないのですが;
先ほど更新するまでは普通に動いていました
ざっとifやbot.php 二重で検索してみたのですが見当たらず
見落としている可能性が高いので、参考になる記事でも教えていただけたら幸いです…;
はじめまして。
bot作成でいつも参考とさせていただいております。
【バージョン】Easybotter 2.03beta
【設置鯖名】さくら
【実行】GAE-Cron
【不明点など】
0〜9の数字1文字のみのリプが来た時に特殊な返信が出来たらいいなと思って数字1文字の$dataを追加したのですが、まったく当て嵌まらない時にもそこを通過してしまうようになってしまいました。
$data = array(
//「会話終了」を含む発言を受け取るとリプライを返さなくするサンプルです
"会話終了"=> array(
"[[END]]",
),
"[00]"=> array(
"0を受け取りました",
),
"[11]"=> array(
"1を受け取りました",
),
"[99]"=> array(
"9を受け取りました",
),
);
具体的に言うと、これでbotに「ばーか」と言うと「1を受け取りました」と返ってきます。
これは正規表現がおかしいのでしょうか。でもなんで1・・・
素人丸出しな質問で申し訳ないのですが、ご教授いただけないでしょうかorz
848です。
先程はくだらない質問をしてしまい申し訳ありませんでした。
自己解決いたしました。
botのIDに数字が入っているのが原因じゃないかと思われます。
ありがとうございましたorz
>>843 様
ありがとうございます。
ここでエラーが検出されるというのは、もしやパターンを記入したファイルの方がおかしいのでしょうか?
見直してみることに致します。
>>847
>>575 のチェックや wiki はご覧になりました?
状況がよく分かりませんので、テンプレを使って下さい。
なお、 TL リプライとランダムポストが同時に動く場合、連続投稿は仕様通りです。
>>848
2.04を使うことで解決すると思われます
修飾子がないのが原因かと
>>848
おまちなさいww
"^\@userID ([\d0-9])$"=> array(
"$1を受け取りました。",
),
とすればいいのです。しかも定義1つですみます。(おそらく動くと思うのですが)
要は、 @userID で始まり、半角スペース、最後が0〜9または0〜9の1文字にマッチします。
で、() 内の文字を $1 で受け取ることができます。
すみません、ちょっと質問させてください。
【使用鯖】@PAGES
【cron】GAE
【バージョン】EasyBotter2.04beta
@で送るツイートに反応してくれません。気まぐれのようにTLに反応します。
とりあえず設置は出来ましたし定期POSTもしてくれるのですが、それ以外をしてくれない気まぐれbotが出来てしまいました。
それから@で送らないと反応しないツイートのパターンもreply_pattern.phpに入れていいのでしょうか?
さらに時折二重投稿をしてしまいます。
dataはtxtの拡張子を使用しているのですが、この二重投稿も解決したいと思っています。
設置の手順は
http://pha22.net/twitterbot/
http://www.sdn-project.net/labo/oauth.html
http://ko-lab.net/ (Google App Engine(GAE)でcron動かすやり方をゆとり向けにまとめてみた)
を参考にしました。現在も動いています。
cronの設定に関しても質問したいのですが、とりあえずは@でリプしてくれない、気まぐれにTLに反応する、@で特定の言葉に反応して欲しい。
この3つについてわかる方がいらしたらご教授お願いしたいと思います。
ちなみに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");
と設定しています。
したらばのみなさん初めまして!
きょうへいといいます。21歳です。
キョウヘイザワールドというホームページで イラスト・漫画・日記等を更新中のKyoHeyです。
ゲームのグラフィックデザイナーを目指しております。
自分の作品についてのつぶやきはもちろん、ゲームが大好きなので、ゲームの最新情報などなどもつぶやいちゃいます。
ファンクラブに入ってくれた方は
KyoHeyイラストの描き方を紹介しちゃうよ?
スカウトお待ちしております。
公式ページttp://homepage2.nifty.com/A-KU/
人気投票、掲示板に一言もらえるとがんばれます><
一応プロとしてやっていきたいと考えているんですけど、評価をしていただきたいです!><
TLにも@にもちゃんと反応して完璧だ!と思ったのですが
「ランダムPOSTを●分おき、リプライを▲分おきにしたい!」がうまくいかないみたいで
cronの更新毎にツイートしてしまいます
【バージョン】2.04 beta
【設置鯖名】@pages
【PHPのバージョン】PHP-5.2.6
【実行】 GAE-cron
【手動】 動く
【不明点など】
cronの間隔を2分ごとにすると2分毎に発言してしまいます。
なにか書き方を間違えているのでしょうか・・・
<?php
require_once("EasyBotter.php");
$eb = new EasyBotter();
$response = $eb->reply(2,"data.txt","reply_pattern.php");
$response = $eb->postRandom("data.txt");
$response = $eb->autoFollow();
$response = $eb->replyTimeline(2,"tl_reply_pattern.php");
if(date("i") % 30 === 0){
$response = $eb->postRandom("data.txt");}
?>
教えてくださると嬉しいです。
>>856
以下の「★」部分の行を削除すればいいんじゃないかな。
<?php
require_once("EasyBotter.php");
$eb = new EasyBotter();
$response = $eb->reply(2,"data.txt","reply_pattern.php");
★$response = $eb->postRandom("data.txt");
$response = $eb->autoFollow();
$response = $eb->replyTimeline(2,"tl_reply_pattern.php");
if(date("i") % 30 === 0){
$response = $eb->postRandom("data.txt");}
?>
自分も設置当初まったく同じ状況になりすごく困ったのでw
もしこれで直れば嬉しいです。
>>857
おおおお・・・!!!
そうか!本当だ!なぜ気付かなかった私
正常に30分置きにツイートするようになりましたありがとうございます!!助かりました!
これでbotの基盤完成ですやったー!
>>852 >>853
848です。
おおお…ご丁寧にありがとうございますっ!
早速バージョンを2.04にして853さんの方法を試してみたいと思います。
本当にありがとうございました!
>>854
リプライの方は、cron 間隔と関係していると思われます。
このスレをたどれば、解法が見えてくると思われます。
>>575 の wiki にもありますが、いきなり全機能を使うのではなく、
動くところから1つずつ機能を追加していきましょう。
そうでないと、何が原因で動かないのか分からなくなります。
>>854 です
パーミッションの設定を忘れていただけでした;;
>>860 うら様
ありがとうございました、自己解決できました
>>861
動きましたか。それは良かったです。
ところで、 bot.php の機能指定ですが、>>854 の通りで大丈夫ですか?
使うデータファイルは、別にした方が良いのではと思います。
まあ、運用次第ではありますが。ご検討下さいませ。
>>854 、>>862 です
>>862 うら様bot.phpですが、>>854 のままでは駄目でした。
>>857 さんの呼び出し方をコピペして指示通りにしたら動きました。
それからTLと@のリプライを別のデータに分けました今のところ問題なく動いています。
本当にありがとうございました
【バージョン】2.04 beta
【設置鯖名】@pages
【PHPのバージョン】PHP-5.2.6
【実行】 GAE-cron
・今まで正常に30分に1回喋ってた
・reply_pattern.phpはいじったけどbot.phpには触ってない
・でも全く動かないわけじゃなくて数時間に1回くらいツイートしてる
・TL、@には反応する
これってcronが不調ってことなのですかね?
でもTLと@には反応するのは・・・うーん・・・
今日はtwitterが重いのかなんなのか
うちのbotも毎回は投稿できてない感じ。
ログ確認したらこの文章を投稿しましたと書き込まれてるけど
実際には投稿出来てないという…
GW入ってからTwitterがいつも以上に重いので連休明けまで様子見した方が良いと思うよ
Twitter閲覧ソフトもエラーで読みこめないことが多いし
>>865 >>866
あ、そうなのか それを聞いて安心しましたありがとう
GWが終わるのを待つことにします
初めまして。bot作成については本当に初心者です。
テストを兼ねて、ファイルはそのまま中身を弄らないものをそのまま自分のサーバーにアップしました。OAuth認証用のキーも組み込み、
FTPにアップロードした際パーミッションも変えました。
そして、最終段階でブラウザに「Twitterへのpostに成功しました。」のメッセージが出ません。
文字コードや改行も守ったのですが、後、考えられるミスは何でしょうか。
本当にすみません。お願い致します。
>>868
まずはテンプレを使うことから始めようか
手動でなったのかどうかも書いてくれないと
どんなミスでしょうか?と聞かれても分からないよ
はじめまして。昨日よりbot作りを始めた初心者です
何とか手動でのテストを終え、cronを設定すべくGAEに登録しようとしたのですが、携帯アドレスを入力する画面から先に進めません
なぜか自分のドメインを入力しても
There were errors:
* Mobile Number or Username
とエラーになってしまいます
間違いなく自分が使っているアドレスですし、キャリアの選択も間違っていません
botの動作についての質問ではなく申し訳ありません。この場合はもうどうしようもないのでしょうか。何がいけないのでしょうか…
どなたかわかる方いましたらご教授お願いいたします
>>870
それだけでは全然状況が分からないんですけど?
もしかしてメールアドレス全部入れたとか?
Usernameは@前のアカウントだけでいいんだけど
エラーは英文だから自動翻訳サイトにいって
何を言われているか検索するくらいの努力したら?
>>871
Google App Engine(GAE)でcron動かすやり方をゆとり向けにまとめてみたのページを参考に、
ちゃんと@の前部分のみを入力しています
国は日本、キャリアはドコモですのでそれを選択しました
Usernameには正確に自分のアドレス(@の前まで)を入力しています
いろいろ試した結果、アドレスの中で.がふたつ連続しているのがいけないようなのですが、実際そのアドレスを使っている以上どうしようもありません
http://code.google.com/intl/ja/appengine/ から登録→reate an Application→でアドレスがはじかれてしまう、としか言いようがありません
他にどのような情報が必要でしょうか。それすらわからないのでどんな初心者レベルの質問でもしていいというこちらで質問させていただいています
エラー文にはエラーが起きたからもう一度試せとしか書かれていません
このためにアドレスを変えるわけにはいきませんし、もう無理だから諦めるしかないのでしょうか
申し訳ありませんが、もういちどよろしくお願いします
【バージョン】2.04 beta
【設置鯖名】@pages
【PHPのバージョン】PHP-5.2.6
【手動】動く
すみません、追記です
googleのページにもありましたが、ドコモはダメのようですね…
+81でもだめでしたし、諦めるほかないようです
下調べ不足失礼しました…何とかならないものでしょうか…
data.txt内で優先度をつけるようなことは出来ますか?
このセリフを優先的にツイートしてその他はそこそこにツイートして・・・みたいな
>>874
優先させたいポストを複数入れとく
もしくはif・else等で確率操作して読み込ませるファイルをわけるとかね
折角時事ネタ入れてもツイートしてくれなかったら悲しいなあって
>>875
ああなるほど!
作中セリフが大量にあるのでファイルを分けるほうでやってみたいと思います。
自分でも今からやり方探しに行きますが
できればやり方も教えていただけませんか?
>>877
>>575
>>877
んーと、携帯からなのでソースを書きにくいんだが
>>575 と公式解説の「5回に1回ポスト」のあたりを参考にしてみて
この条件分岐を「●回に■回はa.txt、それ以外はb.txtからポスト」みたいにすれば簡単
細かくしたいなら時間ごとに読み込ませるファイルを変えるとかね
■■■初心者の皆さんへ■■■
くどいけど、>>575 を一度くらいは見てください、ちょっとした知識で解決することもあります。
初歩的過ぎる質問は>>575 読めでスルーされてしまうかも…?
というわけで、まずは>>575 を読もうね!
ありがとうございます!がんばってみます!
switch(true)の中にifって入れられますか?
switch(true){
case $now_g == 'sleep' : //寝ている時間帯だったら空の配列を指定
$plist = array();
break;
case ($now_g == '23')&&($now_i >= '30') : //23時台かつ30分以降だったらおやすみメッセージの配列を指定
$plist = $mes['night'];
break;
case ($now_g == '7')&&($now_i <= '30') : //7時台かつ30分以前だったらおやすみメッセージの配列を指定
$plist = $mes['morning'];
break;
default : //それ以外の場合はランダムメッセージ配列を指定
$plist = $mes['rand'];
break;
};
これの、最後の$plist = $mes['rand'];を
if(date("i") % 30 === 0){$response = $eb->postRandom("data.txt");}
に換えても大丈夫なのでしょうか?
はじめまして。
準備したテキストを順番にポストしていって、準備した中から「めでたしめでたし」が投稿されたらbotの投稿をそこで止め、その後また初めから再開させる場合は、どうしたらいいのでしょうか?
わかる人ご教示ください。よろしくです。
はじめまして
reply_pattern.phpの編集で
タイムラインに反応して@を返すスクリプトの雛形をください><
>>883 >>884
まずは>>575 見てみたら?
wikiのとおりやっていけば、基本機能についてはわからないはずないのだが?
>>885
あまり触らない方がいいかと。冷やかしなんだし
初めまして。質問させて下さい。
必要な準備を済ませてファイルを全てアップロードしたと思うのですが、
object(SimpleXMLElement)#10 (2) {
["request"]=>
string(20) "/statuses/update.xml"
["error"]=>
string(33) "Read-only application cannot POST"
}
70分以内に受け取った@はないようです。
というエラーが表示されてしまい、手動postができません。
バージョンは2.0、設置鯖名は @pagesです。
パーミッションも指定された3つは666に設定されています。
素人なので、エラーの原因がわからず困窮しています。
このあたりにエラーの原因があると思われる、等でも結構ですので、
何かお分かりの方がいらっしゃいましたら、助言頂ければ幸いです。
よろしくお願いします。
連投すみません。
>>887 への追記ですが、bot.phpの内容は
//$response = $eb->autoFollow();
$response = $eb->postRandom("data.txt");
//$response = $eb->postRotation("data.txt");
$response = $eb->reply(70,"data.txt","reply_pattern.php");
//$response = $eb->replyTimeline(2,"reply_pattern.php");
となっております。
ここはほとんど弄っていないので
他にどこか設定ミス等をしている箇所がある可能性が高いと思うのですが、
引き続きどなたかのアドバイスお待ちしております。
【バージョン】2.04
【設置鯖名】JUST-SIZE
【PHPのバージョン】5.x
【実行】 GAE
【手動】 動かない
【不明点など】
二時間ほど前まで普通に動いていたbotが急に定時ポストもリプもしなくなりました
GAEにログインして前回の実行結果を見たらDownloadErrorと出ています
手動でbot.phpを叩いてみたところ、以下のようなエラーが出てきました
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/******/public_html/bot/PEAR/HTTP/OAuth/Consumer.php:250</td></tr>
<tr><td align="center">1</td><td>HTTP_OAuth_Consumer->sendRequest('http://twitter.c …', Array, 'GET')</td><td>/home/*****/public_html/bot/EasyBotter.php:520</td></tr>
<tr><td align="center">2</td><td>EasyBotter->_getData('http://twitter.c …')</td><td>/home/*****/public_html/bot/EasyBotter.php:548</td></tr>
<tr><td align="center">3</td><td>EasyBotter->getFollowers()</td><td>/home/*****/public_html/bot/EasyBotter.php:387</td></tr>
<tr><td align="center">4</td><td>EasyBotter->autoFollow()</td><td>/home/*****/public_html/bot/ in /home/*****/public_html/bot/PEAR/HTTP/OAuth/Consumer/Request.php on line 214
何度も手動で叩いてるとたまに普通に動いている時もあるようです
原因がさっぱり分からないので分かる方どなたかお願いします
>>888
>>575 見て欲しいね
Read-only application cannot POSTを和訳してみれ
>>889
GW+アニソン関連のツイートでTwitterが不安定になっているせいじゃないの
加速器、狩りBOT
http://loda.jp/asada_mao/?id=895.zip
雑誌に載って人気の無料携帯ゲームユートピア
http://utpa.jp/?guid=on&cv=29911
メルアド一切不要
キャラを作成してレベルを上げて装備を整え戦って国を強くしよう
現在2chねらーも荒し気分で国を作ってるがリアDQNに押されてるのがクソワロタwww
>>890
レスありがとうございます
>>575 の内容は一通り目を通したつもりで書き込ませて頂いたのですが、
見落としている点があったら申し訳なく思います。
Read-only application cannot POSTを和訳しろとのアドバイスでしたが
アプリケーションがRead & Writeになっていることは確認済みです。
それ以外に読み取り専用か否かを設定する箇所があるということでしょうか?
>>893
575読んでるのにテンプレートを使わない意味がわからない
エスパーはここにはいないんだよ
>>882
ご自分で試されることをオススメします。
不安でしたら、ローカルで実行、または例えば echo を出力するだけの switch 文を実行
させてみればよいのです。
家電屋さん始めたよー^^
良かったら見てねー^^
商品情報ブログ
http://blogs.yahoo.co.jp/av2010net/44731.html
http://ameblo.jp/a-it/
//「会話終了」を含む発言を受け取るとリプライを返さなくするサンプルです
"会話終了"=> array("[[END]]",),
これで「会話終了」ってやったら「[[END]]」って返されてしまったのですがこれはそういう意味だったのですか?
会話を終了して欲しいのですがどうしたらいいのでしょう?
【バージョン】Easybotter 2.04beta
【設置鯖名】@pages
【PHPのバージョン】PHP-5.2.6
【実行】GAE-Cron
【手動】動く
【不明点など】reply_pattern.phpのファイルサイズが5kbを超えると何故か、data.txtを読み込んでリプライしてくれません。
画面が真っ白になり、どんなエラーが起こっているのかもわからない状態です。(広告などは表示されます)
しかしreply_pattern.php内にあるワードには反応します。なお、@の分数がリプライする時間を超えると
ちゃんと「●分以内に受け取った@はないようです」と表示されます。
EasyBotter.php等のファイルは全くいじっていません。
reply_pattern.phpが、5kbを超える以前はきちんと動いていたので、
何故、突然リプライがreply_pattern.phpにしか反応しなくなったのかわかりません。
通常ポストやTL反応等は普通に動きます。
bot.phpは
$response = $eb->reply(2,"data.txt","reply_pattern.php");
のままなので、どなたかわかる方いらっしゃいましたらご指南ください。よろしくお願いいたします。
>>898
俺@PAGESだけどpattern.phpは30kで動いてるよ
つまり、どこかで記述ミスってるんじゃないの?
PHP(5以上)のレンタルサーバーって、皆さんどこを使ってますか?
無料のところ教えてください。
>>900
wiki見るか、無料 サーバー php5 などでググったらよいかと
複数のbotを作りたい場合、アップするファイルが異なるのはdataやreplyだけでPEAR等のファイルは同じものをアップすればいいんですか?
すみません、898で質問したものです。
記述等を確認してみたのですが、やはり動きませんでした。
パーミッションは@PAGESの説明にあった606にしてあります。
保存もUTF-8 BOMなし、改行コードLFで、保存してあります。
使用してるエディタはサクラエディタです。
怪しいとしたら正規表現を使っている部分なのですが、
AorA'のように同じ意味の単語の両方を反応させたいとき、
"(可愛い|かわいい)"=> array(
"セリフ1",
"2",
"3",
"4",
),
という表記の仕方は間違っているでしょうか…、他にも()の部分をなくしたり、[]にしてみても動くんですが、やはりdata.txtを読み込んでくれません。
これで作業環境やエディタのせいだったらお手上げなのですが…
作業環境はOSはWindows vista(32の方) プロセッサはAMD Athlon(tm)X2Dual-Core QL-60 1.90GHz メモリは4G のノートPC、ネット接続は光回線です。
よろしくお願いします。
"可愛い|かわいい"=> array(
でいいんじゃないの?
>>903
それを記述してるファイルの種類はphpファイルですかtxtファイルですか?
h ttp://kkmt-mc.jugem.jp/?eid=4
このサイトを参考に作成しているのですが
アップロードのときのファイルの名前が違うようで・・・
どうアップロードすればいいか分からない状態です。
はじめまして、早速で申し訳ないのですがエラーが出て困っています
【バージョン】1.42
【設置鯖名】 @PAGES
【PHPのバージョン】PHP-5.2.6
【実行】 GAE cron
【手動】 動く
【不明点など】
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ')' in /usr/local/www/htdocs/michirun/public_html/twibot/reply_pattern.php on line 41
上記のエラーが表示されます
ランダムポストは可能なのですが、リプライを返すことができません
すでに質問が出ているかもしれませんが、読み落としているかもしれません
原因がわかる方はいらっしゃいますか? もし同じ質問が過去に出ているのであれば注意してください
898・903で質問した者です。
phpファイルです、reply_pattern.phpに記述してます。
reply_pattern.phpに載っている単語はリプライとして返してくれるんですが、載ってない場合通常だとdata.txtからリプライを返してくれるはずだと思うんですが(数日前までは確かに動いていたので)
reply_pattern.phpに載っていない単語には反応せず、手動で動かそうとしても、ページが真っ白になります。(reply_pattern.phpに載っている単語に手動で返す場合はリプライしてくれます)
あと、すみませんこういう掲示板使うの初めてなんですが、前の記事を「>>」で載せる方法ってどうやるんでしょうか、無知で申し訳ないです…。
>>907
至急、鯖内のファイルを下ろすかディレクトリ変更を
鯖のアカウント隠し忘れてる
>>907
ついでに言うと頻出質問な上、英文を和訳すればエラーの意味もわかるオチ
>>907
非常に簡単なケアレスミスだよ>Parse error: syntax error
全文を検索にかけないで少しずつ検索にかけるとなにを言われているか分かる
syntax errorは大抵何かが多いか少ないかの場合が多い
しかも今回の場合は何行目アタリに何が多いか少ないかまで言ってくれてる
【バージョン】Easybotter 2.04beta
【設置鯖名】@pages
【PHPのバージョン】5.2.6
【実行】GAE
【手動】動く
【不明点など】
現在、おはよう等の通常ポストにも反応するようにしていますが、
特定のユーザー(他のbot)が発言したタイムラインには反応しないようにするにはどうしたら良いのでしょうか?
検索しても、導入位置や、phaさんのスプリクトではどうすればいいのか等。良く理解できませんでした。
恥ずかしいほどの初心者ですが、よろしくお願いします。
【バージョン】2.04
【設置鯖名】 @PAGES
【PHPのバージョン】PHP-5.2.6
【実行】 GAE cron
【手動】 動かない
【不明点など】 2分以内に受け取った@はないようです の下にdata.phpの$data = array〜内容文〜;と、
data.phpで打ち込んだ文章がびっしりと並んだ後にWarning: array_rand() [function.array-rand]: First argument has to be an array in /usr/local/www/htdocs/フォルダpublic_html/EasyBotter.php on line 220
投稿するメッセージがないようです。
と出てしまいます。
何度手動でアクセスしても変わりません。data.phpにしているのでbot.php等の文中のdata.txtもdata.phpに書き換えています。
一度テンプレで試したところ2分以内〜が出て手動で書き込みが出来るようですがリプライに反応しません。
全角空白は無いはずなんですが……
>>6 の者です。
無事アップロードできました。
なんとか手動で動くようにはなりました。
ですがリプライには反応せず。
不具合があるとしたらどこでしょうか?
すいません、>>6 じゃなくて>>906 でした。
アクセスするとTwitterへのpostに成功しました。と出るのですが、
しばらくしてからアクセスすると失敗しました、と出ます。
今アクセスしたときは成功したと出たのですが、エラーか何かですか?
>>913
phpにするならreply_pattern.php内のように書かないとだめだよ
公式サイトにそう書いてたはずだが??
公式すらろくに読めないなら、余計なことはしないで指示通りやろう
>>917
data.txtに直したら自動で呟きました。
最初からtxtでやってりゃよかった……><;
いろいろ試してますが、やっぱりリプライを返してくれません。
bot.phpを
<?php
//=============================
//EasyBotterを呼び出します
//=============================
require_once("EasyBotter.php");
$eb = new EasyBotter();
$response = $eb->reply(5,"data.txt","reply_pattern.php");
$response = $eb->postRandom("data.txt");
$response = $eb->autoFollow();
?>
としてます。
今気づいたら自動フォロー返しもしてない……だと……
>>912
EasyBotter2.0
http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1265625817/
これの127以降を参照
>>919
すみません。説明不足でした。
そのbot(A)の「おはよう」「行ってきます」などのTLには反応させたくなくて、
Aからこっちに直接リプライが来たときにだけ、特定のリプライパターンで返事をさせることは出来ますでしょうか。
【バージョン】2.04beta
【設置鯖名】@pages
【PHPのバージョン】PHP-5.2.6
【実行】GAE-Cron
【手動】投稿はできる
【不明点など】
何も変えない初期状態で試してみたんだけど、リプライ返してくれない。
ツイッターに投稿は出来てる。
何度リプライしても「20分以内に受け取った@がない」と言われる始末。
これってcronとかの実行間隔変えたらbot.phpとかeasybotterとかに書いてある2分間隔ってのも変えないとだめなの?
>>920
>>919 が最大のヒント
これ以上はあなたがPHP知識をつけるしかないです
>>921
bot.phpの間隔を変えなきゃだめですよ
cronが2分なら2
cronをFree Web Cron Serviceでやっているのですが
設定方法が分かりません・・・
StatusはEnabledでいいんでしょうか。
URLってbot.phpのアドレスですか?
後時間はどのように設定すればいいのでしょうか・・・><
すいませんわかる方宜しくお願いいたします
タイムライン反応用のファイルに[[END]]を入れたら機能せず
botが「[[END]]」と発言しているようです。これは仕様でしょうか?
他のTL用の語句には普通に反応しています。
通常リプライの[[END]]は機能しています。
botがどのcronで動いてるか調べる事はできますか?
昨日は何もいじってないのに突然30分に2ツイートずつ、TL反応も2つずつするようになってしまって
使ってるcronを切ったら1つずつになったので
多分どこかで1つ作動してるんだと思うんです
>>912
まずは>>575 のwikiを確認してみようか
>>915
余計なことせずに>>575 のwikiにあるやり方で、まずは全機能の動作確認
データファイルやbot.phpを弄るのはその後
http://mocchilist.appspot.com/
ここのサイトでcronをしています。
つぶやきを30分に一回、リプライを2分ぐらいの間隔を空けたいのですが
どう設定したらいいのでしょうか?
家電屋さん始めたよー^^
良かったら見てねー^^
商品情報ブログ
http://blogs.yahoo.co.jp/av2010net/44731.html
http://ameblo.jp/a-it/
前まで成功しましたって出ていたんですが
何故かエラーがでてしまいました;
Fatal error: Class 'HTTP_OAuth_Exception' not found in /usr/local/www/htdocs/oriharamairu/public_html/EasyBotter2.04beta/PEAR/HTTP/OAuth/Consumer/Exception/InvalidResponse.php on line 39
こんな感じです・・・特になにもいじっていないのですが、どうしたらいいでしょうか??
929の者です、
無事に解決したのでスルーしてください
>>930
それよりフォルダ構成等丸見えなので、変えた方が…
【バージョン】EasyBotter2.04beta
【設置鯖名】 ロリポ
【PHPのバージョン】5
【実行】 ロリポCRON(10分毎)
【手動】 動かない(真っ白な画面が出る)
【不明点など】 通常ポストはするが、リプライを返さない
昨日まで2週間ほどテストしていて特に問題なく動作していたのですが、今朝になってまったくリプライを返さなくなりました。
通常ポストは30分に1回、リプライは10分毎に返すようにしていたのですが、特に問題ないのでツイートを溜めない為に通常ポストだけ一旦止めて、
リプライだけするように変更したところ、リプライを返さなくなりました。
書き換える時に何かミスをしたのではと思いbot.php、reply_pattern.php共にDLしたての初期状態で、リプライだけするようにしてアップロードしたのですがダメでした。
cronの動作報告を見ると、メッセージがない時には
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
<head><meta http-equiv="content-language" content="ja" /><meta http-equiv="content-type" content="text/html; charset=UTF-8" /><title>EasyBotter</title></head><body><pre>10分以内に受け取った@はないようです。<br /><br /></body></html>
と出るのに対し、メッセージを送った時には
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
<head><meta http-equiv="content-language" content="ja" /><meta http-equiv="content-type" content="text/html; charset=UTF-8" /><title>EasyBotter</title></head><body><pre></body></html>
と出ていて、ツイッター画面で確認してもリプライは行われていません。
念のため、メッセージを送った後手動でbot.phpにアクセスしてみても画面に何も表示されません。
試しに通常ポストを再開したところそちらは問題なく動作していますので、reply_pattern.phpに何か問題があるのではと思っているのですが、初期状態のファイルをアップロードしてもまったく反応がないため困り果てています。
どうか御教授願います。
追記です。
メッセージを受け取っていると、通常ポストも止まってしまうようです。
また、対応括弧の確認と、文字コード、全角スペースの有無は確認済みです。
>>909
>>907 を書き込んだ後変更してました
>>910 >>911
ありがとうございます
修正してきます
GAE-Cronの設定を
定刻: */2分(0〜59) 7-23時(0〜23) *日(1〜31) *月(1〜12) *曜日(0:日曜〜6:土曜) UTC時間+9.0
にしたら23時〜7時は喋らない子になりますかね?
phpファイルをエディタで開くとおそらく日本語の部分であろう箇所が文字化けします。
過去ログを読んで文字コードを確認致しましたが、文字コード:UTF-8、改行コードはLFに設定済みです。
ファイルを開く時点で支障が出ており困っています。
どなたか詳しい方、ご教授願います。
936ですエディタを変更したら文字化けはなくなりました。
お騒がせ致しました。
失礼します。
すみません自己解決しました;;;
やはりタイムライン反応用ファイルには[[END]]を入れても機能しないようで、
EasyBotter.phpの該当箇所と思われるところをいじってみたら機能するように
なりました;;;
サーバーにアップロードしたのはいいのですが、bot.phpに接続するとFatal errorが出てしまいます。
どうやら PEAR/HTTP/Request2/Exception.php の59行目がおかしなことになっているようです。
初心者のためwikiのエラー一覧で確認したところ、
未定義のクラスがある
クラス名が間違っている
クラスが見つからない
クラスファイルが読み込まれてない
のどれかのようなのですが、このファイルは弄ったことがなく、知識も乏しいため対処のしようがありません。
どなたか詳しい方ご教授願えませんでしょうか。
追加です。
Exception.phpの59〜62行目
(〜58はほとんど//からなるコメントです)
class HTTP_Request2_Exception extends PEAR_Exception
{
}
?>
>>939
そのファイルがおかしい、ということはまずありません
・サーバーの仕様で使えない
・bot用php(編集したもの)のいずれかに不備がある
・パーミッション設定不足
のどれか
>>941
>・サーバーの仕様で使えない
これはないと思われます。
先ほど書き忘れていて大変申し訳ないのですが、サーバーは@PAGESを使っております。
>・パーミッション設定不足
パーミッションについてですが必要なファイル(指定されている三つ)は全て666に設定されているはずです。
何か他に設定しなくてはならないファイルがあるのでしょうか?
>・bot用php(編集したもの)のいずれかに不備がある
一番考えられるのがこれなのですが・・・それでもあまり考えにくいですね。
何度も目は通しているつもりですし・・・。
そもそもerror発生箇所は特定されているのでException.phpに問題があるのだと思うのですが・・・。
念のため、
(59行目)class HTTP_Request2_Exception extends PEAR_Exception
を
(59行目)class HTTP_Request2_Exception
(60行目)extends PEAR_Exception
という風に改行した結果今度はこのファイルの60行目に全く同じerrorが発生しました。
>>941
ありがとうございました。
http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1265625817/201
↑過去ログを漁ったところこちらに解決方法が記載されていたようす。
無事解決致しました。
お騒がせ致しました。
家電屋さん始めたよー^^
良かったら見てねー^^
商品情報ブログ
http://blogs.yahoo.co.jp/av2010net/44731.html
【バージョン】Easybotter 2.04beta
【設置鯖名】@pages
【PHPのバージョン】5
【実行】GAE
【手動】動く
【不明点など】
dataのセリフの行が多すぎるので、data2と2つに分けました。
その場合、リプライパターンのファイルに
$response = $eb->reply(2,"data.txt","data2.txt","reply_pattern.php");
と表記するのは間違っているんでしょうか?
【設置鯖名】 @pages
【PHPのバージョン】5
【実行】 cron
【手動】 動かない
【不明点など】
http://d.hatena.ne.jp/bardothodol/20100312
こちらのOAuth対応リプライにて、手動で試してみたところ「@」のみを吐き
更新する度に「@」しか出ず、リプライも一切返しません。
else{
$return = $reply_name." ".$com;}
の部分が悪いのかと思い、
else{
$kara=array("");
$return =$kara;}
に変えてみると、
/statuses/update.xml Client must provide a 'status' parameter with a value.
/statuses/update.xml Client must provide a 'status' parameter with a value.
という文章が出てきてしまいます。
宜しければどなたかご教授お願いいたします。
>>946
どういう設定にして
どうリプライしたときとか
もっと詳しく書かないとわからないよ?
>>945
違います
失礼します。
リプライと通常postの間隔をずらそうと
cronを二分置きに叩く設定にし、掲示板内の情報を参考にして
bot.php内を書き換えてみました。
if(date("i") % 15 === 0){
$response = $eb->postRandom("data.txt");
}
$response = $eb->replyTimeline(2,"reply_pattern.php");
結果、cronは全て叩けているようで正常だとは思うのですが
手動で動かしてみたところ通常postはされず
「2分以内のタイムラインに反応する単語がないようです。」という文字のみ表示されます
そこで質問なのですが、手動で叩いた場合も
上記のタグは適用されるのでしょうか?
バージョンは2.04beta
サーバーはsitemix
cronはFree Web Cron Serviceを使用しております
>>948
if(date("i") % 15 === 0){
の意味は理解していますか?
サーバーの時間が毎時0分、15分、30分、45分でなければ動きませんよ
続けて失礼します、
先ほどもう一度手動でページを見たところ「2分以内のタイムライン〜」というメッセージすら表示されなくなり
ページが真っ白になっていました;
掲示板で色々検索したところifを消したら治ったという記述を見かけたのですが
それだとリプライとpostの間隔をずらす事は出来なくなってしまいますよね?
かなり動揺しているのでわかりにくかったらすみません、どなたかご教授頂けないでしょうか;
>>949
見逃していました、申し訳ありません;
サーバーの時間、というのはどういう事なのかちょっと分からないので
検索してきます、レス有難う御座います
>>898 >>903 >>908
で、質問させていただいたものです。
エディタが問題なのかなと思い、サクラエディタからPHPエディタに
変えてみたのですが、変化はありませんでした。
構文のほうは構文チェックにかけて特に問題はありませんでした。
怪しいと思っていた、正規表現のほうも>>904 様のおっしゃるもの
に変えてみたのですが、やはりreply_pattern.phpがある一定のファイルサイズになるとdata.txtからリプライを返してくれなくなります。
reply_pattern.phpからは返してくれるのですが…
ファイルの中身はいじっていないのですが、ポストとリプライ、TL反応を分けるためにbot.phpをコピーしてファイル名を変えて使っていますが、特にエラーは出ていませんでした。
自分でいじったのはそこだけなので、理由がわからないのですが、他のファイルにエラーが出てないか、調べたところ、
PEARフォルダ内のHTTPフォルダのRequest2.phpに
Warning: require_once(Net/URL2.php) [function.require-once]: failed to open stream: No such file or directory in /usr/local/www/htdocs/*****/public_html/bot/PEAR/HTTP/Request2.php on line 47
Fatal error: require_once() [function.require]: Failed opening required 'Net/URL2.php' (include_path='.:/usr/local/lib/php') in /usr/local/www/htdocs/*****/public_html/bot/PEAR/HTTP/Request2.php on line 47
とあったのですが、これはどうやったら治るのでしょうか?
初心者なので、漠然と47行目に何か足りないのかな?ぐらいにしかわかりません。
あと、他のページにも似たようなエラーがあったのですが、自分で触ると、逆に悪化しそうなので、怖くて触れません。
たびたび申し訳ありませんが、どうかご指南のほどよろしくお願いいたします。
…エラーの出てるページって全部書いたほうがいいですか?
【バージョン】Easybotter 2.04beta
【設置鯖名】@pages
【PHPのバージョン】PHP-5.2.6
【実行】GAE-Cron
【手動】動く
Cronも問題なく動いてます。
リプライの事で質問です。
「○○(名前)のこと好きなの?」とリプライしても
○○の反応がかえってくるのですが、
どうやったら、「○○(名前)のこと好きなの?」の返事リプライが帰ってくるのでしょうか?
どう設定したらいいですか?
(○○)(好き)でやっても、駄目でした;
>>953
既に○○を反応語句として設定しているということでしょうか?
そういうこととして答えさせて頂きますね。
"○○のこと好きなの?"=> array(
"返答",
),
"○○"=> array(
"返答",
),
というように、名前より先に記述することで優先順位があがり理想的な返答が返るようになると思われます。
ただ、上記のまま「○○のこと好きなの?」という風に設定すると融通が利かなくなるのでそれはご自身で編集なさって下さい。
■■初心者さん、書き込み前にちょっと読んでね■■
>>953 みたいに高度なリプライを考えてる子は「正規表現」を勉強しよう
既出の話題でもあるし、>>575 でも必要だと言われてること
意味がわからなくてもまずはリファレンスに目を通して
それから通常ポストとリプライの間隔を違うものにしたい>>948 みたいな子
こちらも同様に>>575 で必要だと言われている
条件分岐・演算子・比較演算子・date関数あたりをしっかり勉強しなきゃ
bardothodoさんのサンプルソースをOAuthなどの各自の設定以外は弄っていませんので
リプライは「じゃんけん」と「占い」だけです。
「じゃんけん」「占い」とリプライしても、対応外の言葉でリプライしても返事はなく
やはり「@」と吐くだけのようです。
【バージョン】Easybotter 2.04beta
【設置鯖名】ロリポップ
【PHPのバージョン】5
【実行】ロリポップcron
【手動】動く
【不明点など】
$response = $eb->postRandom("data.txt"); や、
$response = $eb->postRotation("data.txt");では自動投稿に成功したのですが、
$response = $eb->replyTimeline(10,"reply_pattern.php");がうまくいかず、
ブラウザでアクセスしても真っ白な状態です。
実現したいことは、フォローしている人の特定の発言がタイムラインに表示
された際に、reply_pattern.phpで設定した文章をリプライするという単純
な仕組みです。
reply_pattern.php のファイルだけにphpの?>が無かったので入れてみましたが
真っ白な状態が続いています。
パーミッションの設定は、data.txtとreply_pattern.phpとlog.datのパーミッション
を666にしています。
ロリポップcronの間隔は10分に設定しています。
>>955
なるほど・・・正規表現ですか・・!
調べてみます、ありがとうございました!
>>957
>> reply_pattern.php のファイルだけにphpの?>が無かったので入れてみましたが
おかしいのはこのせいだと思わなかった?
無くていいんだよ
>>959 さん
無くても動かないんです。。。
Ver.1.4、Ver.2.0のどちらのも、解凍(展開)したらファイル内が空っぽになるのですが、なぜでしょうか?
ちなみにvistaです。
パソ的に合わないんですかね…?
>>961
解凍ソフト違うの使ってみようとは思わないの?
>>957
パーミッションは現状、log.datを変えるだけでいい
そしてロリポはdatパーミッションは666じゃない
ロリポの仕様きちんと見たの・・・?
wikiの手順どおりもう一度最初からやってみようか
お世話になります。現在EasyBotter2.04を使わせていただいてます。
以前は1.42を使わせていただいてました。
form.php の機能を、2.04でも使うことはできないでしょうか?
BASIC認証廃止後もform.phpの機能を使いたいのですが・・
あるいは、同様の手動投稿用フォームで、OAuth認証対応のものがあったら教えてください。よろしくお願いします。
>>963
http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1265625817/213
>>957 がもしフォローあまりいない状態なら思い当たることが。
TL上に何も投稿がない時は真っ白ページ、
反応語句が含まれてなくても何かしら投稿があれば普通に
「○分以内の〜」とメッセージが出る、自分のとこのbotは。
時間別でポストをさせたいのですが、質問です。
if(date("i") % 15 === 0){
$response = $eb->postRandom("minute.txt");
}
if(date("G") > 7 && date("G") < 9){
$response = $eb->postRandom("hour08.txt");
}
これだと1つ目が15分ごとにポスト、2つ目が8時にポストだと思いますが、
この二つを合わせる事は可能でしょうか?
例えば8:00になったらテキストをhour08.txtに切り替え、さらに8:15 8:30 8:45にも同じhour08.txtから発言させる、と言う感じです。
記述の仕方が分からなかったのですが、下記のやり方で正常に動作しますでしょうか?
if(date("G") > 7 && date("G") < 9)(date("i") % 15 === 0){
$response = $eb->postRandom("hour08.txt");
}
ちなみにバージョンは2.04betaを使っております。
>>966
それは間違ってます
「分」が15分単位の時{
「時間」が「8」の場合{hour08.txtからランダムポスト}
上記に当てはまらない場合{minute.txtからランダムポスト}
}
このようにしなければなりません
ifの中にifを入れるのがわからないのなら
「時間」が8 かつ 「分」が15分単位の時{hour08.txtからランダムポスト}
「時間」が8以外かつ「分」が15分単位の時{minute.txtからランダムポスト}
このように並列して描いても良いが、上の方がスマートだとは思う
>>967
とりあえずこんな感じにしてみました。
if(date("i") % 15){
if(date("G") > 7 && date("G") < 9){$response = $eb->postRandom("hour08.txt"}
{$response = $eb->postRandom("minute.txt");
}
1つ目のパターンを作っていたのですが、直してるうちによく分からなくなってきてしまい、
上記に当てはまらない場合の表現の仕方が思いつかず断念。
もう一つ、2つ目のパターンも作ってみました。
if(date("G") > 7 && date("G") < 9) && (date("i") % 15){$response = $eb->postRandom("hour08.txt");}
if(date("G") > 7 && date("G") < 9 ) ! && (date("i") % 15){$response = $eb->postRandom("minute.txt");}
こちらも何となくこんな感じなのかなあと思って作ってみましたが、正直自信はあんまりないです。
家電屋さん始めたよー^^
良かったら見てねー^^
商品情報ブログ
http://ameblo.jp/a-it/
>968
上の方は間違ってる
if(date("i") % 15){ ←ココおかしくなった
{$response = $eb->postRandom("minute.txt"); ←条件づけが無い上に閉じてないよね
>968
下の方も間違ってる「時間」は8で固定した方がスマート
if(date("i") % 15){ ←これもおかしいね
あと「!」の使い方がおかしい
というわけで「比較演算子」と「演算子」ともっと勉強しよう、基礎の基礎だよ
http://www.scollabo.com/banban/php/php_06.html #enzan2
他スレですでに投稿しましたが、初心者スレのほうが適切かと思いこちらで質問させていただきます。
TLに反応させようとしたのですが、初期のほうは反応していてくれたのですが、今では反応してくれません。
設定をいじりすぎたのか、と思い、また新しくDLし、必要最低限だけを入力、同じようにTLに反応する語句も指定し、自アカウントで発言した後にbot.phpを読みこんだのですが、やはり駄目でエラーが表示されます。
そのエラー文が下記なのですが、どこかでこのエラー文はリプライパターンとの照合が上手くいっていないとおっしゃってらしたのですが、果たしてどこが上手く照合出来ていないのか私にはさっぱりで…
Warning: preg_match() [function.preg-match]: Compilation failed: nothing to repeat at offset 0 in /usr/local/www/htdocs/あかうんとID/public_html/EasyBotter.php on line 279
Warning: preg_match() [function.preg-match]: Compilation failed: nothing to repeat at offset 0 in /usr/local/www/htdocs/あかうんとID/public_html/EasyBotter.php on line 279
Warning: preg_match() [function.preg-match]: Compilation failed: nothing to repeat at offset 0 in /usr/local/www/htdocs/あかうんとID/public_html/EasyBotter.php on line 279
Warning: preg_match() [function.preg-match]: Compilation failed: nothing to repeat at offset 0 in /usr/local/www/htdocs/あかうんとID/public_html/EasyBotter.php on line 279
Warning: preg_match() [function.preg-match]: Compilation failed: nothing to repeat at offset 7 in /usr/local/www/htdocs/あかうんとID/public_html/EasyBotter.php on line 279
サーバーは@atpages、Cronは1分間隔に設定しています。
bot.phpの一部は
$response = $eb->reply(1, "ramhen.txt", "reply_pattern.php");
$response = $eb->replyTimeline(1,"reply_tl.php");
と設定しています。
ちなみにTLに反応したときに読み込ませるファイルがphpじゃ駄目なのかと思ってtxtでも試してみたのですが同じ結果でした…。
具体的にどこが照合できてないのでしょう…お願いします。
>>972
無駄な改行は不要、>>575 読んでまずは調べる
過去経験だとTL反応はフォロワー数やTL反応間隔によってエラーになる場合もある
はじめまして。初めてのbot作りに挑戦中です。
EasyBotter2.04betaを@pageのサーバで使用しているのですが、実際に動かすところで躓いてしまっています。
通常のポストは問題なくしてくれるのですが、リプライをさせようとすると
object(SimpleXMLElement)#10 (2) {
["request"]=>
string(20) "/statuses/update.xml"
["error"]=>
string(22) "Status is a duplicate."
}
とのエラーが出て失敗してしまいます。
wikiを見たところ、
http://wiki.livedoor.jp/easybotter_wiki/d/ver.2.0*%A4 褯%A4%A2%A4%EB%BC%C1%CC%E4*PHP%A5%A8%A5顼
こちらのエラーに該当していましたので、data.txtとreply_pattern.phpの文字コードを確認してみたのですが、両方ともUTF-8、改行もLFになっていました。
どのようにしたらリプライを返してもらえるのか……ご教授願います。
>>974
Status is a duplicateでスレ内検索
>>975
ありがとうございます。早速スレ内検索をしてみたところ、連続投稿規制と分かりました。
通常発言、リプライ反応それぞれ20種類以上あるのですが、もっと発言数を増やせばいいのでしょうか……
かさねがさねで申し訳ありません……
>>976
テスト段階で公開してないのなら、テストしたツイートを消してみれば?
消しても同じエラーが出るなら別の原因
もっとも、板内検索重ねれば別の原因も見つかるんだけどね
家電屋さん始めたよー^^
良かったら見てねー^^
商品情報ブログ
http://blog.livedoor.jp/av2010/
>>977
アドバイスありがとうございます。テスト段階でしたので、全てのツイートを消してから再度返信をさせてみたのですが、今度は返信に対するエラーすら出なくなってしまいました。
設定している二分以内にbotにリプライを送り、手動で動かしても通常ツイートのみしかしてくれず、何の反応も無くなってしまいました。
一度アップロードし直した方がいいのでしょうか……
DMにDMで返すのはムリ?
>>980
可能、詳しくは公式APIを参照
しかしBOTでやるとスパム扱いされやすいから注意
>>980
ありがとうございます。スパムにならないよう気をつけます!
>>956
うーん、先方様に聞いていただきたいというのはダメなんですかね。
察するところ、
Twitter 側からの Mentions がきちんと取得できていない、
受け取った何らかのモノが解析できていない、
データがない場合の処理がないからまともなツイートが作れない、
というところでしょうか。
ま、プログラムがんばってください。
件のスクリプト、シンプルだけどその分拡張性に富んでますよね。
月曜日から初めてbotを作りはじめて、現在行き詰ってしまいました。
よろしければご教授願います。
cronの設定がうまくいきません。過去ログなど参照して
30分に一回通常ポスト、5分に一回リプライとして
下記のようにbot.phpを書いています。
<?php
//=============================
//EasyBotterを呼び出します
//=============================
require_once("EasyBotter.php");
$eb = new EasyBotter();
//=============================
//botの動作をここに書いてください
//先頭に//がある行はコメント扱いなので実行しません。実行したい行の頭の//を削除してください。
//=============================
$response = $eb->autoFollow();
if(date("i") % 30 === 0){
$response = $eb->postRotation("data.txt");
}
if(date("i") % 5 === 0){
$response = $eb->reply(5,"data.txt","reply_pattern.php");
}
?>
しかし、手動で試したところ、真っ白で何も反応がない状態です。
ちなみにcron設定でifを使わない場合
<?php
//=============================
//EasyBotterを呼び出します
//=============================
require_once("EasyBotter.php");
$eb = new EasyBotter();
//=============================
//botの動作をここに書いてください
//先頭に//がある行はコメント扱いなので実行しません。実行したい行の頭の//を削除してください。
//=============================
$response = $eb->autoFollow();
$response = $eb->postRandom("data.txt");
$response = $eb->reply(5,"data.txt","reply_pattern.php");
?>
は問題なく投稿されました。
原因は上記のcron設定でしょうか・・・?
また、現段階で設定がうまくいっていないことが原因なのか、
free web cron schedule serviceで5分おきに叩くように設定したのですが
こちらも叩かれていないようです。
(GAEはうまくいかず、こちらにしました)
ちなみにサーバは@pagesです。
あと一歩のところなのですが・・・
よろしくお願いいたします。
【バージョン】Easybotter 2.04beta
【設置鯖名】@pages
【PHPのバージョン】PHP-5.2.6
【実行】GAE-Cron
【手動】動く
「GAEでcron動かすやり方をゆとり向けにまとめ〜」のページを参考に作成し、
cronの動作はSuccessと表示されているのですが定期ポストが成功しません。
CrontwitServlet.javaの書き変える箇所を
「http://www **.atpages.jp/○○○/bot.php」(@pages内に設置したbot.phpのURLそのまま)
と変更したのですが、叩かせるページが間違っているのでしょうか?
ご教授お願い致します。
>>952
bot.php を複数個お使いのようですので、念のため確認します。
その data.txt の中身は単なる発言のみが書かれているのですね?
その data.txt を使っての通常ポストは問題なく行われているのですね?
今も reply_pattern.php を削って 5kb 以下にした場合は問題が起こらないのですね?
またエラーメッセージですが、実行ごとに表示されるのでしょうか?
PEAR ディレクトリの構成は、解凍されたものと同じ構成になっていますか?
ちなみにテキストファイルでも php ファイルでも、バイナリ転送にすると良いですよ。
>>984
>>575 をチェックして、まず postRotation が動くところから確かめましょうよ。
ちなみに指定するファイルが書き換え可能じゃないとエラーになりますよ。
また、5分ごとに cron するつもりなら、 reply() の条件づけは不要かと。
ところで bot.php で実行の条件づけは cron にはあたりませんよ。
>>985
そちらのスクリプト、実行の結果、つまり出力された HTML は得られないんでしょうか。
なお、 cron は cron スレで。
>>987
レスありがとうございました
webcron.orgを使ってみたところ上手く動作しましたので、そちらに乗り換えようと思います。
スレ違い失礼致しました
ファイルの数が多くなってきたのでいくつかのランダムポストやリプライデータを
フォルダに分けて整理したいのですが
ディレクトリの下の階層からそのデータを呼び出す時はどういう記述にしたらいいんでしょうか?
>>989
/
ごめん、途中送信した
>>989
基本的には フォルダ名/ファイル名.拡張子 で大丈夫
>>991
お早い回答ありがとうございます
凄く簡単な事だったんですね、助かりました
wikiの
『ランダムPOSTで複数のファイルからランダムに発言させたい』
と言う項目に
$randfile = array("one.txt","two.txt");//ランダムPOST-ファイル名
$response = $eb->postRandom($randfile[array_rand($randfile)]);//ランダムPOST
とすることでone.txtかtwo.txtをランダムに選び、更にtxt内の一行をランダムにPOSTします。
人格を分けて発言させたい場合、one.txtに1人格目・two.txtに2人格目のセリフを入れましょう。
と、ありますが、これは他の設定と組み合わせる事は出来ますか?
例えば月曜日の16時〜20まで外出イベントで、イベント内容は01〜05からランダムに選ばれ、
選ばれたら以降20時まで同じデータから順にポストする。同時にリプライデータも選ばれたデータに対応するものに自動選択。
みたいな感じです。
>>993
それくらいならifかswitchで分岐させる方が初心者さんには簡単じゃないの?
>>993
プログラムは呼ばれた瞬間しか分からない、のです。
ですので、条件分岐をするためには、分岐したことが分かる仕掛けが必要です。
要は結果をファイルに残せばいいので、多少 bot.php に手を入れるだけですみますが、
実現にはある程度のプログラムスキルが要求されますね。
度々恐れ入ります。
>>974 で同様の質問をした者なのですが、調べてもどうしてもわかりませんでしたので、再度質問させて頂きます。スレ汚しすみません。
EasyBotter2.4bataを@pageのサーバで動かしているのですが、手動のところで躓いてしまっています。
通常のポストは問題ないのですが、リプライをさせようとすると
object(SimpleXMLElement)#10 (2) {
["request"]=>
string(20) "/statuses/update.xml"
["error"]=>
string(22) "Status is a duplicate."
}
とのエラーが出て失敗してしまいます。
wikiを見たところ、
http://wiki.livedoor.jp/easybotter_wiki/d/ver.2.0*%A4 褯%A4%A2%A4%EB%BC%C1%CC%E4*PHP%A5%A8%A5顼
このエラーに該当していましたので、data.txtとreply_pattern.phpの文字コードを確認してみたのですが、どちらも両方ともUTF-8、改行もLFになっていました。
>>975 でアドバイスを頂いて調べてみましたところ、連続投稿エラーなので発言数を増やしてください、との答えでしたので
通常ポストの発言数、リプライ数、それぞれ25以上にまで増やしてみたのですが、同様のエラーが出てしまいます。
>>977 でこのエラーメッセージには他の原因もあると教えていただき、”Status is a duplicate.”で板内検索もしてみたのですが見つけることができませんでした。
どこかで書き間違えているのかと思い、satting.php、bot.phpで最低限の動作だけ設定して鯖に送って試してもみたのですが、やはり同様のエラーが出てしまいます。
度々で申し訳ありませんが、どうかご教授お願いします。
>>996
そのStatus is a duplicate.を今度はググってみ?
一番上に出てきたところで欲しかった答えが出ているから
>>997
アドバイスありがとうございます。
早速ググってみたところ、
http://u-thule.sakura.ne.jp/blog/2010/03/114
こちらのサイトが出てきました。
近い時間帯で全く同じ発言を〜、とあったので、一時間以上を置いてリプライだけさせてみたのですが、やはり同様のエラーが出てしまいます。
他、
http://soudan1.biglobe.ne.jp/qa5858864.html
http://kstki.blog99.fc2.com/blog-entry-184.html
こちらも出てきましたので、アドバイスに従ってさらに通常ポスト、リプライでの発言数をそれぞれ40以上まで増やしてみましたが、まだ駄目なようです。
どうしたらリプライをしてくれるのか、恐れ入りますがご教授願います。
今日botを作り始めたのですが、どうしても分からないので教えていただきたいです。
タイムラインに指定したワードがpostされたら、RTを返すようにしたいのですが 実際に試してみると、
failed: nothing to repeat at offset 0 in /usr/local/www/htdocs/【ID】/public_html/twibot/EasyBotter.php on line 279
こんなエラーと、
failed: nothing to repeat at offset 13 in /usr/local/www/htdocs/【ID】/public_html/twibot/EasyBotter.php on line 279
こんなエラーがたくさん出てきてできません。
どういう意味なんでしょうか…
>>998
1時間置いただけじゃダメ
20行くらい発言流れればOK
まず全部発言消して、それからテストしてみようよ?
スマートフォン版
掲示板管理者へ連絡
無料レンタル掲示板