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

TwitterBotPHP質問スレ

622名無しさん:2011/01/23(日) 23:30:18
失礼します。初心者です。
@Pagesで設置したBotのうち、reply_pattern.phpだけこのようなエラーが・・・。
Parse error: syntax error, unexpected ';', expecting ')' in /usr/local/www/htdocs/(ユーザー名)/public_html/twitterbot/reply_pattern.php on line 33
詳しい方、よければご教示願います。

623名無しさん:2011/01/24(月) 11:06:35
>>622
そのreply_pattern.phpの30行から35行くらいまでをコピペで貼ってください

624名無しさん:2011/01/25(火) 00:09:44
すいません、パーミッションの変え方が分からないのですが
どなたか説明してもらえませんか?

それとボットを動かす場合はbot.phpにブラウザでアクセス
って書いてあるのですがこちらも上手く理解できません、どなたかお願いします

625名無しさん:2011/01/25(火) 11:20:25
初心者の皆さんへ
まずは

EasyBotter初心者質問スレ3
http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1287944674/1-3

を熟読して下さい

626名無しさん:2011/02/03(木) 06:58:31
現在bot.txtをbot.phpと変えて、複数のつぶやきをランダムにつぶやいています。
ですがmysqlのデータベースからランダムに取り出せないかと思っております。
もしどなたかお分かりになる方がいらっしゃいましたら教えていただけませんでしょうか?
宜しくお願い致します。

627名無しさん:2011/02/03(木) 10:46:50
626の続きです。
現在mysqlのテーブルから特定のフィールドの値は取り出せています。

$data = array(
"いろはにほへと"
)

この部分をどのように書いたら良いのかが分かりません。もしお分かりになる方がいらっしゃいましたら、教えて下さい。宜しくお願い致します。

628名無しさん:2011/02/04(金) 02:38:32
>>626-627
そこ弄るより、本体からmysql呼び出す方が早いんじゃない?

629名無しさん:2011/02/04(金) 18:15:46
毎日、日没の時間などに呟くBOTが作りたいのですが、
どういう風に作ったらいいのでしょう。
何処からかデータを参照してそのデータに基づいて呟くということだと思うのですが・・・。

630名無しさん:2011/02/04(金) 18:40:52
>>628
本体ってEasyBotter.phpですよね?
function postRandomあたりをいじるってことですよね?
どなたかアドバイスをいただけると助かります。宜しくお願い致します。

631名無しさん:2011/02/07(月) 11:46:16
「reply_pattern.php」はbotへのつぶやきとTLに反応して返信するようになっていると思うんですが、
登録したワードのうち「bot宛てのつぶやき」にだけ返信するワードを指定できるのでしょうか。
もしできるのであれば指定の仕方を教えて欲しいのですが。

632名無しさん:2011/02/07(月) 12:47:27
>>631
サンプルのbot.php内の
$response = $eb->replyTimeline(2,"reply_pattern.php");
を実行するとbotのタイムラインに反応しますが@+アルファベットがあるとスルーされます

$response = $eb->reply(2,"data.txt","reply_pattern.php");
を実行するとbot宛のリプライに反応します

実際にはいくつか例外がありますが
大筋そんな理解で問題ないと思います


で、bot宛のリプライのみ反応するようにさせたい場合は
タイムライン反応用にreply_tl_pattern.php
リプライ反応用にreply_pattern.php
と二種類のパターンファイルを作成してbot.php内で
$response = $eb->reply(2,"data.txt","reply_pattern.php");
$response = $eb->replyTimeline(2,"reply_tl_pattern.php");
のように指定すれば出来るのではと思います

633名無しさん:2011/02/10(木) 14:56:10
>>632
遅くなりましたが、ご回答ありがとうございました。

634名無しさん:2011/02/13(日) 11:45:40
【バージョン】 Ver.2.0x
【設置鯖名】tok2
【PHPのバージョン】?
【手動】 一部動く
【実行】 GAE-Cron
【実行間隔】 60分間隔(CRON等で定期的に実行している場合)
【不明点】 (エラーメッセージがあればコピペ推奨)

自分のケースに合うようなパターンが検索から見つれられなかったので、こちらに書かせていただきます。
(もし既出のないようでしたらすみません)

普通に定期POSTはできるのですが、
リプライが一切応答しません。
手動でbot.phpにアクセスしましたが
それでも反応しないようです。
下記にbot.phpの編集後のものを書いてみましたが、
どこか誤りがあるでしょうか。

ちなみに、時間に関係なく60分に1度定期POSTしたいので、
cronを60分に設定しました。

あと、関係はないと思いますが、
reply_pattern.phpにアクセスしても表示されないのですが、
これは特に問題はないのでしょうか。

【bot.php】
<?php

//=============================
//EasyBotterを呼び出します
//=============================
require_once("EasyBotter.php");
$eb = new EasyBotter();
//=============================
//botの動作をここに書いてください
//先頭に//がある行はコメント扱いなので実行しません。実行したい行の頭の//を削除してください。
//=============================

