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

TwitterBotPHP質問スレ

120名無しさん:2010/01/26(火) 01:49:07
こちらのPHPを使って、1時間おきにランダムpost。リプライは3分間隔のbotを稼動させています。プログラムの知識は殆どないですが、こちらを見ていて上手く設置できたので、動作は順調です。
用意したテキストの中から1時間おきにランダム発言はOK
特定の言葉に対しての特定の返信もOK
動作は全て自動(cron)です。

最近新しく発言を追加したいと思いましたが、いまいちやり方がわからず質問させて頂きます。
たとえば、毎日0時に「皆おやすみ」みたいに、特定の時間に特定のpostを投稿させることは可能なのでしょうか?
出来れば、0時と7時に就寝、目覚めのpostを入れたいのですが…

どこに何を入れればいいのか、アドバイスお願いします

121名無しさん:2010/01/26(火) 03:05:52
>>120
入れることは可能だけどcronの設定によるかな
1時間おき、とあるけどそれは0分ぴったりなのかな?
自分の場合$fileを読み込む直前に時間(時と分)を取得させて
●時なら時報用txtを読み込むように、とさせている

122120:2010/01/27(水) 00:00:35
120です。
>121さん
はい、0分ぴったりに発言されます。
すみません、折角アドバイスを頂いているのに、私の知識では理解出来なくて…
レスありがとうございます!

123名無しさん:2010/01/29(金) 20:16:50
XREAでpost_random.phpのみ使用しようと設置しました。
cronは一時間おきに叩くよう設定してます。
始めは投稿成功したので、投稿文を増やしていったのですが
いきなり一行めの文章を繰り返し投稿するようになってしまいました。
(なので、XREAからの実行メールは投稿成功でくるのですが
実際は多重投稿なのでtwitterの方にはPOSTされてません)
手動でアクセスした場合は、ちゃんとランダムで投稿されるんですが…。

Macのmiでファイルをいじってるんですが、改行が無視され全文投稿になるので
一行毎に末尾に,をつけ、$tw = explode(",", $tweets);に直してます。

よろしくお願い致します。

124123:2010/01/29(金) 20:19:09
連投すみません。
それと、時々成功した時に、冒頭に¥nが付いたりするのですが
何故でしょうか?

125うら:2010/01/30(土) 13:34:12
>>123
> 一行めの文章を繰り返し投稿するようになってしまいました。
うらもXREAで動かしてるけど。
ホントに該当ファイルを叩いてる?確認を。
こっちも参照。 http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1260351215/47

> 改行が無視され
ポスト用テキストファイル、改行コードが「CR(Mac)」になっていると思われ。
miで、ドキュメント → 改行コード を「LF(UNIX)」にすべし。
FTPでASCIIモード転送だとうまく変換してくれるはずだけど。バイナリ転送?

> 冒頭に\nが付いたりするのですが
miで、モード設定 → 開く → JIS系ファイル読み込み をONに。
以下参照。

開発日誌 pp-perl: テキストエディタmiでの¥nの表示

http://pp-perl.blogspot.com/2007/06/min.html

ま、「¥」じゃなくて「\」(バックスラッシュ)がホントなんだが、日本語だからねえ。

126名無しさん:2010/01/30(土) 16:37:35
>>125
123です。ありがとうございます。

該当ファイルは叩いてます。時々はPOSTされますので。

改行の件ですが、CFではありません。ちゃんとLFになってます。

冒頭の¥nが付くというのは、ファイルの中ではなくて
twitterにPOSTされた発言の頭に付くのです。
また、時々¥nや¥n¥n¥nみたいに、これのみで投稿される時があります。

試しに無料のcronをお借りしてやってみたのですが
問題なく投稿は成功しました。
ただ無料なので不安定なのもあって、出来ればXREAのcronを使いたいと思ってます。
cron側の問題で出来なくなるということはあるのでしょうか。

127うら:2010/01/30(土) 18:26:17
>>126
基本的に、cronジョブとwebアクセスと同じ結果となるはず。
cronで指定してる〜.shの中で指定してるphpファイルが同じなら。
外部のcronサービスはwebアクセスなので、URLが同じなら同じ動作。
そうでないなら、うらには分かりません。助けてえろいひと〜

「¥」マークについて。
Macで、「¥」と「\」は区別されていますよ。半角の「\」をエスケープ文字として使いましょう。

あと、$messageに円記号が混入される可能性…。
50行の「$tweets = preg_replace("@\n+@","\n",$tweets);」ってコメント化なさってます?
エスケープ文字+nがあと出てくるのは、Serviesディレクトリ以外ではそこだけなので。

改行について。
サーバ側で改行コードがLFになっていれば、改行が無視されることはない、はず。
あるいは上と同じ理由で、\nの改行コード判定がうまくいかなかったのか。

