PHP
Line
LineNotify

エンジニアだってモテてみたい!LINEで彼女へのサプライズを自動化した結果

date_couple-1.png

LINEでサプライズメッセージを送ろう!

スクリーンショット 2018-06-14 16.49.31.png

毎月の月記念日にLINEでメッセージが自動的に送られてくるプログラムを書きました!
これで「俺たちが付き合ったのっていつからだっけ?」と忘れることも無くなります!
(なし崩し的に付き合い、記念日がわからないケースは非対応です)

既婚者の方なら「結婚記念日」、独り身の方でも「新しい挑戦を始めた日」など発想一つで応用が効くと思います。

また、非エンジニアにとって、「LINEにメッセージを送れる」というだけですごいエンジニアに思えるようです。うちの親がそう言ってました。意外ですよね。API叩くだけなのでコスパ最強です。

実際に送ってみよう!

コードの構成はこのようになっています!

①LINE NotifyのAPIキーを設定
②文面を作成
③curlを使ってLINE NotifyのエンドポイントにHTTPリクエストを飛ばす

スタンプはランダムで選ばれるようにしています。
スタンプの番号はLINEの公式ページに書かれています。

ちなみに、毎年の記念日には、文面がちょこっと変わります。

LINE NotifyのAPIキーを取得

トークルームごとにAPIキーが発行されます。こちらから取得しに行きましょう。

(注)相手と自分の二人きりのトークルームには送信することができません。
LINE Notifyをトークルームに招待することで、新しいトークルームが作成されます。
そのトークルームのAPIキーを取得しましょう!

anniversary.php
<?php 
date_default_timezone_set('Asia/Tokyo');

// トークルームを指定
$url = 'https://notify-api.line.me/api/notify';
$token = '取得したAPIキーを設定';
// 記念日を入力
$start = strtotime('0000-00-00');
// 今日の日付
$date = new Datetime();
$today = strtotime($date->format('Y-m-d'));

// 日数計算
$diff = (($today - $start) / 86400);
$year = floor( $diff / 365);
$date = $diff % 365;

// スタンプの番号を指定
$stamps = array(
    '608', // プレゼントボックス
    '301', // カクテル
    '269', // ハート
    '268', // 虹
);
// スタンプをランダムに選択
$stamp_key = array_rand($stamps, 1);

if($date !== 0){

    $message = PHP_EOL
            . '🎉おめでとう🎉' . PHP_EOL
            .'二人が付き合ってから' . PHP_EOL
            . $diff .'日が経ちました😍' . PHP_EOL
            . '今日で' . $year . '年と' . $date . '日です💕' . PHP_EOL
            . 'これからもよろしくね😘';

} else {

    $message = PHP_EOL
            . '🎉おめでとう🎉' . PHP_EOL
            .'二人が付き合ってから' . $diff .'日が経ちました💕';

    $message .= PHP_EOL
            . $year . '年も続くなんてすごい!' . PHP_EOL
            . 'これからもよろしくね😘';

}

// 送信情報を設定する
$data = array('message' => $message, 'stickerPackageId' => 4, 'stickerId' => $stamps[$stamp_key]);
$data = http_build_query($data);
$header = array(
        'Content-Type: application/x-www-form-urlencoded',
        'Authorization: Bearer ' . $token,
);

// curlでLINE NotifyのエンドポイントにHTTPリクエストを送る
$ch = curl_init($url);
$options = array(
    CURLOPT_RETURNTRANSFER  => true,
    CURLOPT_POST            => true,
    CURLOPT_HTTPHEADER      => $header,
    CURLOPT_POSTFIELDS      => $data,
);
curl_setopt_array($ch, $options);

$info = curl_getinfo($ch);
$response =  curl_exec($ch);

curl_close($ch);

cronを設定

0 0 記念日 * *
cronは左から分 時 日 月 曜日です。
これで12時ちょうど、日付が記念日に変わった瞬間にLINEが届きます。
cronの設定についてはcronの設定方法をご参照ください。

ただし、相手の生活リズムに合わせて時間を変更しましょう。
思いやりも大切です。

実行した結果

彼女が喜んでくれました(笑)
自分でもこれが送られてくるのを忘れていて12時前に寝たため、
翌朝起きてビックリしたことがあります。

それでは楽しいLINE lifeを!

以上、プログラミングをするパンダ(@Panda_Program)でした。