$response = $eb->autoFollow();
$response = $eb->postRandom("data.txt");
$response = $eb->reply(2,"data2.txt","reply_pattern.txt");
$response = $eb->replyTimeline(2,"reply_tl_pattern.php");
//===================================================
//// cronを実行するたびに毎回実行するのではなく、
//// 実行する頻度を変えたい場合の例は以下のとおりです。
//// PHPのdata()の応用の仕方は以下のURLを参照ください。
//// http://php.net/manual/ja/function.date.php
//bot.phpを実行したときに毎回実行される
$response = $eb->postRandom("data.txt");
?>

635名無しさん:2011/02/13(日) 12:24:56
>>634
タイムライン用のパターンとリプライ用のパターンを別に準備しているということでいいですね?

で、
$response = $eb->reply(2,"data2.txt","reply_pattern.txt");
となっていますが、reply_pattern.txtのファイルの中身の形式は
サンプルのreply_pattern.phpと同じになっていますか?
だとすれば拡張子を.phpにしてbot.phpの該当部分も修正して試してみて下さい

636名無しさん:2011/02/13(日) 14:41:26
>>635
reply_pattern.txt の中身は以下のように若干、リプライバターンを増やしています。
(語句)の部分ですね。実際には言葉を入れていますが。

<?php
//特定の単語を受け取った場合に特定の反応を返したいときに使う、反応のパターンを書くためのファイルです。
//複数のパターンに一致する場合は上のものが優先されます。PHPの正規表現にも対応しています。
$data = array(
//「おはよ」を含む発言(「おはよ」「おはよう」「おはよー」など)を受け取ると「おはようございます、御主人様」もしくは「Good Morning, Master.」と返すサンプルです

"おはよ"=> array(
"(語句)",

),
//「今日の運勢」を含む発言を受け取ると6種類の中からランダムな返答を返すサンプルです
"今日の運勢"=> array(
"大吉",
"中吉",
"小吉",
"末吉",
"吉",
"凶・・・",
),
//「こんにちは」「こんにちわ」「こんちは」「こんちわ」を含む発言を受け取ると「こんにちはこんにちは!」と返す正規表現のサンプルです

"こん(に)?ち[はわ]"=> array(
"(語句)",
"(語句)"=>array(
"(語句)",
),
"(語句)"=>array(
"(語句)",
),
"(語句)"=>array
"(語句)",
),

,
),

//「◯◯は好き?」という発言を受け取ると「◯◯おいしいです」と返す正規表現のサンプルです
//ただし「◯◯」の前には空白か「、」か「。」を入れないと「は好き?」以前の文章が全て繋がって表示されます
"([^\s、。]+?)は好き?"=> array(
"$1おいしいです",
),
//「会話終了」を含む発言を受け取るとリプライを返さなくするサンプルです
"会話終了"=> array(
"[[END]]",
),
);


ちなみに、txtの部分をphpに直したのですが、
やはりリプライしません。(bot.txtの該当部分も修正済み)
パターンを追加した時の記述の仕方に問題があるのでしょうか。

637名無しさん:2011/02/13(日) 18:14:49
>>636
新しく足された部分は反応語句と一対一であると仮定して違う部分を修正してみました
目で追っただけですが多分これで動くと思います

<?php
//特定の単語を受け取った場合に特定の反応を返したいときに使う、反応のパターンを書くためのファイルです。
//複数のパターンに一致する場合は上のものが優先されます。PHPの正規表現にも対応しています。
$data = array(
//「おはよ」を含む発言(「おはよ」「おはよう」「おはよー」など)を受け取ると「おはようございます、御主人様」もしくは「Good Morning, Master.」と返すサンプルです

"おはよ"=> array(
"(語句)",

),
//「今日の運勢」を含む発言を受け取ると6種類の中からランダムな返答を返すサンプルです
"今日の運勢"=> array(
"大吉",
"中吉",
"小吉",
"末吉",
"吉",
"凶・・・",
),
//「こんにちは」「こんにちわ」「こんちは」「こんちわ」を含む発言を受け取ると「こんにちはこんにちは!」と返す正規表現のサンプルです

"こん(に)?ち[はわ]"=> array(
"(語句)",
),
"(語句)"=>array(
"(語句)",
),
"(語句)"=>array(
"(語句)",
),
"(語句)"=>array(
"(語句)",
),
//「◯◯は好き?」という発言を受け取ると「◯◯おいしいです」と返す正規表現のサンプルです
//ただし「◯◯」の前には空白か「、」か「。」を入れないと「は好き?」以前の文章が全て繋がって表示されます
"([^\s、。]+?)は好き?"=> array(
"$1おいしいです",
),
//「会話終了」を含む発言を受け取るとリプライを返さなくするサンプルです
"会話終了"=> array(
"[[END]]",
),
);