いったん初心に戻って、解凍したものをそのままアップしてみては?心配なら変名して。
エラーの「投稿しようとしたメッセージ」欄が毎回違うと思うのですが。

最後に
> 107行目か108行目にある $st->setUpdate($message); という処理で投稿を行っています。
> ここの行をコメント化すれば投稿されません。納得いくまで処理のテストをしましょう。
がんばって!

128名無しさん:2010/01/31(日) 10:29:12
匿名にて失礼いたします。
Botの改造方法を紹介するスレ >>14の書き込みを参照し、
こちらのサイト様からDLしたファイルに入っているpost_random.phpに、
以下のように改変して文字列を挿入しました。

$username = "*****"; //Twitterのユーザー名を書き込んでください
$password = "*****"; //Twitterのパスワードを書き込んでください
//$file = "*****.txt"; //発言を書き込んだファイルの名前(変更可能)
$jikan = idate("H");

switch ($jikan) {
case 2:
case 3:
case 4:
case 5:
case 6:
$file = "*****.txt";
break;
case 7:
$file = "*****.txt";
break;
case 12:
$file = "*****.txt";
break;
case 15:
$file = "*****.txt";
break;
case 1:
$file = "*****.txt";
break;
default:
$file = "*****.txt";
}

ところが、18行目の
$jikan = idate("H");
でエラーが出てしまうらしく、上手く発言させることができません。
どうすればいいのか、ご教授頂ければと思います。

129名無しさん:2010/01/31(日) 11:12:40
今まで2重返信なんてしなかったのに急に2重返信するようになってしまった…
鯖メンテとかで時間狂ってんのかなー参った

130名無しさん:2010/01/31(日) 17:00:09
うちも>129さんと同じですね。
今までは普通にリプライしていたのですが、急に二重リプライになって
しまってます。たまに普通のリプライに戻ったりもするのですが……。
手動でreply_random.phpにアクセスしても同じです。

サーバーは@pagesを使っています。

131129:2010/02/01(月) 01:27:11
XREAなんだけど、一度cronや鯖にうpしたファイル消したりしてみたら治ったよ
手動でアクセスしたら問題はなかったかな・・・
@PAGESも使ってたけど不安定だったからXREAにしたんだよね

132名無しさん:2010/02/01(月) 08:27:16
123です。

結論からいうと、初めに戻って解凍したファイルを
ローカルでは一切いじらずにサーバーにアップし
XREAのファイルマネージャーを使ってブラウザから編集したら
XREAのcronでもあっさり成功しました。
,を付けない初期パターンで試したのですが
改行認識し、一行づつ投稿成功してます。

以前、このサポート掲示板が出来る前から、改行が認識しないという
問題が解決しないままきてますが、本当に原因がさっぱり分かりませんね。
ちなみに窓も持ってるので、そっちでも試してみてはいるんですが
改行無視で全文投稿されちゃうんですよね…。
ちゃんとUTF-8、LF、アスキーモードで転送という条件はクリアしてるんですが。

133うら:2010/02/01(月) 12:54:39
>>128
その「idate()」という関数はphp5の関数ですが、お使いの鯖がphp4なのでは?

$jikan = date("H");

と変更されては?これだとswitchの判定でまずいですかね。では

$jikan = (int)date("H");

こちらで。

134名無しさん:2010/02/02(火) 07:06:43
>>133 うらさん
教えて頂いた通りに書き換えた所、エラーが解消され、指定した時間通りに呟くようになりました。
ありがとうございます!

135うら:2010/02/02(火) 12:19:44
>>123
お、うまくいって良かったじゃないですか。
OS差異を除外できたのが成功の要因かと。

なお、円記号の話ですが。
"\n"と"¥n"。Windowsではどちらも、"¥n"に見えています。
で、phpプログラム中で「改行コード」をあらわすのは、"\n"(バックスラッシュとn)です。
"\"は、[option]+[¥]で入力するそうです。
miでしたら、モード設定 → 編集 にある「¥キーの扱い」にチェックしましょう。

またFTP転送ですが、うらはバイナリ転送に固定しています。
自分で気をつけて文字コードや改行コードを設定しているから、
ヘンに変換されなくて安心と考えています。

136うら:2010/02/02(火) 12:34:21
いま、ちくと確認してきたんですが、
MacのSafaliだと、"\n"と"¥n"。どちらも"¥n"に見えますね。
でもMacのFirefoxだと、きちんと"\n"と"¥n"が表示されています。
これじゃ「Macでは"\n"と打ってください」と言っても分かりませんね。
なんてこったい/(^o^)\

137名無しさん:2010/02/02(火) 12:38:17
でも円マークって全角だし、よっぽど初心者じゃない限り間違えなくない?
テキストエディタかFTPソフトが原因に思えるが・・・

