1. ltd

    Posted

    ltd
Changes in title
+Twitter bot習作(3)とりあえず完成
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,140 @@
+ギークハウス元住吉の当番お知らせ用botです。
+
+#### 仕様
+- cronで毎時巡回して8時と22時に当番に@ツイート。それ以外の時間はランダムツイート。
+- 当番は毎週日曜日に交代
+
+```php:
+<?php
+// twitteroauth.phpとconfig.phpを読み込む
+require_once('twitteroauth/twitteroauth.php');
+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']);
+
+
+// 週番号(月曜始まり)で当番の判定
+$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にする処理。土日に使う。
+if ($duty == 6) {
+ $next_duty = $duty - 6;
+} else {
+ $next_duty = $duty + 1;
+}
+
+// テンプレ。ランダムで口調が変わるようにしたい
+$trash = array('普通ごみ', '缶・ペットボトル・びん、ダンボール', 'プラスチック製容器包装', 'ミックスペーパー', 'の収集日です。');
+$temp = array('タオルの洗濯をお願いします。', '朝8時までに捨ててください。', '生ごみの回収もお願いします。');
+
+// 曜日で文章を変える
+$today = date('D'); // 曜日を判定
+
+switch ($today) {
+ case 'Sun':
+ $msg = array('@'.$members[$next_duty].' '.$temp[0],
+ '@'.$members[$next_duty].' '.'明日、月曜日は'.$trash[1].$trash[4].$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]);
+ break;
+ case 'Tue':
+ $msg = array('@'.$members[$duty].' '.'今日は'.$trash[0].$trash[4].$temp[1].$temp[0],
+ '@'.$members[$duty].' '.'明日、水曜日は'.$trash[2].$trash[4].$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]);
+ break;
+ case 'Thu':
+ $msg = array('@'.$members[$duty].' '.'今日は'.$trash[0].$trash[4].$temp[1].$temp[0],
+ '@'.$members[$duty].' '.'明日、金曜日は'.$trash[3].$trash[4].$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]);
+ break;
+ case 'Sat':
+ $msg = array('@'.$members[$duty].' '.'今日は'.$trash[0].$trash[4].$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('節電しましょう。');
+ break;
+ case '2':
+ $msg = array('熱中症に気をつけよう。');
+ break;
+ case '3':
+ $msg = array('食器を片付けろ。');
+ break;
+ case '4':
+ $msg = array('暑くて死ぬ。');
+ break;
+ case '5':
+ $msg = array('風呂の換気を忘れるな。');
+ break;
+ case '6':
+ $msg = array('ゲームやってないでコード書け。');
+ break;
+}
+
+// 8時と22時を判定してツイート。それ以外の時間はツイートしないように当番をNULL
+if (date(G) == 8) {
+ $time = 0;
+} elseif (date(G) == 22) {
+ $time = 1;
+} else {
+ $time = 0;//8時と22時以外はランダムツイート
+}
+
+//test
+//var_dump($members);
+// echo $msg[0];
+
+// statusに入るのがツイートされる文章
+$params = array('status' => $msg[$time]);
+
+// TwitterOAuthクラスのpostメソッド?を呼び出す。->はアロー演算子
+$result = $conn->post('statuses/update', $params);
+
+// 結果出力
+var_dump($result);
+```