2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PHPでTwitter botの習作(3)とりあえず完成

Last updated at Posted at 2013-07-14

ギークハウス元住吉の当番お知らせ用botです。

仕様

  • cronで毎時巡回して8時と22時に当番に@ツイート。それ以外の時間はランダムツイート。
  • 当番は毎週日曜日に交代
bot.php
<?php
// twitteroauth.phpとconfig.phpを読み込む
require_once('twitteroauth/twitteroauth.php'); // onceは循環参照を防ぐ
require_once('config.php');

// クラスのインスタンス化。TwitterOAuthがクラス
$conn = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);

// $members(当番順のTwitterアカウント)はconfig.phpに移動した。
// ファイルから当番を読み込むように書き換える
// ツイートテンプレはconfig.phpに移動

// 当番の判定
$now = new DateTime(); // 現在日時
$duty = $now->format('W') % 7; // 週番号を7人で割って余りで判定。月曜始まり注意。

// 次の当番。6の場合は次を0にする。土日に使う。
if ($duty == 6) {
    $nextDuty = $duty - 6;
} else {
    $nextDuty = $duty + 1;
}

// 曜日で文章を変える
switch ($now->format('D')) {
    case 'Sun':
        $dutyTw = array('@'.$members[$next_duty].' '.$temp[0],
        '@'.$members[$next_duty].' '.'明日、月曜日は'.$trash[1].$temp[3].$temp[0]);
        break;
    case 'Mon':
        $dutyTw = array('@'.$members[$duty].' '.'今日は'.$trash[1].$temp[3].$temp[1].$temp[0],
            '@'.$members[$duty].' '.'明日、火曜日は'.$trash[0].$temp[3].$temp[0]);
        break;
    case 'Tue':
        $dutyTw = array('@'.$members[$duty].' '.'今日は'.$trash[0].$temp[3].$temp[1].$temp[0],
            '@'.$members[$duty].' '.'明日、水曜日は'.$trash[2].$temp[3].$temp[0]);
        break;
    case 'Wed':
        $dutyTw = array('@'.$members[$duty].' '.'今日は'.$trash[2].$temp[3].$temp[1].$temp[0],
            '@'.$members[$duty].' '.'明日、木曜日は'.$trash[0].$temp[3].$temp[0]);
        break;
    case 'Thu':
        $dutyTw = array('@'.$members[$duty].' '.'今日は'.$trash[0].$temp[3].$temp[1].$temp[0],
            '@'.$members[$duty].' '.'明日、金曜日は'.$trash[3].$temp[3].$temp[0]);
        break;
    case 'Fri':
        $dutyTw = array('@'.$members[$duty].' '.'今日は'.$trash[3].$temp[3].$temp[1].$temp[0],
            '@'.$members[$duty].' '.'明日、土曜日は'.$trash[0].$temp[3].$temp[0]);
        break;
    case 'Sat':
        $dutyTw = array('@'.$members[$duty].' '.'今日は'.$trash[0].$temp[3].$temp[1].$temp[0],
            '@'.$members[$duty].' '.'生ごみの回収とタオルの洗濯をお願いします。1週間お疲れさまでした。'.$members[$next_duty].'明日から当番をお願いします。');
        break;
}

// 時間判定
$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 '21':
        $msg = $dutyTw[1];
        break;
    case '23':
        $msg = $timeTw[2];
        break;
    default:
        $msg = $randTw[mt_rand(0, 10)]; // ランダムツイート
        break;
}

// 深夜はツイートしない
if ($hour <= 7) {
    $msg = NULL;
}

// test
//echo $msg;
//echo $msg;
//var_dump($duty);
//var_dump($msg);
var_dump($hour);
/*
// statusに入るのがツイートされる文章
$params = array('status' => $msg);

// TwitterOAuthクラスのpostメソッド?を呼び出す。->はアロー演算子
$result = $conn->post('statuses/update', $params);

// 結果出力
var_dump($result);
2
2
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?