レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。
EasyBotter初心者質問スレ3
-
まず、公式ページや非公式wikiをチェックして下さい。
また、>>2-3のFAQ・過去スレ・関連スレをチェックして下さい。
それでも分からない場合は、【質問テンプレ】を使って質問して下さい。
もちろん回答が得られない場合もあります。(回答をもらえた時にはお礼もね。)
■手動でも(ブラウザで表示させても)動かない …… >>2-3のチェックを
■CRON関連でトラブル …… CRONスレへどうぞ。
Twitterbotのcronスレ
http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1260351215/
■EasyBotter.phpを修正したが動かない …… 改造は初心者の範疇外です。該当スレへ。
EasyBotter2.0
http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1265625817/
▼公式ページ:http://pha22.net/twitterbot/
▼非公式wiki:http://www26.atwiki.jp/easybotter_wiki
▼過去スレ
1:http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1266290935/
2:http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1273843076/
▼質問テンプレ
【バージョン】 Ver.1.4x/Ver.2.0x
【設置鯖名】 レン鯖名/自宅鯖
【PHPのバージョン】
【手動】 動く/動かない
【実行】 CRON鯖名/ブラウザ自動更新/手動/他
【実行間隔】 ●分間隔(CRON等で定期的に実行している場合)
【不明点】 (エラーメッセージがあればコピペ推奨)
▼回答いただける方へ
回答はあくまで任意、答えられる範囲で結構です。(誘導も兼ねてage進行)
回答できない、したくない場合は下手に煽らずスルー推奨。
-
バージョン】 Ver.2.05
【設置鯖名】 @PAGES
【PHPのバージョン】5.0以上
【手動】 動く
【実行】 GAE
【実行間隔】 通常60分、リプライ、TL2分
【不明点】
時間帯わけについてです。
時間帯によって同じ単語でも違うリプライを返すようにしたいのですが、単語数が少ないので別ファイルではなく1つのファイルの中で分けたいです。
wikiを参考にして
"おはよ"=> array(
if(date("G") >10){
"ん…朝か。おはよう{name}。お前は早いんだな…",
} else if(date("G") > 9 && date("G") < 13){
"おはよう{name}。俺と同じ時間なんてゆっくりだな。よく眠れたか?",
} else {
"おはよう{name}。ずいぶんゆっくりだったな。",
} ),
このように書いて見たのですが反応しませんでした。
時間わけをしていない単語には正常に反応するので、)抜け、;抜けはないです。
if(date("G") >10){
"おはよ"=> array( 以下略
としてみたり、
"おはよ"=>
if(date("G") >10){
array("ん…朝か。 以下略
ともしてみることも考えたのですができますでしょうか?
よろしくお願いいたします。
-
>>951
勝手な判断で余計な処理を入れてはいけません
大人しくファイルわけした上でbot.phpで時間分けすること
-
>>952
私の現在の技量云々は別として、PHPがそのような動作ができるかをお伺いしたかったのですが…
PHPでは不可能なのですか?それとも技術的に無理だとおっしゃりたいのですか?
-
>>951=953と同じことやらかして「動かない!」ってわめいてた人いたよねー
-
>>954
初心者スレはすべて「時間」で検索したのですが解決策が見当たらなかったので質問させていただきました。
初心者スレ1のはじめの方に似たようなものがありましたが、そちらの方は諦めていらしたので解決にならなかったので。
お騒がせしておりますがPHPとして、記述次第でできるかどうか知りたいです。
-
え…逆になんでそのやり方でできると思ってるのか聞いてみたい>953
-
>>956
通常ポストに使うファイルをifで分ける時に$data array()の中に書いて使えるから。
-
arrayを勘違いしてる人だな…
-
>>958
配列をつくるもので、
$data array(
"おはよう"=> array("A","B","C",),
);
なら「おはよう」とあればABCいずれかを$dataに入れる
この解釈は間違っていますか?
PHPの解説サイトも何件か目を通しているのですが…
-
arrayに入れ子できたっけ?
-
>>960
私が調べた限りでは書いていなかったので、それが知りたいです
-
勘が鈍い子だな・・・
-
できるかできないかが知りたいってんだよ
できないならできないでできませんの一言で済むの
聞かれたことにだけ答えりゃ済む話なのに質問内容も理解できないわけ?
勘が鈍いのなんのって言うけど、私が聞きたいのはYESかNOかだから、おまえらが答える限りきき続けるよ
なんで上からこんなにねちねち叩かれなきゃいけないんだよ
答えたくないなら答えないって>>1にも書いてあんだろ
-
ヒント【暇】
-
>>963
何様だお前
-
>>951に書いてる方法じゃダメだけど、そのやりたいこと自体は可能だと思う
この掲示板じゃないどこかでやり方書いてるの見たことある
自分もPHP詳しくないので曖昧にしかわからないけど、たしか
最初に汎用的なの(全時間共通)を設定しといて、それから時間ごとの別パターンを書く
みたいなやり方
てかまぁそう喧嘩腰にならずに、できる・したい範囲で助け合えばいいじゃん
-
>>966
レスありがとうございます。
できることはできそうなのですね。
色々検索はしたのですが見当たらなかったのでこちらに書かせていただいたのですが、どうも間違った選択肢だったようです。
もう少し検索をかけてやってみようと思います。
ありがとうございました。
-
>>947です。
あれから色々試したんですが、未だ
>>950の
PHPに必要でなくともCGIには必要な事がある
というのがわからず解決していない現状です。
.htaccess以外に何か必要なのでしょうか?
ほんと初歩的質問なのかもしれませんが、教えて頂けると助かります。
-
>>963
言い方に従うのなら出来ると言えば出来る。
ただし差し込む場所が違うし観点がずれている、勘が良ければ分かる。
ヒントはPHPでHPを作ることが出来る。作り方としてはHTMLとあんまし変らない。
ただ、>単語数が少ないので別ファイルではなく1つのファイルの中で分けたいです
との事だけどそれはただの横着
-
>>969
的確なレスありがとうございます。
やり方がちがうのですね。
PHPについて詳しいサイトを探して実装してみようと思います。
「おはよう」と「おやすみ」の2つで、それも時間わけのタイミングが違うからファイル内で分けようとするのは横着でしょうか。
こちらの方は、回答の際に何か一言加えて上に立ちたがるのですね。
-
自分は>958>960あたりで気付いたけど
>970は勉強してる割にPHPの構成がわかってないのかな
-
>>949
私はXREAで動いていますよ〜。
特に何もしていないです。
-
>>970
思い通りの動作にならない場合や暴走するリスクを考えるならファイル分けするのは当然。
自分勝手な事をした挙句、鯖の他の人にまで迷惑を掛けることになる。
雑談スレで勝手に失望してるけどお門違いだし、自分の視野からしか見ていないから他の人への配慮が出来ていない。
-
【書き込み前の注意】
初心者さん
→EasyBotter初心者質問スレ3
改造してる人・NOT初心者
→EasyBotter2.0
雑多な質問
→スレ立てるほどじゃないその他の質問スレ
CRON・定期実行
→Twitterbotのcronスレ
自作・他botプログラム等
→TwitterBotPHP質問スレ
EasyBotter公式サイト・非公式Wiki・初心者スレ>>1-3も読もう!
-
逆引きを加えておこう
EasyBotter初心者質問スレ3
→初心者さんかつ改造未導入であること
EasyBotter2.0
→慣れきたので改造をしてみたい、改造を自己責任で行える方
botにこんな機能があったらいいなスレ
→考案及び提示
phaがときどき見るかもしれないスレ
→EB製作者様への感想・意見・バグ報告
-
EB参考リンク
リンク先に迷惑を掛けないこと
本家配布元
http://pha22.net/twitterbot/
EasyBotter 非公式wiki
http://www26.atwiki.jp/easybotter_wiki
SAK Streets - PHP 開発言語資料
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/sak3php.htm
そふぃのPHP入門
http://nyx.pu1.net/
-
今@page使ってますが、なんかしっかりとPHP打ち込んでも動かなかったり、
最初から用意されてるものも反応なかったり不安定なのでロリポップ鯖を借りるか検討してます
今ロリポップ鯖をレンタルしてる人に聞きたいのですが、プランってロリポプランで大丈夫ですか?
チカッパじゃないと動かないとか無いでしょうか・・・
-
【バージョン】Ver.2.05
【設置鯖名】 @PAGES
【PHPのバージョン】5.2.6
【手動】 動く
【実行】 GAE-Cron
【実行間隔】 2分間隔
【不明点】
通常の発言やTL返信は問題ありません。
ただ、@返信について問題があります。
reply_pattern.php内で
"A"=> array(
"B",
),
"C"=> array(
"D",
),
"E"=> array(
"F",
),
のように記述しているのですが、
例えば登録されていない「Z」という単語で話し掛けると、
Cのリプ台詞である「D」を返信します。
また、登録されている単語「C」で話し掛けると、
Aのリプ台詞である「B」を返信する事もあります。
(この別単語のリプ台詞が返ってくる事象は、
全ての登録単語について起こる訳ではありません。)
何回か単語の記述順番等を変えてみたりしたのですが、
Cのリプ台詞ではなくAのリプ台詞を話すようになる等、
根本的な解決には至っていません。
リプ関係について、bot.phpでは
<?php
//=============================
//EasyBotterを呼び出します
//=============================
require_once("EasyBotter.php");
$eb = new EasyBotter();
$minute = date("i");
$hour = date("G");
//リプ設定
if($hour < 7){
$response = $eb->reply(3,"sleep_now.txt","");
} else if($hour > 5 || $hour < 1){
$response = $eb->reply(3,"n_data.txt","reply_pattern.php");
}
と記述しています。
この部分は「reply_pattern.phpに該当がなかった場合には、n_data.txtを参照する」
という意図で記述したのですが、
これは私の設定が間違えているのでしょうか?
ちなみに、今まで一度もn_data.txtに登録された台詞を@返信した事がありません。
-
>>978
状況がイマイチわからんので、とりあえず気になる点を
> if($hour < 7){
こう書いてるのに
> } else if($hour > 5 || $hour < 1){
ここの部分は、ちょっとおかしい(というか無意味)になってる部分がありますよね
直接動作には関係ないですが、意図してる動作が不明瞭
よく意味がわからなかったら非公式wiki見てちょっとお勉強が必要
登録してない単語が何故か・・・という部分だけど
> "A"=> array(
この部分
「A」が単一単語なのか、正規表現使っているのかわからないのでなんともいえませんが
「A」の所、末尾に「|」がついてたり、「.」「*」みたいなメタ文字が混じってませんか?
-
>>978
解説すると上位にあるものが優先されるため、2つ目が死に設定になってしまっている。
//リプ設定
if($hour < 7){//〜7時
$response = $eb->reply(3,"sleep_now.txt","");
} else if($hour > 5 || $hour < 1){//〜1時&5時〜(両方死に設定)
$response = $eb->reply(3,"n_data.txt","reply_pattern.php");
}
リプ関連は>>979さんの言ってる感じじゃないかな
"A"=> array(
"B",
),
"C"=> array(
"D",
),
"E"=> array(
"F",
),
の部分も正確にさらしてくれたらアドバイスできるかもしれない
-
作中のキャラの誕生日の0時におめでとうをつぶやかせたいのですが
時報に日付を加えるにはどうしたらいいのでしょうか?
0時に一言だけつぶやいて後はいつも通りにしたいです
-
今見つけたのですが
このようにひたすら並べて使っても大丈夫ですか?
//誕生日
if(date("m") == 1 && date("d") == 21 && date("G") == 0 && date("i") == 0){
$response = $eb->postRandom("ome1.txt");
}
if(date("m") == 6 && date("d") == 16 && date("G") == 0 && date("i") == 0){
$response = $eb->postRandom("ome2.txt");
}
if(date("m") == 4 && date("d") == 2 && date("G") == 0 && date("i") == 0){
$response = $eb->postRandom("ome3.txt");
}
-
>>981
スマートな書き方じゃないけど
CRONと鯖の時間が一致していて、なおかつ軽快に動作するなら大丈夫だよ
ただ、0時0分ちょうどの動作は遅れやすいので…まあ、運かも
正確動作を考えるなら非公式wiki参照の事
http://www26.atwiki.jp/easybotter_wiki/pages/25.html#id_ce8e3a32
http://www26.atwiki.jp/easybotter_wiki/pages/33.html
-
>>983
0時くらいに動いてくれればいいのでズレは大丈夫です
ありがとうございます!
-
>>984
>>983が言ってるズレは>>982の書き方じゃ対応できないと思うけど…
-
>>984
自分が使っているものに希望のに対応させてみたよ
switch構文だけどこんな辺りでいいなら
早いのには対応できないからそこは勘弁してね
分けてあるのはこちらの元ツイートが若干違うためですが
//=============================
//★誕生日ツイート★
//=============================
switch(true){
case (date("m") == 1 && date("d") == 21 && date("G") == 0 && date("i") == 0):
$response = $eb->postRandom("ome1.txt");
break;
case (date("m") == 1 && date("d") == 21 && date("G") == 0 && date("i") == "1"):
$response = $eb->postRandom("ome1.txt");
break;
case (date("m") == 6 && date("d") == 16 && date("G") == 0 && date("i") == 0):
$response = $eb->postRandom("ome2.txt");
break;
case (date("m") == 6 && date("d") == 16 && date("G") == 0 && date("i") == "1"):
$response = $eb->postRandom("ome2.txt");
break;
case (date("m") == 4 && date("d") == 2 && date("G") == 0 && date("i") == 0):
$response = $eb->postRandom("ome3.txt");
break;
case (date("m") == 4 && date("d") == 2 && date("G") == 0 && date("i") == "1"):
$response = $eb->postRandom("ome3.txt");
break;
}
-
>>979>>980
改めてreply_pattern.phpを見直してみたところ、
|の消し忘れと.が語尾にくる語句がいくつかありました。
ので、これらを消したり語尾にこないように改善したところ、
無事に該当なしの場合にはn_data.txtを参照するようになりました。
御指摘ありがとうございます。
あと、時間分けは自分でやっていて訳が分からなくなっておりまして…
botを深夜0時から朝の6時まで寝言を返したりするようにしたくて、
<?php
//=============================
//EasyBotterを呼び出します
//=============================
require_once("EasyBotter.php");
$eb = new EasyBotter();
$minute = date("i");
$hour = date("G");
//リプ設定
if($hour < 6){
$response = $eb->reply(3,"sleep_now.txt","");
} else if($hour > 5){
$response = $eb->reply(3,"n_data.txt","reply_pattern.php");
}
御指摘があったように、こんな感じに直してみました。
これで正しいのかも良く分かってないので、
もう一度非公式wikiみて勉強してきます…
-
>>987
上の方は〜5:57、下の方は6:00〜でちゃんと動く筈
下はelseだけでも問題ないかも(elseは上位命令以外のすべてなのでこの場合同じ働きをする)
-
>>988さん
ありがとうございます。
一度elseにした事があるのですが、どうにも挙動がおかしくて…
とりあえず987の構文で間違いがないようなので、
とりあえずこれで何日か様子を見てみようと思います。
-
>>972
情報ありがとうございます。
何か余計なことしてしまったんでしょうかね・・・
また色々いじってみます。
-
私も|僕も|ぼくも|わたしも|俺も|オレも|おれも 〜 だ。|です。|である|なんだ|だよ
このような文章の 〜 部分のみ引用するにはどのように記述すればいいのでしょうか?
例えば、「私も元気です。」「俺も病気だよ」という文章から
「拙者も元気でござる」「拙者も病気でござる」というようなリプライを返すパターンです。
-
>>991
(.*)
-
>>972
すみません、もし良かったらxreaから送られてくるメールの内容少し教えてもらえませんか?
X-Powered-By: PHP/4.4.8
特にこの部分が、正常だとPHP/5とかに変わるのかって所が疑問で・・・
-
>>985 >>986
さっき意味に気づきましたそしてありがとうございます!
使わせていただきますー
-
http://pha22.net/twitterbot/1.4/adv_id.php
この {id}さんの{month}月{day}日のラッキーカラーは緑です
というのは、 {id} 等をtw.txtやreply_pattern.phpに書いて
{id}さんの{month}月{day}日のラッキーカラーは緑です
と、date.txtに書くのですか?
-
>>995
>>1嫁、そしてリンク先もよく嫁、さらに日本語がおかしい
Ver1.4の説明だが機能としては2.0に引き継がれている
単語等は適宜読みかえる努力を
あとdate.txtなんてものはは存在しません
-
わからない言葉に対して反応させない方法はどこでわかりますか?
どこかで見たはずなのに、調べても見つかりません。
-
>>997
全空白でおk
-
うめ
-
次スレの初心者スレ4へどうぞ
http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1319035690/
|
|
掲示板管理者へ連絡
無料レンタル掲示板