138うら:2010/02/03(水) 12:43:06
>>137
もちろん、半角"\"の話をしてますよ。
Wikipediaの「円記号」のページに、「コンピュータにおける円記号の扱い」とあるので、詳しくはそちらで。

経過は分かりませんが、
[¥]を打鍵 → \と出た → 入力法をググって¥と入力 → 改行無視
こうかな?と。
テキストエディタもFTPも問題ないとおっしゃっていますし。

139名無しさん:2010/02/03(水) 18:40:45
んん?123です。

えーと、¥nの件なんですが、自分はtw.txtの文章の中にも打った覚えがなく
また、phpファイルの中身も、改行認識されない為の措置に
phaさんのサイトのよくある質問にあるように、tw.txtの文章の一行ごとに末尾に,を付け
$tw = explode("\n", $tweets);
これを
$tw = explode(",", $tweets);
以上のようにしか変更してません。
で、botがPOSTしてTLに反映されたツイートの頭に時々¥nと付いてしまうのは
何故ですか?という質問でした。
ちょっと話の流れが見えなくなってきたので、書き込みしました。
自分の件じゃなかったらすみません。

140うら:2010/02/04(木) 18:24:19
>>139
>>123の方は、解決しましたが、あとからMacの方が同じ轍を踏まないように原因を考えてます。
というか、Winでも同様なんでしたっけ?

改行が無視される(考えられる)原因
1. 改行コードがLFではない
2. php中の改行コード表記「\n」がおかしい

¥nが表示される(考えられる)原因
3. 改行コード\nの「\」が、¥(円記号)になってしまっている。

のどれか、だと思うのですが。

なお、>>125で言及した
> miで、モード設定 → 開く → JIS系ファイル読み込み をONに。
にして、Unicodeで保存すると、
「\」が「¥」に置き換えられて保存されてしまうようです。
miのヘルプに書いてありました。よく読まずに申し訳ない。

ちなみに、Twitterに改行コードとかタブコードを投げても、そのまんま受け取っちゃうみたいです。クライアントだと改行もタブも反映されちゃったり。

141うら:2010/02/04(木) 18:41:41
>> pha氏。
設定部も別ファイルにしてrequire_onceで読ませるとか、とにかく本体ファイルはいじらせないようにしないといけませんね。
ついでに、デバッグ用phpファイル作って、文字コードと改行コードを判定させたら?
「プログラミングができなくても」と銘打ってることですし。
それさえ確認できれば、導入エラーは相当減ると思いますが。

142名無しさん:2010/02/04(木) 20:03:38
はじめまして。
こちらのプログラムを使ってbotの製作をさせていただいています。

発言に対応したリプライを返すようにしたいのですが、
Warning: preg_match() [function.preg-match]: Compilation failed: nothing to repeat at offset 0
というエラーが出てしまい、対応する単語がなかった時の返事しか返してくれません。