638名無しさん:2011/02/13(日) 22:00:47
>>637さん
アドバイスありがとうございました。
しかしながら、どうしても反応しないようです。
もう一度だけ一式ダウンロードから
一からはじめてみようと思います。
もし、それでも反応できないようでしたら、
いろいろと自分で考えられること、
皆さんからのアドバイスはやりつくしたと思いますので、
あきらめようと思います。
非力な私に力を貸していただき、ありがとうございました。

639名無しさん:2011/02/13(日) 22:17:58
>>638
拡張子を勝手に変えないこと、違いを軽視しないこと
拡張子が.txtのままダウンロードしたファイルは改行の形式がCR+LFに変更される場合があるので注意、再アップ前の保存時に確認
保存形式が変わっている場合と変わらない場合の区別が出来て慣れるまでは保存直前に必ず保存の形式を確認する

わりとみんな通る道です
少なくともここに一人

640名無しさん:2011/02/15(火) 02:05:07
botの名称(名前)を自動変更することは可能でしょうか?

641名無しさん:2011/02/16(水) 13:25:29
日付を指定した呟きではなくリプライについて質問です。
リプライ専用のファイルでcronを動かしているのですが、色々やってみてもわかりませんでした。
すみませんが、間違っている部分を教えていただけませんでしょうか。
直接このファイルを叩いても、
「3分以内のタイムラインに反応する単語がないようです。」とだけしか出てくれません。
よろしくお願いします。

<?php
//=============================
//EasyBotterを呼び出します
//=============================
require_once("EasyBotter.php");
$eb = new EasyBotter();
$response = $eb->replyTimeline(3,"tl_pattern.php");

if(date("n") == 2 && datew("j") == 15){
$response = $eb->reply(3,"norep.txt","valentine.php");
}else{
$response = $eb->reply(3,"norep.txt","reply_pattern.php");
}


?>

642641:2011/02/16(水) 13:32:46
すみません、641です。
上のファイルの日付指定は昨日の物になっていますが、実際は今日の日付でやっています。
あと、この記述にしていると、TLの反応語句にはリプライするのですが、
自分宛の@で送られたリプライに対しては無反応になってしまいます。

643名無しさん:2011/02/16(水) 13:46:10
>>641
datew("j")

644641:2011/02/16(水) 14:27:15
>>643さん
即レスありがとうございました!できました!!!
もう少し早く書き込んでいたらバレンタインに間に合ったのにorz
bot.phpに書いてあるのをコピペしただけだったんですが…

645名無しさん:2011/02/16(水) 17:12:22
>>644
責任転嫁イクナイ、PHPエディタ使えば解決

646名無しさん:2011/02/16(水) 19:14:46
初めて質問させていただきます。
1時間おきにランダムポストされるように
if(date("i") == "0"){
$response = $eb->postRandom("data.txt");
}
と設定していました。
最初は問題なく1時間おきに動作していたのですが、突然なにもつぶやかなくなってしまいました。
*リプライには反応します。
*一度サーバーからファイルを全部削除してアップロードし直しましたが駄目でした。
*if(date("i") == "0"){}の部分をを消すと投稿される。
最初はこれで上手く動いていたのですが…。しばらく様子を見てみると直るということもあるのでしょうか。
何かやった方がいい事があればご教示ください。お願いします。

647名無しさん:2011/02/16(水) 20:06:40
>>646
「if(date("i") == "0"){}の部分をを消すと」
消した状態で投稿された時間は正確ですか?
その確認をしてみて下さい

推測ですがcronが00分の間に実行されていないのでは?と考えます

648646:2011/02/16(水) 20:52:53
>>647
if(date("i") == "0"){}を消して、手動で動かしてみました。
cronは、「cronが使えないサーバのための擬似cron」http://www.synck.com/contents/technote/technote_1236834699.htmlというのを利用させて貰っていて、PCの電源が入っている時のみ動くような状態です。2分おきの設定にして動かしています。
お話伺っていると、この擬似cronが00分調度のタイミングの時のみ投稿される…という事なんですよね。勉強不足ですみません。
文字通りプログラミングなどできない者で…
検索したりして調べてはみたのですが
if(date("i") =="5")
という書き方をすれば、00分から05分の間に実行され、問題解決できるでしょうか。
お時間ありがとうございます。よろしくお願いします。

649646:2011/02/16(水) 22:05:20
>>647さん、ありがとうございます。解決しました!
この擬似cronを実行する時に、偶数分でスタートさせたら上手くいきました。いただいたお返事がとても参考になりました。
ありがとうございます!!!

650名無しさん:2011/02/17(木) 00:19:24
>>649
老婆心でアドバイスしておくと
「毎時1分以内の時」の設定にした方が、今後ズレが生じた時の為になるよ

651名無しさん:2011/02/18(金) 04:49:25
atpagesでcronはGAEをつかっています。
定期的にランダムで呟くようにはできたのですが
自動でフォロー返しさせようとしても





Twitterへの投稿に失敗しました。
ユーザー名:@

object(SimpleXMLElement)#5 (2) {
["request"]=>
string(20) "/statuses/update.xml"
["error"]=>
string(22) "Status is a duplicate."
}




