1. ltd

    No comment

    ltd
Changes in body
Source | HTML | Preview
@@ -1,140 +1,106 @@
ギークハウス元住吉の当番お知らせ用botです。
#### 仕様
- cronで毎時巡回して8時と22時に当番に@ツイート。それ以外の時間はランダムツイート。
- 当番は毎週日曜日に交代
-```php:
+```php:bot.php
<?php
// twitteroauth.phpとconfig.phpを読み込む
-require_once('twitteroauth/twitteroauth.php');
+require_once('twitteroauth/twitteroauth.php'); // onceは循環参照を防ぐ
require_once('config.php');
// クラスのインスタンス化。TwitterOAuthがクラス
$conn = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);
-// 当番順のTwitterアカウント。本当は7人で回ってます
-$members = array('ltd', 'geekmtsm');
-//$members = e(array($_POST['members']));//エスケープ処理がわかんね
-//$members = array($_POST['members']);
+// $members(当番順のTwitterアカウント)はconfig.phpに移動した。
+// ファイルから当番を読み込むように書き換える
+// ツイートテンプレはconfig.phpに移動
+
+// 当番の判定
+$now = new DateTime(); // 現在日時
+$duty = $now->format('W') % 7; // 週番号を7人で割って余りで判定。月曜始まり注意。
-
-// 週番号(月曜始まり)で当番の判定
-$week = date('W') % 7; //7人
-switch ($week) {
- case '0':
- $duty = 0;
- break;
- case '1':
- $duty = 1;
- break;
- case '2':
- $duty = 2;
- break;
- case '3':
- $duty = 3;
- break;
- case '4':
- $duty = 4;
- break;
- case '5':
- $duty = 5;
- break;
- case '6':
- $duty = 6;
- break;
-}
-
-// 次の当番。6の次を0にする処理。土日に使う。
+// 次の当番。6の場合は次を0にする。土日に使う。
if ($duty == 6) {
- $next_duty = $duty - 6;
+ $nextDuty = $duty - 6;
} else {
- $next_duty = $duty + 1;
+ $nextDuty = $duty + 1;
}
-// テンプレ。ランダムで口調が変わるようにしたい
-$trash = array('普通ごみ', '缶・ペットボトル・びん、ダンボール', 'プラスチック製容器包装', 'ミックスペーパー', 'の収集日です。');
-$temp = array('タオルの洗濯をお願いします。', '朝8時までに捨ててください。', '生ごみの回収もお願いします。');
-
// 曜日で文章を変える
-$today = date('D'); // 曜日を判定
-
-switch ($today) {
+switch ($now->format('D')) {
case 'Sun':
- $msg = array('@'.$members[$next_duty].' '.$temp[0],
- '@'.$members[$next_duty].' '.'明日、月曜日は'.$trash[1].$trash[4].$temp[0]);
+ $dutyTw = array('@'.$members[$next_duty].' '.$temp[0],
+ '@'.$members[$next_duty].' '.'明日、月曜日は'.$trash[1].$temp[3].$temp[0]);
break;
case 'Mon':
- $msg = array('@'.$members[$duty].' '.'今日は'.$trash[1].$trash[4].$temp[1].$temp[0],
- '@'.$members[$duty].' '.'明日、火曜日は'.$trash[0].$trash[4].$temp[0]);
+ $dutyTw = array('@'.$members[$duty].' '.'今日は'.$trash[1].$temp[3].$temp[1].$temp[0],
+ '@'.$members[$duty].' '.'明日、火曜日は'.$trash[0].$temp[3].$temp[0]);
break;
case 'Tue':
- $msg = array('@'.$members[$duty].' '.'今日は'.$trash[0].$trash[4].$temp[1].$temp[0],
- '@'.$members[$duty].' '.'明日、水曜日は'.$trash[2].$trash[4].$temp[0]);
+ $dutyTw = array('@'.$members[$duty].' '.'今日は'.$trash[0].$temp[3].$temp[1].$temp[0],
+ '@'.$members[$duty].' '.'明日、水曜日は'.$trash[2].$temp[3].$temp[0]);
break;
case 'Wed':
- $msg = array('@'.$members[$duty].' '.'今日は'.$trash[2].$trash[4].$temp[1].$temp[0],
- '@'.$members[$duty].' '.'明日、木曜日は'.$trash[0].$trash[4].$temp[0]);
+ $dutyTw = array('@'.$members[$duty].' '.'今日は'.$trash[2].$temp[3].$temp[1].$temp[0],
+ '@'.$members[$duty].' '.'明日、木曜日は'.$trash[0].$temp[3].$temp[0]);
break;
case 'Thu':
- $msg = array('@'.$members[$duty].' '.'今日は'.$trash[0].$trash[4].$temp[1].$temp[0],
- '@'.$members[$duty].' '.'明日、金曜日は'.$trash[3].$trash[4].$temp[0]);
+ $dutyTw = array('@'.$members[$duty].' '.'今日は'.$trash[0].$temp[3].$temp[1].$temp[0],
+ '@'.$members[$duty].' '.'明日、金曜日は'.$trash[3].$temp[3].$temp[0]);
break;
case 'Fri':
- $msg = array('@'.$members[$duty].' '.'今日は'.$trash[3].$trash[4].$temp[1].$temp[0],
- '@'.$members[$duty].' '.'明日、土曜日は'.$trash[0].$trash[4].$temp[0]);
+ $dutyTw = array('@'.$members[$duty].' '.'今日は'.$trash[3].$temp[3].$temp[1].$temp[0],
+ '@'.$members[$duty].' '.'明日、土曜日は'.$trash[0].$temp[3].$temp[0]);
break;
case 'Sat':
- $msg = array('@'.$members[$duty].' '.'今日は'.$trash[0].$trash[4].$temp[1].$temp[0],
+ $dutyTw = array('@'.$members[$duty].' '.'今日は'.$trash[0].$temp[3].$temp[1].$temp[0],
'@'.$members[$duty].' '.'生ごみの回収とタオルの洗濯をお願いします。1週間お疲れさまでした。'.$members[$next_duty].'明日から当番をお願いします。');
break;
}
-// ランダムツイート
-$rand_tweet = mt_rand(0,6);
-switch ($rand_tweet) {
- case '0':
- $msg = array('リビングで寝るな。');
- break;
- case '1':
- $msg = array('節電しましょう。');
+// 時間判定
+$hour = $now->format('G');
+switch ($hour) {
+ case '8':
+ $msg = $dutyTw[0];
+ break;
+ case '13':
+ $msg = $timeTw[0];
+ break;
+ case '16':
+ $msg = $timeTw[1];
break;
- case '2':
- $msg = array('熱中症に気をつけよう。');
+ case '21':
+ $msg = $dutyTw[1];
break;
- case '3':
- $msg = array('食器を片付けろ。');
+ case '23':
+ $msg = $timeTw[2];
break;
- case '4':
- $msg = array('暑くて死ぬ。');
- break;
- case '5':
- $msg = array('風呂の換気を忘れるな。');
- break;
- case '6':
- $msg = array('ゲームやってないでコード書け。');
+ default:
+ $msg = $randTw[mt_rand(0, 10)]; // ランダムツイート
break;
}
-// 8時と22時を判定してツイート。それ以外の時間はツイートしないように当番をNULL
-if (date(G) == 8) {
- $time = 0;
-} elseif (date(G) == 22) {
- $time = 1;
-} else {
- $time = 0;//8時と22時以外はランダムツイート
+// 深夜はツイートしない
+if ($hour <= 7) {
+ $msg = NULL;
}
-//test
-//var_dump($members);
-// echo $msg[0];
-
+// test
+//echo $msg;
+//echo $msg;
+//var_dump($duty);
+//var_dump($msg);
+var_dump($hour);
+/*
// statusに入るのがツイートされる文章
-$params = array('status' => $msg[$time]);
+$params = array('status' => $msg);
// TwitterOAuthクラスのpostメソッド?を呼び出す。->はアロー演算子
$result = $conn->post('statuses/update', $params);
// 結果出力
var_dump($result);
```