reply_random.php on line 174
と出ているのですが
reply_randomは初期状態の
if(preg_match("@".$pattern."@",$replies2[$i]["text"]) === 1){
のままになっています。
どこか変更する必要があるのでしょうか…
ご教授お願いします。

143名無しさん:2010/02/04(木) 20:16:54
多分$patternがおかしいってことだから、reply_patter.phpの中身がおかしいんじゃないかなー

144142:2010/02/04(木) 20:31:51
>>143さん
ありがとうございます。
DLしたままのreply_patter.phpに変えて試してみたのですが変化なしでした…。

145名無しさん:2010/02/04(木) 23:44:05
はじめまして。
phpは全くの初心者で、phaさんのまとめを見つつbotを
作らせていただいているものなのですが、

一定の言葉に反応してリプライを返すことまでは出来たのですが、
設定していないワードを言われたときに、特定のリプライを返させる
方法が解りません。
とても基本的なことかも知れませんが、どなたか宜しければ教えていただけないでしょうか?

146名無しさん:2010/02/05(金) 00:35:43
>>58 >>73-74 の件に関して未だ解決できず困っております。
最低限、文字コードと改行コードは確認したのですが…。
対応の方をよろしくお願い出来ないでしょうか?

>>145
別途reply randomにて設定すればいいのではないでしょうか

147pha:2010/02/05(金) 01:54:24
>141 :うら:2010/02/04(木) 18:41:41
>>> pha氏。
>設定部も別ファイルにしてrequire_onceで読ませるとか、とにかく本体ファイルはいじらせないようにしないといけませんね。
>ついでに、デバッグ用phpファイル作って、文字コードと改行コードを判定させたら?
>「プログラミングができなくても」と銘打ってることですし。
>それさえ確認できれば、導入エラーは相当減ると思いますが。

設定部を別にするのは次のバージョンではするつもりです。
改行コードでつまづく人多いですね。。。
改行コード、文字コードの判定ってできるのかな。調べてみます。
もしくは、改行でデータを区切るのをやめてしまったほうがいいかなーというのも考えてます。
どうしよ。

148pha:2010/02/05(金) 01:55:38
>>145
>設定していないワードを言われたときに、特定のリプライを返させる方法が解りません。

tw.txtの中身に一種類の言葉しか書かなければそれが返ると思うんですが、そういうことじゃないですかね。

149pha:2010/02/05(金) 02:06:32
つぶやきのデータファイル、全部,(コンマ)とかで区切るようにしようかなあ。
それは面倒くさい?

150pha:2010/02/05(金) 02:09:42
今までの改行区切りをコンマ区切りに変えるって、
僕とかはエディタで正規表現置換で一発だから別に簡単、と思うんだけど、
そういうの慣れてない人には改行区切りのがいいかしら。

デフォルトはコンマ区切りで、希望者は改行区切りにも簡単に変えられるようにするとか。

PHPの配列形式で書き込んでもらうのもありだけど、それも余計めんどくさいかな。

151名無しさん:2010/02/05(金) 02:25:50
>>150
改行区切り慣れてしまったんで、そのままのほうが有難いですね

152pha:2010/02/05(金) 02:47:17
>>151
そうっすよねー、今までのファイルはそのまま使えるようにしたいですね

153145:2010/02/05(金) 02:59:51
>>146,pHaさんの意見を参考に色々やってみた結果、
思った通りに動かせることが出来ました!
本当にありがとうございます!

154pha:2010/02/05(金) 03:16:29
>>153
おー、よかったー

155名無しさん:2010/02/05(金) 08:05:57
初めて質問させていただきます。
こちらのサイトにはお世話になっております。

指定したユーザーにリプライ返さないようにするにはどうしたら良いですか?
どこをどういじったらいいのかどうにもこうにもわからなくて…

156名無しさん:2010/02/05(金) 08:29:00
>>155
どこで止めるかっていうのもあるけど…
リプライの文章を作る、ってところで止めるなら
           require_once($replyPatternFile);
           foreach($reply_pattern as $pattern => $res){
               $pattern = preg_replace("@\@@","\@",$pattern);
               if(preg_match("@".$pattern."@",$replies2[$i]["text"]) === 1){                                        
                   $message = $res[array_rand($res)];
                   break;
               }
           }
ってところを
if(stristr($replies2[$i]["screen_name"], "ID名")){
exit;
}else {
           require_once($replyPatternFile);
           foreach($reply_pattern as $pattern => $res){
               $pattern = preg_replace("@\@@","\@",$pattern);
               if(preg_match("@".$pattern."@",$replies2[$i]["text"]) === 1){                                        
                   $message = $res[array_rand($res)];
                   break;
               }
           }
}
にしたらいいんじゃないかな?
自分も試行錯誤中のPHP初心者なんで信用ならないけどもw

157名無しさん:2010/02/05(金) 08:50:03
>>147
サーバにアップしたファイルの文字コードと改行コードを表示するphpファイルをごくごく簡単に作ってみました。

http://www1.axfc.net/uploader/Sc/so/79699.zip

件の円記号については、一筋縄ではいかなそうなので、コメントアウトしてますが。
手を入れていただいた上で、同梱していただければと。

158うら:2010/02/05(金) 08:51:24
名前入れてなかった。

159名無しさん:2010/02/05(金) 09:15:31
リプライのことで質問なんですが
◯◯+△△という発言に反応するようにできますか?
◯◯だけでも、△△だけでも駄目で、両方のキーワードがあった場合に
反応するという感じです。
「◯◯は△△なの?」とか「△△なら◯◯だよね」というように
自由に組み合わせた発言に反応させたいです。

160!ryokin:2010/02/05(金) 09:51:15
ifの中にifでおk
これだから初心者は困るぜ。。。

161!ryokin:2010/02/05(金) 09:53:10
それより&&使うほうがいいな

162名無しさん:2010/02/05(金) 09:54:57
正規表現つかえば?
AA.*BB|BB.*AA

163!ryokin:2010/02/05(金) 10:02:25
その場合は.*?にした方がいいと思われ

164!ryokin:2010/02/05(金) 10:04:29
取り出さなければ意味ないかw

165名無しさん:2010/02/06(土) 00:00:15
.*で充分だよ

166名無しさん:2010/02/06(土) 00:06:20
初心者が簡単な質問をしづらい空気が流れているけど
あえて空気を読まず質問させてください。
reply_pattern.phpで、「RT」と同じように「QT」を含んでいてもリプライをさせないためにはどうしたら良いでしょうか?
きっととても簡単な解決法があると思うのですが、よく分からなくて。
どなたかよろしくお願いします。

167155:2010/02/06(土) 01:04:53
>>156
試してみたところうまくいったようです!ありがとうございました!

168名無しさん:2010/02/06(土) 12:03:00
>>167
exitじゃなくてbreakの方が良かったかもしんない…

169名無しさん:2010/02/06(土) 13:05:42
>>167
ごめん、いろいろ試してみたんだけど
if($resOnlyBegginingReply){}を
if(!preg_match("/ID名/",$re["screen_name"])){}で囲って
if(!preg_match("/ID名/",$re["screen_name"])){
  if($resOnlyBegginingReply){
  〜〜〜〜
  }
}else{
&nbsp; echo "<p>".$re["screen_name"]."にはリプライしません。</p>";
}
ってなるよう〆たほうが早めに処理してかつ途中放棄しなくていいかもしれない@w@
あとID名のところを正規表現で複数指定できる


>>166
どうしてphpの中にあるRTを検索して、見てみないのかな??
if(strpos($re["text"],"RT") === FALSE){

if(!preg_match("/RT|QT/",$re["text"])){
2箇所変える

170<削除>:<削除>
<削除>

171名無しさん:2010/02/06(土) 15:28:08
初めてbotをつくろうとしてます
こちらのphpを元に@PAGESのサーバーを借りてアップロードしてみました
ですがアップしたphpファイルのアドレスにtwitterbotを足してアクセスすると
「指定されたページはみつかりません」となってしまいます

書かれている通りにやっているだけに原因が分かりません 見落としているだけかもしれませんが…
またアップするファイルは動かしたいphpと発言内容のtxt、Servicesの中のphp全てで良いのでしょうか?
初歩的な質問ですがよろしければどなたか教えて頂けると嬉しいです

172名無しさん:2010/02/06(土) 15:34:43
>>171
いったんまるっと全部のフォルダをあっぷして試してみては?

173名無しさん:2010/02/06(土) 15:46:57
>>172
レスありがとうございます
試してみましたが何も変わりませんでした…

174名無しさん:2010/02/06(土) 16:14:52
>>171
twitterbotを足してアクセスすると
ってのがいまいちわからんが

http://www15.atpages.jp/***/ファイル名.php

にアクセスしても無理でしたか?

175171:2010/02/06(土) 16:27:45
>>174
>あなたの持っているサイトのURLがhttp://example.com/hoge/で、 post_random.phpを使う場合だったら、
http://example.com/hoge/twitterbot/post_random.phpを ブラウザのアドレスバーに入力してアクセスしてみてください。
とあったのでtwitterbotを足すのかなと思ったのですが…

フォルダ分けしているので
http://www16.atpages.jp/***/フォルダ名/ファイル名.phpで試しましたがこの場合は英文が表示されました
例にあるような「postに成功しました」とは出ないみたいです

176名無しさん:2010/02/06(土) 16:42:39
>>170
うーん自分の環境では作動してるんですけどね

&nbsp; &nbsp; &nbsp; &nbsp; //一人に対しては一回しか返事しない
&nbsp; &nbsp; &nbsp; &nbsp; //返事するリストに既に名前があったら返事しない
&nbsp; &nbsp; &nbsp; &nbsp; if(!in_array($rdata["user"]["screen_name"],$replyUserList)){
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $re = array();
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $re["screen_name"] = $rdata["user"]["screen_name"];
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $re["name"] = $rdata["user"]["name"];
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $re["text"] = $rdata["text"];
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $re["id"] = $rdata["id"];
if(!preg_match("/ID名/",$re["screen_name"])){
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if($resOnlyBegginingReply){
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(strpos($re["text"],"@".$username) === 0){ //発言の先頭に@があった場合のみ返答
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$replies[] = $re;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}else{
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if($resOnlyNotRT){
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(!preg_match("/RT|QT/",$re["text"])){
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$replies[] = $re;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}else{
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$replies[] = $re;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
}else{
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;echo "<p>".$re["screen_name"]."からのreplyにはリプライしません。</p>";
}
&nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; //返事する名前のリストを作る

ってなってます?

177名無しさん:2010/02/06(土) 16:44:16
>>175
どんな英文?phpエラーじゃなくて?

178171:2010/02/06(土) 17:05:27
>>177
これがエラーなのかすら分かりませんが

Warning: require_once(Services/Twitter.php) [function.require-once]: failed to open stream:
No such file or directory in /usr/local/www/htdocs/***/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/***/public_html/フォルダ名/post_random.php on line 36

と出ました

179名無しさん:2010/02/06(土) 17:11:39
>>178
Servicesフォルダも全部アップした?

180171:2010/02/06(土) 17:17:09
>>179
全部で9ファイルですよね?
一応同じフォルダに全てアップしたはずなんですが…

181名無しさん:2010/02/06(土) 17:19:32
>>180
フォルダ名にUPしたってこと?
たとえばconvert_text.phpはフォルダ名/ServicesにUPしないとだめだよ

182171:2010/02/06(土) 17:40:08
>>181
例えばbot1というフォルダを使ってたらその中にServicesフォルダを作ってアップということですか?

そうすると今度は
Warning: require_once(Services/Twitter/Connector.php) [function.require-once]:
failed to open stream: No such file or directory in /usr/local/www/htdocs/***/public_html/bot1/Services/Twitter.php on line 23

Fatal error: require_once() [function.require]: Failed opening required 'Services/Twitter/Connector.php'
(include_path='.:/usr/local/lib/php') in /usr/local/www/htdocs/***/public_html/bot1/Services/Twitter.php on line 23

と表示されたのですが、ということはbot1の外にServicesフォルダを作らなければいけないのでしょうか?

183名無しさん:2010/02/06(土) 17:44:16
>>182
わかった、HP知識皆無なんだね
そういうのはPHP以前の問題だからさ、せめてHP作成の知識つけてからにしようか?
そんな調子じゃ@PAGESにも他ユーザーにも迷惑掛かるよ?

184171:2010/02/06(土) 17:48:34
>>183
すみません、ある程度は分かっていたつもりなんですがやはり初心者には無理なようですね
自力でなんとか頑張ってみたいと思います 長々とご迷惑お掛けしました

185名無しさん:2010/02/06(土) 17:56:03
>>184
自力で頑張るのはいいけど基本的なHP作成知識つけてからアップしないとダメだよ?
PHPの質問は誰かが答えてくれると思うよ
お手上げならbotジェネレーターサービスとか使えば良いと思う
ttp://twittbot.net/

186名無しさん:2010/02/06(土) 17:57:54
>>176

すみません初歩ミスをしていました。
修正したところ上手く作動しました。
ありがとうございます!

187166:2010/02/06(土) 19:16:56
>>169
ありがとうございます、うまくいきました!
その行を書き換えるんだろうな、というところまではたどり着いていたのですが、
PHPはまだまだ分からなくて、自力で書き換えられなくて。
分かる人にとってはなんでこんな簡単なことが分からないんだ?って思うかもですが……。

188145:2010/02/07(日) 00:06:55
こんにちは。
先日は、大変こちらでお世話になりました。

新たに問題が発生しておりまして困っております…
機能はちゃんと、@に反応してリプライを返してくれていたのですが、
今日になって全く反応してくれなくなりました。
手動でreply_randomにアクセスしても、まっ白が画面になるばかりで
投稿されません。
@を送っていない状態で、アクセスすると「受け取った@はないようです。」は出るのですが・・・

これってつぶやきのブロックなのでしょうか?

189名無しさん:2010/02/07(日) 00:53:44
>>188
恐らくreply_pattern.phpに不備がある
何処かミスってないか?

190145:2010/02/07(日) 01:19:05
>>189
ご指摘ありがとうございます!!
一箇所だけコンマが抜けておりました・・・!!
大変お騒がせいたしました、こちらのミスでしたね。
修正後、きちんと作動すること確認いたしました。

191名無しさん:2010/02/07(日) 02:05:48
reply_patternについて質問です。

現状だと『こんにちは』『こんばんは』ときたら全員に『こんにちは、{name}』『こんばんは、{name}』と返すようになっていますが、
こちらで指定したIDの人からの『こんにちは』には返して『こんばんは』には返さないようにするにはどうしたらいいですか?

192191:2010/02/07(日) 02:29:12
説明ミスですすみません。

botという文字を含むIDからの、です。

193名無しさん:2010/02/07(日) 08:15:25
>>191
>169
if(!preg_match("/ID名/",$re["screen_name"])){
&darr;
if(!preg_match("/bot/",$re["screen_name"]) || !preg_match("/こんばんは/",$re["text"])){
多分これで

194!ryokin:2010/02/07(日) 11:15:39
if(!preg_match("/bot/",$re["screen_name"]) && !preg_match("/こんばんは/",$re["text"])){

初心者はまず自分で調べてから質問しよう!
簡単なことなんだからすぐに見つかるはず。
質問すれば誰かが解決してくれると思ったら大間違い。

195191:2010/02/07(日) 14:49:24
>>193 >>194
ありがとうございます。おかげで解決しました!

196名無しさん:2010/02/07(日) 20:20:51
はじめまして。
PHP初心者で、phaさんのおかげで何とかbotは動いております。

{tweet}で話しかけられた発言内容を返すのは理解しているのですが、
反応キーワードだけを返すことはできますでしょうか?

たとえば、
つ(花|はな)
を反応キーワードとしている場合、
「あげる つ花」
を受け取ったら
「君にもあげる (ここにキーワード)」
と返したいのですが、
「君にもあげる {tweet}」
と書いてしまうと、
「君にもあげる あげる つ花」
となってしまうので、どうにかしたいのですが…
諦めて、
「君にもあげる つ花」
と定型文にするしかないのでしょうか?

197名無しさん:2010/02/08(月) 00:12:08
>>196
つA だとちょっと判別しにくいかも
つ『A』 ならどうかな

呟きbotさんで解説してくれてるよ
http://mukurobot.blog101.fc2.com/blog-entry-5.html
http://mukurobot.blog101.fc2.com/blog-entry-13.html

198名無しさん:2010/02/08(月) 04:18:58
初めまして。phpについての知識はほとんどなかったのですが、
phaさんの配布プログラムのお陰で何とかbotを動かすことが出来ています。
現在はreply_patternを色々と増やしている最中なのですが、ここでちょっと行き詰ってしまいました;;
例えば「サンドイッチ」と「サンドウィッチ」の両パターンに反応させたくて、
"サンド[イウィ]ッチ"=> array(
"○○",
),
と[]で括ってみたのですが、「サンドイッチ」にも「サンドウィッチ」にも反応しません。
[]を解いて"サンドイッチ"にしたら反応してくれたのですが……
これは一体何がいけないのでしょうか?
凄く初歩的な質問で申し訳ないのですが、教えて頂けると有り難いです。

199名無しさん:2010/02/08(月) 04:57:03
[]は一文字だよ
(イ|ウィ)にしないと

200名無しさん:2010/02/09(火) 01:55:57
>>199 さん、答えて下さってありがとうございます。
(イ|ウィ)にしたら、どちらのパターンでもきちんと返してくれるようになりました!
本当にありがとうございました。

201名無しさん:2010/02/10(水) 07:24:50
申し訳ありません。お手上げなので質問させて頂きます。
以前のバージョンでは問題なく動いたのですが、ver.2.0にすると
bot.phpにアクセスした時
Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in (URL)/EasyBotter.php on line 4
というエラーが出てしまいます。
EasyBotter.phpの中は特にいじっていないし、他のサーバー(php5以上)でも試してみたのですが、
上記のようなエラーこそ出ないものの何も表示されません。
どなたか原因わかる方いらっしゃるでしょうか…?

ちなみにEasyBotter.phpの4行目付近の記述です。(配布のものと変わっていないはずですが…)
<?php
class EasyBotter
{
private $_screen_name;
private $_consumer_key;
private $_consumer_secret;
private $_access_token;
private $_access_token_secret;

202名無しさん:2010/02/10(水) 14:04:56
いつもphaさんのプログラムを利用させていただいております。ありがとうございます。
この度、フォロワー数4桁を目前にしてリプライが最新の1件しか返っていないことに気付きました。
cronを2分間隔で実行しているのですが、2分以内の一番上の発言しか拾ってくれません。
利用させていただいてますプログラムはver1,4です。
何か良い対処方法はございませんでしょうか…?

203名無しさん:2010/02/10(水) 20:14:51
>>201
ver2.0のエラー等の質問はver2.0の方でしたほうが良いかもしれないですよ〜

204201:2010/02/10(水) 20:46:02
>>203
わかりました。そちらに移動してみますね。誘導ありがとうございます

205名無しさん:2010/02/11(木) 21:41:55
初めまして。phaさんにはお世話になっています。
色々試してお手上げなので質問させていただきます。
bot.phpにつなごうとすると
Fatal error: Class 'PEAR_Exception' not found in /home/ユーザー名/public_html/PEAR/HTTP/Request2/Exception.php on line 59
と表示されて、説明のようにいかないのですが、どうすればつながるのでしょうか・・・?
サーバーはblue-sky-serverです。

206名無しさん:2010/02/12(金) 02:42:37
はじめまして。1.42を使っています。
tw.txtにURLを直接書き込んで、試しにツイッターの方へ書き込みテストをしてみたのですが、
短縮URLになりません。
過去ログ等を読んでいると、ツイッター側で短縮URLに変換するみたいなことを書いてあったような気がするのですが、
変換されておらず、tw.txtに書き込んだURLのままになっています。
どこか変更する場所があるのか、もしくは現状では短縮URLには出来ないのか、
ご教授頂けるとありがたいです。

207名無しさん:2010/02/12(金) 03:01:25
>206
あらかじめbit.lyを使って短縮したURLをtw.txtに書き込めば良いですよ

208名無しさん:2010/02/12(金) 10:38:36
>>207
ありがとうございました。
bit.lyってアカウント持ってるといろいろ出来ることを知りました。

209名無しさん:2010/02/12(金) 12:37:16
はじめまして。バージョン2.0を使わせていただいております。phaさんのサイトにはいつもお世話になっております、ありがとうございます。
うまれて初めてbotを作っていて、壁にぶち当たったので質問させてください。
サーバにアップロードしてreply_pattern.phpで以下のエラーが出てしまいます。

Parse error: syntax error, unexpected
T_CONSTANT_ENCAPSED_STRING, expecting ')' in /usr/local/www/htdocs/ohyesmybot/public_html/reply_pattern.php on line 12

英語も読めませんのでどういう意味なのか教えていただきたいです。
初心者丸出しの質問を失礼しました。

210名無しさん:2010/02/12(金) 17:19:15
質問です。
最新版をサーバーにアップロードしてみたのですが
bot.phpに手動アクセスすると正常に実行されるのに
reply_pattern.phpに手動でアクセスするとエラーが出るのは仕様ですか?
cronで動かすのはbot.phpだけという認識で合っているでしょうか

211名無しさん:2010/02/12(金) 17:20:06
>>209
12行目に記述ミスがあるんじゃない?
line 12とかあればまず12行目を確認してみるよろし

212名無しさん:2010/02/12(金) 17:21:12
>>210
patter.phpは反応単語データが入ってるだけですよ
なんやら実行できるのはbot.phpだけ

213名無しさん:2010/02/12(金) 17:21:24
はじめまして、botの稼動は出来たのですが、リプライがおかしいので質問します。
まったくの初心者なので指示通りの事以外は何もしてないのですが、リプライがきちんと出来ている場合と、出来ていない場合があり、
"指示部分"=> array( や ), などを相手にリプライしている事があります。また、リプライによっては "設定した言葉",という風になるものもあり、何処が原因なのかがわかりません。
半角全角のチェックなどはしましたが、どうやらそういうものでもないような…

どこを見ればいいのか、直せばいいのかご教授ください。宜しくお願いします。

214名無しさん:2010/02/12(金) 17:30:17
>>212
早速のレスありがとうございます!安心しました

さくらのサーバーでcron設定をしてみたところ、定期POSTはするのに
リプライがまったく返ってきません。
cron設定はbot.phpとreply_pattern.phpの両方に対してかけてみたのですが
EasyBotter.phpに対してもcronを実行するのでしょうか?

215名無しさん:2010/02/12(金) 17:31:57
>>214
bot.phpだけでいいよ
定期ポストと同じif{}の中にリプライ入れてない?
リプライはifの中に入れなくていいよ
よっぽど何か条件付けたいとき以外はね

216名無しさん:2010/02/12(金) 17:40:32
>>215
ありがとうございます、bot.phpだけでいいんですね
他の設定削除してきました

>定期ポストと同じif{}の中にリプライ入れてない?
すみません、これはどういうことでしょうか?
自分のreply_pattern.phpがおかしいのかと思い、
phaさんの作られているreply_pattern.phpをそのままアップしてみたのですが
それでも「おはよう」等に反応がない状態です。
(属性の変更はしています)

217名無しさん:2010/02/12(金) 17:54:57
>>216
定期ポスト(30分おきとすると)
if(date("i") % 30 === 0){
//用意したデータをランダムにポストしたい
$response = $eb->postRandom("post_random.txt");
}
ってなってるでしょ?このif{}の中に
//@で話しかけられたときにリプライしたい
$response = $eb->reply(2,"reply.txt","reply_pattern.php");
も入れてるんじゃないか、ってこと
if{}の中に入れてれば30分おきにしかリプライチェックしてくれないよ
ファイル名は私のものになっているんで、各自違うとは思うけど

if{}に入れてないのにダメだってことは、記述ミスかcron間隔がおかしいんじゃないかい?

218名無しさん:2010/02/12(金) 18:11:24
>>217
bot.phpの中ですよね?

//=============================
//botの動作をここに書いてください
//先頭に//がある行はコメント扱いなので実行しません。実行したい行の頭の//を削除してください。
//=============================
//$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_pattern.php");

自分はこのように設定しています。(最新版をDLしました)
if{}という記述はその下の

//// cronを実行するたびに毎回実行するのではなく、
//// 実行する頻度を変えたい場合の例は以下のとおりです。

というところにあったのですが、そちらは手を加えていません。
こちらを修正するべきなのでしょうか?

ちなみにcronの間隔は5分に設定しています。
あいかわらず定期POSTだけ呟いています。

219名無しさん:2010/02/12(金) 18:16:49
>>218
さくら鯖ですね。コントロールパネルら5分毎の設定例が載ってますが
さくら鯖は最短でも1時間毎じゃないと強制的に無効になったりスルーします。おそらく5分毎設定は無効にされているのだと思いますので
短い間隔で動かしたいなら、他のcronで動かさないと動きません


新着レスの表示


名前: E-mail(省略可)

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

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

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

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