とでます。どなたかアドバイスお願いします。

652名無しさん:2011/02/18(金) 10:50:17
>>651
phaさんの公式ページ、手動編参照
http://pha22.net/twitterbot/2.0/faq.php

653名無しさん:2011/02/18(金) 15:48:03
>>652
コピペしたんですが、
やはりエラーになります。


Bot.phpに
$eb = new EasyBotter();
これと↑
$response = $eb->autoFollow();
これの↓間に
?>
入れればいいんですよね?

なぜエラーになるんでしょうか?


object(SimpleXMLElement)#5 (2) {
["request"]=>
string(20) "/statuses/update.xml"
["error"]=>
string(22) "Status is a duplicate."
}




["error"]=>
string(22) "Status is a duplicate."
ここって、22行目が間違ってるってことでしょうか?

654名無しさん:2011/02/18(金) 16:25:11
Status is a duplicate でぐぐってください

655名無しさん:2011/02/18(金) 16:33:38
>>654
ありがとうございます

ただ、data.txtには30パターンほど入れてるのですが、自動フォロー返しにしようとすると
毎回表示されます。ランダムリプライ自体は作動しているのですが、フォローは
かたくなに、してくれません。

Bot.phpは

<?php
//=============================
//EasyBotterを呼び出します
//=============================
require_once("EasyBotter.php");
$eb = new EasyBotter();
$response = $eb->reply(6,"data.txt","reply_pattern.php");
$response = $eb->postRandom("data.txt");
$response = $eb->autoFollow();
?>

をコピペして、cronの作動時間に合わせて、6に書き換えただけなのですが、どこがダメ
なのでしょうか?

よろしくお願いします。

656655:2011/02/18(金) 17:18:37

自己解決しました。

お騒がせしましたが、アドバイスして下さった方ありがとうございました。
これからも何かあったらよろしくお願いします。

657名無しさん:2011/03/03(木) 18:12:00
他人宛のリプライにもTL反応させたいのですが、どこを触ればいいのか見当がつきません。
アドバイス頂けると嬉しいです。

また、bot同士の会話の為に反応させるので、(普段はTL反応させていない)迷惑にはなりません。
よろしくお願いします。

658名無しさん:2011/03/04(金) 04:38:52
>>657
過去ログにその回答があるので探して下さい

659名無しさん:2011/03/04(金) 18:10:55
バージョン2.04を使っております。
3/3の昼以降から一部機能(phpの一部)が動かなくなっております。

botの動き
(1)1日2回午前と夜に動くように指定しています。
(2)同じ人とは1度に3回以上リプライしないように指定しています。
(3)リプライにはお返事します
と指定しているのですが、現在(3)のみが稼働しているという状況です。

動かなくなったタイミングがレンタルサーバーがPHP5.3になったのと同じということと、
私自身がtxtはさわりましたがphpをさわったりしていなかったので
サーバーの影響なのだろうかと考えているのですが、
原因が分かる方いらっしゃいますか?

バージョン2.05にしたらなおりますかね?

660名無しさん:2011/03/04(金) 18:22:28
あ!補足です
5.3に対応したけれど5.3への切り替え自体はしていません
5.2のままにしているので メンテナンスがあった という事だけ
になります・・・ね

とりあえずレンタルサーバーの方へも問い合わせはしております。
返事はまだ無いです。

661名無しさん:2011/03/04(金) 19:35:58
【バージョン】 Ver.2.0x
【設置鯖名】 検討中
【PHPのバージョン】 不明
【手動】 まだ
【実行】 検討中
【実行間隔】 検討中
【不明点】 tw.txtが解凍フォルダに入っていない。

botを作ろうと思ってダウンロードしてみたら、つぶやきを書きこむファイルが見当たりません。
まだサーバも探し中で申し訳ないのですが、ぜひ使いたいので教えてください。よろしくお願いします。
テキストドキュメントは、データとライセンスが入っていました。

662名無しさん:2011/03/04(金) 20:25:33
>>661
phaさんの説明にある「tw.txt」は記述ミスです
「data.txt」というのがありますので、説明を読み替えて使用して下さい

663名無しさん:2011/03/04(金) 23:54:25
>>661
そんなときこそ上にリンクが貼ってある非公式wikiを見てください

664名無しさん:2011/03/08(火) 01:21:19
fizby.netのサーバーをを使っているのですが、1ヶ月ほど前から動作しない、
また動作してもやたら不安定(ポストしたりしなかったり3分間隔のはずのリプライを30分後とかに返したり)になってしまいました。
しかも2週間ほど前からはFTPまで接続できなくなってしまって…。
どなたか同じような現象になってる方いらっしゃいますか?
また、解決策わかる方おられないでしょうか

すれ違いだったらすみません

