忍者ブログ

[PR] []

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

時間帯別。bot.php(1) [twitter bot]

今度は、時間帯別のポストをするように変えてみることに。
非公式wikiにありがたいサンプルがあったので参考に。
また別のとこでも例が出てたんで、すごく簡単に設定することが出来ました。

ウチの設定はこんな感じ。

//5分ごとにリプライ
$response = $eb->reply(5,"","reply_pattern.php");
//投稿完了フラグ
$flg = false;

//0時におやすみメッセージ
if(date("G") == "0" && date("i") == "0"){
$response = $eb->postRandom("night.txt");
$flg = true;
}

//8時におはようメッセージ
if(date("G") == "8" && date("i") == "0"){
$response = $eb->postRandom("morning.txt");
$flg = true;
}

//それ以外は7-24時に以下を実行
if(date("G") >= "7" || date("G") == "0"){

//2時間ごとに定期ポスト
if(date("G") % 2 === 0 && date("i") == 0 && $flg == false){
$response = $eb->postRandom("data.txt");
}

}
※Yahoo!知恵袋より


if A{B}
もしAならBを実行、ていう簡単な…英語?
elseif使った方がいいのかな
使わない代わりに、$flg を使ってるのかな。
$flg があるおかげで、おはよう・おやすみの投稿と定期ポストの時間が重なってても、両方投稿する、という状況がありません。


直したところ
$response = $eb->reply(5,"","reply_pattern.php");

初期のままではこうですが
$response = $eb->reply(2,"data.txt","reply_pattern.php");
これだとreply_pattern.phpに当てはまらない場合、data.txtから選んで適当にポストしてしまいます。
「@bot おすすめの漫画教えて」
って送って、それに反応できるのがないと、data.txtがダウンロードしたままの状態なら
「@sasa* いろはにほへと ちりぬるを」
とやっちまいます(@sasa*は架空のアカウント)
パターンがない場合は返事をしないように、data.txtは削除。
ただし""ごと全部なくすと機能しなくなるので注意。
自分も、他の行を見て減らしてみたクチ。
反応しなくなったので調べてみたら、ちゃんと質問掲示板にもありまして、「勝手に消すな」って突っ込まれてました^^;;;
でもすぐ下のが
$response = $eb->replyTimeline(2,"reply_pattern.php");
ですからね。
これに倣って「"data.txt",」消してみる人は多いよねw


時間指定の部分
時間だけじゃなく日付も含むけど、その辺をどうにかするのにdate()を使うらしい。
中身についてはこの辺、分かりやすい
それと、比較演算子論理演算子というのもここで必要になるみたい
参考ページは一覧より下のサンプルまで見ると混乱するので見てませんが、ページを開いて目に入る表のとこだけ参考でも十分ぽい。とりあえず。

今必要なのだけ挙げると、
date("G")は24時間制の時間。0~23
date("i")は2桁の分、00~59(だというのにdate("i") == "0"が00分で動く意味が分からんがこれでいいらしい。)

== は右辺と左辺が等しい。
&& は「且つ」という意味。文字通りandで、&&の代わりにandと書いても同じ働きをするらしい。優先順位が違うらしい。
|| は「または」。orと同じ意味。orでもいいらしいがやっぱり優先順位が違うらしい。
% は…算術演算子?「剰余」だそうです。
%の左辺を右辺で割った余りが何なのか、ということになるみたい。

//8時におはようメッセージ
if(date("G") == "8" && date("i") == "0")
時間が8で、分が0の場合。

//それ以外は7-24時に以下を実行
if(date("G") >= "7" || date("G") == "0"){
時間が7以上(7含む)または時間が0(=24時)の場合。

if(date("G") % 2 === 0 && date("i") == 0 && $flg == false)
時間を2で割った余りが0、つまり偶数時、かつ、分が0、かつ、$flg == falseの場合。

奇数時にしたいときはdate("G") % 2 == 1かな?

「===」と「==」の違いがいまいちよく分からない。
型も同じ場合、ってことなんだけど…
型についてはこのへんを読んでなんとなく分かった気になったけど…それでなんで使い分けてるのかがよく分からない。
ので、リンク先を読んでいって、こんなの試しました。
<?php

$a = date(G);
var_dump($a);

echo "<br />
";

$b = date(i);
var_dump($b);

echo "<br />
";

$c = 0;
var_dump($c);

echo "<br />
";

$d = date("G") % 2;
var_dump($d);

?>
結果がこれ
string(2) "21"
string(2) "23"
int(0)
int(1)

date(G)やdate(i)は文字列型で
普通の数字はそのまま整数型、時間を計算した結果も整数型。
なのでdate("i") == "0"はOKだけどdate("i") === "0"はダメってことみたい。


---おすすめサーバ---
PHP、Cronはスタンダードプラン以上で使えます。
PR

最新記事

オンマウスでタイトル~

ブログ内検索

オススメサーバなど。

はやくて、やすくて、カンタン。
全てが揃った究極のレンタルサーバ、☆さくらのレンタルサーバ
 
ロリポップのドメインは85種類!
きっとお好みのドメインが見つかるはず!
ロリポップはドメイン持ってる人が非常に使いやすいかと。
aaa.jpを取得して、web.aaa.jp、blog.aaa.jp、mail.aaa.jpみたいに、使い分けが出来て便利です。
メアドもたくさん作れて、転送設定なんかもできて良い。
実績から見ても信用できるし、イチオシです。
 
で、ドメイン取るならココ。
時々新規超安キャンペーンやってます。
ムームードメイン

 
お手軽価格で使いがい、あります。
月額250円~で、容量5GB、独自ドメイン、CGI使用、商用利用可能!
FC2レンタルサーバーLite
 
A8.net

プロフィール

HN:hrn
一言:ブログタイトル迷走中。
php初心者/htmlとcssならちょっと得意/javascriptは苦手。必要なことだけ調べるのでいつも遠回り、余計なことばかりしている。
琉金とポリプ飼ってます
透明水彩ってイイヨネ。
 
アクア用品なんかのレビューでは、アフィリエイトリンクつけてるものがあります。
記事が参考になったら、ここから買ってくれると嬉しい。