665名無しさん:2011/03/09(水) 13:11:20
初めて質問させていただきます。
曜日と時間ごとに違うツイートを(30分ごとに)させたいのですが、
if(date("i") % 30 === 0){
switch(true){

case (date("w") == "1″ && date("G") > "6″ && date("w") == "1" && date("G") < "12"):
$response = $eb->postRandom("data1.txt");
break;
}
みたいな表記ではできませんか?ここからcaseをずらーっと足していく形で・・・。
一応調べてはみたのですが、曜日と時間に分岐させる方法はあっても、それらを30分ごとにツイートさせる方法がみつかりませんでした。
よろしくお願いします。

666名無しさん:2011/03/18(金) 07:05:07
【バージョン】 Ver.2.0.5
【設置鯖名】 @PAGES
【手動】 エラー表示されますが、正常にリプライします。
【実行】 GAE-Cron
【実行間隔】 6分
【不明点】
 本日、縮小運営でbotを再開させた者です。
 対botに対してのリプライ制限を設けたく、非公式wikiにある「特定のアカウントとのリプライ回数を制限したい」を実装させたところ、動作に問題はないもののエラーが出てしまい解決策が分からずにいます。
 動くので大丈夫かとも思いましたが、botとの会話過多はどうして避けたいと思い、現状ではどうしても不安が残ってしまうのでぜひご教授いただければと思います。
 
 EasyBotter.phpへの変更点は「特定のアカウントとの〜」のみです。
 kaiwalog.txtは自動で作れなかったので空のテキストを手動でサーバーに上げました。アクセス権は606へ変更済みです。
 通常post用とリプライ用のcronは別々に設定、鯖にも別々のファイルで上げました。
 
 
 [手動でbot.phpを叩いた際の表示文]
 Warning: file_put_contents(kaiwalog.txt) [function.file-put-contents]: failed to open stream: Permission denied in (略)/reply/EasyBotter.php on line 263
 
 Warning: preg_match() [function.preg-match]: Compilation failed: missing terminating ] for character class at offset 27 in (略)/reply/EasyBotter.php on line 271
 
 Twitterへの投稿に成功しました。
 @(botアカウント)に投稿したメッセージ:@(ID略) リプライ文 http://twitter.com/botアカウント/status/48498980673433600
 
 Warning: file_put_contents(log.dat) [function.file-put-contents]: failed to open stream: Permission denied in (略)/reply/EasyBotter.php on line 69

667名無しさん:2011/03/19(土) 01:30:38
>>>666
kaiwalog.txtとlog.datのパーミッションはあなたのレス番と同じ666で試してみようか

668名無しさん:2011/03/20(日) 20:09:04
>>667
ありがとうございます。
kaiwalog.txtとlog.datのパーミッションを666に変えて再度試したところ、
「Warning: preg_match〜」のエラーを1つ減らせることができました!

ですが、「Warning: file_put_contents〜」エラーは未だ表示されてしまいます。
こちらは解消できないでしょうか・・・、再びご教授いただけると嬉しいです。
>>666からの変更点はパーミッションのみです。


[手動でbot.phpを叩いた際の表示文]
Warning: file_put_contents(kaiwalog.txt) [function.file-put-contents]: failed to open stream: Permission denied in (略)reply/EasyBotter.php on line 263

Twitterへの投稿に成功しました。
@botIDに投稿したメッセージ:@ID略 リプライ文 http://twitter.com/(botID)/status/49419672…(数字略)

Warning: file_put_contents(log.dat) [function.file-put-contents]: failed to open stream: Permission denied in (略)/reply/EasyBotter.php on line 69


[エラーが出ているEasyBotter.phpの前後文]
233 //■■会話数制限(リプライ返し)■■
(略)
260 $botdata=implode(",",$botdata);
261 $botdata=(string)$reply->user->screen_name.",".$botdata;
262 }
263 file_put_contents($filenameb,$botdata);
264 if($botkey == "0"){
265 continue;
266 }


66 //どこまでリプライしたかを覚えておく
67 function saveLog(){
68 rsort($this->_repliedReplies);
69 return file_put_contents($this->_logDataFile,$this->_repliedReplies[0]);
70 }

669名無しさん:2011/03/21(月) 18:57:45
【バージョン】 Ver.2.0
【設置鯖名】 @pages
【手動】 動かない
【不明点】曜日と時間ごとに違う内容を30分ごとに呟くbotを作ろうとしています。
ifの入れ子で出来るかな?と試してはみたのですが、bot.phpにアクセスするとNULLという単語と二分以内に受け取った@はないようです。と表示されます。
NULLは意味のない、とかそういう意味ですよね?bot.phpの中身が間違っているということでしょうか?
ご教授願います。

670名無しさん:2011/03/21(月) 21:57:47
>>669
まずは非公式wikiの通りに、一通りの設置テストをしてください
いきなりifで括らず、デフォルトの動作の確認を

671名無しさん:2011/03/22(火) 22:28:18
【バージョン】 Ver.2.05
【設置鯖名】 @pages
【手動】 @リプ、TL反応リプは正常
【不明点】
18分、36分、54分の時に通常ポストをさせたくて
if(date("i") % 18 == 0){
$response = $eb->postRandom("data.txt");
}
と書いたのですが、54分と0分にポストします。どこを直せば良いのでしょうか?ご教授お願いします。

672名無しさん:2011/03/22(火) 23:45:20
>>671
@pagesはサーバータイムが大幅にずれていることが散見される
初心者スレ3の279を参考に、まずはサーバータイムが正確かどうかを確かめて下さい
サーバータイムが正しいようであればあとは書き方の問題になってくる

手動/CRONとサーバータイムがずれていたり、鯖重過ぎなどでジャストタイムで動かない時は
%を使わず前後1分、または前後どちらか1分を含めた時間で動かすと良い
||で全部の時間を書き出すか、%を「== 0」以外にするかはお好みで

673名無しさん:2011/03/23(水) 10:28:08
>>672
ありがとうございます。
修正したのですが、今度は
Parse error: syntax error, unexpected $end in /〜bot.php on line 82
とエラーが出てきました。82行目は[EOF]があるだけで一切いじってないのですが…どこが悪いのでしょうか

674名無しさん:2011/03/23(水) 14:16:40
>>673
とりあえず非公式wikiの通りに全機能を一つずつ確認
PHP改造やデータ改変しない状態でまずはやってみて
そして次回からは初心者スレを利用してください

675名無しさん:2011/03/23(水) 14:47:49
>>673
回答ありがとうございました。色々いじっていたら解決したみたいです。
スレ違い失礼致しました。

676名無しさん:2011/03/30(水) 00:49:21
OAuthの設定でTwitter Applications | dev.twitter.comから登録しました
問題なく使えていたのですがURLが変更になり変えようとしたところ
Editのところで変更されていても呟きに反映されません
原因がわかる方いたら教えてください

677名無しさん:2011/04/08(金) 17:00:00
ツイートやリプライなどで{name}を使う時に、
名前の中に全角、半角の「@」が含まれていたらそれ以降を読まない…という事は出来ますか?

作っているのがゲームキャラのBotのせいか、名前@R18ワード…みたいな名前登録の人が複数いて
それをBotに発言させるのが嫌なんですが名前を全く呼ばないのもつまらないかと…。
震災後、「名前@居住地区」という表記にしている方も多く見受けられるので
そういった変更が可能であれば教えて頂きたいです

678名無しさん:2011/04/08(金) 22:24:00
整理age

679名無しさん:2011/04/09(土) 19:49:37
TL反応を分けているbotがいくつか存在しますが、あれはどうやってやるんでしょうか?
(「○○○」と@を飛ばせばTL反応をしますし、「×××」と@を飛ばせばTL反応をしなくなります。みたいな機能のことです)

680名無しさん:2011/04/09(土) 23:39:16
>>677
できる

自分は例えばbot同士で呼び合うとき、キャラ名(fanbot)だと
(fanbot)というところが邪魔なので、(fanbot)というところを
丸ごと抜くように設定している

681677:2011/04/10(日) 23:56:58
>>680
ありがとうございます、挑戦してみます。

682名無しさん:2011/04/19(火) 15:25:59
>>676
同じ状況になったことあるが新しく作るしかなかった。

683名無しさん:2011/04/21(木) 13:45:03
>>677
>>680
私もその変更をしたいのですがどうやればいいのでしょうか
ereg_replaceで@から文末までを削除…ですか?

684名無しさん:2011/05/08(日) 12:45:30
pha氏のサイトにあった
//また、ファイル名をdata.phpに変えれば、phpの配列形式で書くことも可能です。その場合は$dataという変数を使って、以下のように書いてください。
この説明どうりにdata.txtからdata.phpに替え$data変数を使い書きました。しかし以下のようなエラーメッセージが出て動きません
$data = array(
〜以下省略〜
);

Warning: array_rand() [function.array-rand]: First argument has to be an array in /…/EasyBotter.php on line 220

投稿するメッセージがないようです。

なぜでしょう?

685名無しさん:2011/05/08(日) 20:15:17
>>684
<?php
$data = array(
"メッセージ内容",
);

<?phpがないなら投稿するメッセージがないといわれるのは当然

686名無しさん:2011/05/08(日) 22:24:43
>>685
初歩てきなミスでした
指摘ありがとうございました

687名無しさん:2011/05/11(水) 16:56:20
検索するにもどのような単語で検索すればよいか分からず、質問させていただきます。

たとえばbotに複数のキャラクターが共存していて、「@botid Aさんおはよう」というように、
キャラクターの名前を入れてリプライを送ると、そのキャラクターからリプライが返ってくるようにしたいのです。
今は正規表現で記述して分けていますが、非常に長くなり、管理しづらくなってきました…。

なので、まずキャラクター名を検出して、そのキャラクター名によって別のプログラムに飛ばし、
そこから該当するリプライを探す…。というようにする方法を教えていただけないでしょうか?
(できればファイルは分けず、reply_pattern.phpの中で収められると助かります)

なかなかうまく説明する言葉がみつからず拙いですが、ヒントだけでもご回答していただけると助かります。
よろしくお願いいたします。

688名無しさん:2011/05/11(水) 19:52:12
>>687
現行スレくらい読みましょう

689名無しさん:2011/05/11(水) 20:44:20
>>688
ありがとうございます。
少しずつですがなんとなく見えてきました。
あたって砕けてどうしても分からなくなったらまたお力添えをお願いにくると思いますが、よろしくお願いいたします。

690名無しさん:2011/05/15(日) 14:39:42
EasyBotter Ver2.04betaを使っています。
例えばA_botのTLにB_bot宛のリプライがあったとして、
それを拾って、B_bot宛にリプライした人にリプするっていう事はできるのでしょうか?

tl_pattern.phpに
"@B_bot おはよう"=> array(
"こっちにもおはようっていって!",
),
って書いたらエラーになっちゃいまして・・・。

691名無しさん:2011/05/15(日) 20:37:45
\@

692名無しさん:2011/05/16(月) 19:18:07
質問失礼します。
リプライでおみくじのような機能を付けようかと思ってます。

"占い"=> array(
"今日の運勢は○○、ラッキーアイテムは■■、ラッキーカラーは××です。",
),

この○○、■■、××にランダムに文章を入れたいのですが、調べようにも検索ワードがわからなくて困っています。
ユーザー定義関数かもと思いましたが、文章内への組み込み方がわからず…
よろしければ教えてくだされば幸いです。

693名無しさん:2011/05/16(月) 21:32:05
>>692
横着せずその分作る。
ないとは言い切れないから言っておくと、それだと同じ人にはリプ送れない仕様になる。

694名無しさん:2011/05/16(月) 21:51:46
>>693
組み合わせが2300通りを越したので楽をしようと思ってしまいました。不快にさせてしまったなら申し訳ございません。
>同じ人にはリプ送れない仕様になる
とは、どういうことでしょうか?
何度もすみません

695名無しさん:2011/05/16(月) 22:59:00
>>692

-------reply_pattern.php

"占い"=> array(
"今日の運勢は{fortune}、ラッキーアイテムは{fortune_item}、ラッキーカラーは{fortune_color}です。",
),

・・・・・
・・・・・
・・・・・
$fortune = array("大吉","吉","小吉");
$fortune_item = array("帽子","傘","靴");
$fortune_color = array("赤","青","緑");


-------EasyBotter.php

function convertText($text, $reply = FALSE){
if(strpos($text, "{fortune}") !== FALSE){
$text = str_replace("{fortune}",$fortune[array_rand($fortune)],$text);
$text = str_replace("{fortune_color}",$fortune_color[array_rand($fortune_color)],$text);
$text = str_replace("{fortune_item}",$fortune_item[array_rand($fortune_item)],$text);
}

・・・・・
・・・・・
・・・・・

696名無しさん:2011/05/16(月) 23:42:09
>>695
早速弄ってこようと思います。
ありがとうございました!

697690:2011/05/17(火) 19:40:48
A_botのTLにB_bot宛のリプライがあったとして、
それを拾って、
B_bot宛にリプライした人にリプする
っていう事はできないんでしょうか?

698名無しさん:2011/05/17(火) 20:16:51
\@

699690:2011/05/17(火) 21:00:10
>698
意味がわかりません。

700名無しさん:2011/05/17(火) 21:46:47
>698
ああ、それだわww

>697
A_botのreply_pattern.phpに

"^\@B_bot\s"=> array(
"@B_botに話しかけるときは、必ず私を通していただきたい。",
),

って話しかな?

701690:2011/05/17(火) 22:40:34
>700
いいえ、ちょっと違います・・・。
A_botのTL上にある「B_bot宛のリプライ」を拾いたいんです。
tl_pattern.phpに書き込んでリプライする方法といいますか。

702名無しさん:2011/05/17(火) 23:28:14
>>701
A_botのtl_pattern.phpに上記を書けばいいのでは?
言ってる意味が分からない。
バカですまぬ。理解力がおよばない。

703690:2011/05/18(水) 00:02:42
700さんが書いてもらったものでは、
TLで拾ってくれなかったんです。
改造などはしてないのですが…。

704名無しさん:2011/05/18(水) 00:32:29
>>703
あ、makeReplyTimelineTweets関数の中で横槍リプライを抑制してました。
そこ書き換えて特定の@だけ通すようにすれば拾うかと。

705690:2011/05/18(水) 00:44:21
>704
ありがとうございます!
あのあたりの、あれかなぁ…というのは分かるので、試してみます。

706690:2011/05/19(木) 00:12:37
何度も申し訳ありません。
makeReplyTimelineTweets関数の

if(preg_match("@".$pattern."@u",$text, $matches) === 1 && !preg_match("/\@/i",$text)){
あたりなのかと思って、書き換えてはみたものの、うまくいきません。
助言お願いいたします。

707名無しさん:2011/05/19(木) 07:23:55
>>706
どんなふうに書き換えました?ソースお願いします

708690:2011/05/20(金) 00:23:56
すみません、初心者すぎてとりあえず入れ込んだのは↓のとおりです。
("/\@/i",$text))ではじいたのかな?と思ったので。

if(preg_match("@".$pattern."@u",$text, $matches) === 1 && preg_match("/\@B_bot/i",$text)){ && !preg_match("/\@/i",$text)){

709名無しさん:2011/05/20(金) 07:55:30
>>708
if(preg_match("@".$pattern."@u",$text, $matches) === 1
&& (preg_match("/@B_bot/i",$text) || !preg_match("/@/i",$text))){

710名無しさん:2011/05/20(金) 07:59:06
>>709です。訂正 RT、QTには反応させない
if(preg_match("@".$pattern."@u",$text, $matches) === 1
&& !preg_match("/RT|QT/i",$text)
&& (preg_match("/@B_bot/i",$text) || !preg_match("/@/i",$text))){

711690:2011/05/22(日) 00:27:11
>>710
うまくいきました、ありがとうございます!!

712名無しさん:2011/05/24(火) 13:42:08

$response = $eb->reply(1,"","reply_pattern.php");

を使って、ボットあての文章を
そのまんまの文章で返事をさせるところまではできました。

今度は
ボットあての文章をUTF-8にエンコしたものにして返させたいのですが
reply_pattern.php
の書き換えで実現可能でしょうか?

目標としては、
自サイトの検索結果ページのURLを返すようにしたいと思っていて、

tinyurlのapi-create.php
などを使ってURLを短縮させるところまで行きたいのですが・・・

713名無しさん:2011/05/27(金) 16:07:37
age

714名無しさん:2011/05/30(月) 16:40:16
すこし質問させて下さい。
あまり上手く説明出来ないんですが、bot.phpに最初から入っている

$response = $eb->reply(2,"data.txt","reply_pattern.php");

を使って手動でリプライのテストをやっているんですが
@が来てない時は「2分以内に受け取った@はないようです。」と出るのに、
いざ話しかけた後に動かすとページが真っ白になってしまいます。
どうすればいいのでしょうか・・・?

715名無しさん:2011/05/30(月) 17:37:41
>>714
初心者スレを「白」で検索

716名無しさん:2011/05/31(火) 03:01:06
調整age

717名無しさん:2011/06/13(月) 23:25:02
自動フォローの設定をしていたら変なところをいじってしまいブラウザからPHPを見ると
Fatal error: Call to undefined method EasyBotter::getFollowers() in /home/users/1/サーバー/EasyBotter.php on line 387
こんなエラーが出ます。
そこの部分は
$response = $this->getFollowers();
こんな感じなんですがどこか直せってことなんでしょうか?

718名無しさん:2011/06/14(火) 07:21:19
>>717
どこか直せってことですね
http://10key.net/php_error.html#fatal
間違えてdel押したりとかもあるので、
修正前のソースとコンペアすることをオススメする。コンペアってナニ?とか聞かないでね。

あと、エラーメッセージの内容くらい調べようよ。調べればわかるから。そのためのメッセージだから。最初から考える気ないのかな?

719名無しさん:2011/06/17(金) 13:45:19
少し質問させて下さい。
非公式wikiにある「特定のアカウントとのリプライ回数を制限」なのですが、
kaiwalog.txtのリセットを、「毎日リセット」から「毎時・もしくは数時間に1回リセット」に変える事は可能でしょうか?

//■■リプライした人の記録リセット■■
if(date("i")=="00"){$fp = fopen("kaiwalog.txt", "w");fclose($fp);}

をwikiを参考にしてbot.php内に組み込んでみたのですが上手く機能せず…
修正箇所などあれば、ご指摘頂けると嬉しいです。

リプライ制限は正常に動いており、FTPからkaiwalog.txtを見るとlogもしっかり残っているのですがリセットされません。

720名無しさん:2011/06/17(金) 16:18:17
>>719
ちゃんとサーバータイムで00分に実行されてます?

721名無しさん:2011/06/17(金) 19:12:13
reply_pattern.phpにきちんとテキストエディタを使い、
文字コードはUTF-8、改行コードはLFに設定していますがブラウザで見ると文字化けしています。

内容自体は基本の設定に書いてある
$data = array(
//「おはよ」を含む発言(「おはよ」「おはよう」「おはよー」など)を受け取ると「おはようございます、御主人様」もしくは「Good Morning, Master.」と返すサンプルです
"おはよ"=> array(
"おはようございます、御主人様",
"Good morning, master.",
),
//「今日の運勢」を含む発言を受け取ると6種類の中からランダムな返答を返すサンプルです
"今日の運勢"=> array(
"大吉",
"中吉",
"小吉",
"末吉",
"吉",
"凶",
),
);
をコピペしている状態です(まだ承認はしていません。)

過去ログを拝見すると、もう一回DLし直すのが解決策でしょうか?

phpが不安定な気がしました。data.txtを最初data.phpとしてやってたんですが文字化けしてしまい、txtの方だと正常になりました。

何か見落としているのでしょうか。


新着レスの表示


名前: E-mail(省略可)

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

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

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

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