良いゲームと醜いオタク

ゲームのことを適当に書きます

異常孤独独身男性にLINEがいっぱいくる裏技

こんにちは。

皆さんLINEやってますか?いまどきやっていない人のほうが珍しいと思うくらい普及してますよね。僕も一応やっていますが、半年近く個人メッセージが来ていないくらい親密な友達がいないので孤独な日々を送っています。そんな中たまーにくるLINEって嬉しくなっちゃいますよね。

なので作りました。

なんかいい感じに文章書こうと思ったけど文才がないので茶番は終わり。

LINEbotの作成

作成するbotは不定期に自動でLINEを送ってくるものになります。

作成するにあたってここらへんの記事からパクリました。

初めてのLINEbotの作り方 - Qiita

GASを用いたLINE Bot(対話型)の作り方 - Qiita

Google Apps ScriptでLINE BOTつくったら30分で動かせた件 - Qiita

今回はプリチャンへの出演も決まったアイドルタイムプリパラでお馴染みの夢川ゆいを作りました。

 

f:id:yajir0be1129:20200928204700p:plain

ただ作っただけでは動作しないのでGoogle Apps Script(GAS)を用いて動かしていきます。

GASはスプレッドシートと連携ができるので、今回はスプレッドシートに記載した文章を送ってくる形にします。

こちらが用意した文章です。

f:id:yajir0be1129:20200928210040p:plain

日頃生きるモチベーションがないのでモチベーションを上げるためにモチベーションアップ株式会社のポスターから適当に抜粋しました。

www.motivation-up.co.jp

文章が用意できたらGASに書いていきます。

 パクったとこ

Google Apps ScriptでPushメッセージのLINE Botを作る。 - Qiita

[GAS]Gmailで、定期的(1時間ごと)にメールを送信する方法 - Qiita

以下コード

プログラマーでもなんでもないのでコードがありえん汚いですが、動けばいいって感じで書いてあります。

  1. function push() {
  2.   var dayNum = new Date().getDay(); //曜日判定用の変数
  3.   var currentHour = new Date().getHours(); //現在時間
  4.   if(dayNum != 0 && dayNum != 6) { //土日以外
  5.     if (currentHour > 19 && currentHour < 24) { //送信する時間を19〜24時に限定
  6.       if(Math.floor(Math.random()*2)==1.0){//50%の確率でメッセージを送信
  7.         
  8.         //アクセストークン
  9.         var CHANNEL_ACCESS_TOKEN = 'botのアクセストークン(めっちゃ長いやつ)';
  10.         //自分のユーザID
  11.         var USER_ID = 'LINEデベロッパーで表示されるやつ(LINEに登録IDではない)';
  12.         //対象のシートを取得
  13.         var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('モチベーションアップ株式会社');
  14.         //ランダムでメッセージを送る
  15.         var cell = sheet.getRange(1+Math.floor(Math.random()*19),1).getValue();
  16.         var postData = {
  17.           "to": USER_ID,
  18.           "messages": [{
  19.             "type": "text",
  20.             "text": cell,
  21.           }]
  22.         };
  23.         var url = "https://api.line.me/v2/bot/message/push";
  24.         var headers = {
  25.           "Content-Type": "application/json",
  26.           'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN,
  27.         };
  28.         
  29.         var options = {
  30.           "method": "post",
  31.           "headers": headers,
  32.           "payload": JSON.stringify(postData)
  33.         };
  34.         var response = UrlFetchApp.fetch(url, options);
  35.         
  36.       }
  37.     }
  38.   }else{ //土日
  39.     if (currentHour > 9 && currentHour < 24) { //送信する時間を9〜24時に限定
  40.       if(Math.floor(Math.random()*2)==1.0){//50%の確率でメッセージを送信
  41.         //アクセストークン
  42.         var CHANNEL_ACCESS_TOKEN = 'botのアクセストークン(めっちゃ長いやつ)';
  43.         //自分のユーザID
  44.         var USER_ID = 'LINEデベロッパーで表示されるやつ(LINEに登録IDではない)';
  45.         //対象のシートを取得
  46.         var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('モチベーションアップ株式会社');
  47.         //ランダムでメッセージを送る
  48.         var cell = sheet.getRange(1+Math.floor(Math.random()*19),1).getValue();
  49.         var postData = {
  50.           "to": USER_ID,
  51.           "messages": [{
  52.             "type": "text",
  53.             "text": cell,
  54.           }]
  55.         };
  56.         var url = "https://api.line.me/v2/bot/message/push";
  57.         var headers = {
  58.           "Content-Type": "application/json",
  59.           'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN,
  60.         };
  61.         
  62.         var options = {
  63.           "method": "post",
  64.           "headers": headers,
  65.           "payload": JSON.stringify(postData)
  66.         };
  67.         var response = UrlFetchApp.fetch(url, options);
  68.       }
  69.     }
  70.   }
  71.   setTrigger(); //次のトリガーを設置する
  72. }
  73. function setTrigger(){
  74.   delTrigger();
  75.   var currentTime = new Date();
  76.   var setTime = new Date(currentTime.setMinutes(currentTime.getMinutes()+1)); //1分ごとにトリガーを設置
  77.   //var setTime = new Date(currentTime.setHours(currentTime.getHours()+1)); //1時間ごとの場合
  78.   //setTime.setMinutes(Math.floor(Math.random()*59)); //1時間ごとのとあわせて使う
  79.   ScriptApp.newTrigger('push').timeBased().at(setTime).create();
  80. }
  81. function delTrigger() {
  82.     var triggers = ScriptApp.getProjectTriggers();
  83.     for(var i=0; i < triggers.length; i++) {
  84.         if (triggers[i].getHandlerFunction() == "push") {
  85.             ScriptApp.deleteTrigger(triggers[i]);
  86.         }
  87.     }
  88. }

 

曜日を変えたい場合は4行と39行あたりをいじる(0が日曜、1が月曜~~6が土曜)

送信する時間帯を変えたい場合は5行と40行あたりをいじる

確率を変えたい場合は6行と41行あたり

頻度を変えたい場合は78~80行あたり

文章を増やした時は15行と49行最終行取得するやり方だと書き方が間違ってたのか知らんけど文章が偏ってたので没にしました

ろくにテストせずに記事を投稿してるのでいろいろ不具合があったらごめんなさい。

マジで人に見せられたものではないので本職の方、こうしたほうがいいよーってアドバイスあったら教えて下さい

 

実際の用途は日頃、めんどくさくて後回しにしがちな掃除とか洗濯を人から言われることでやる気が起こるかなと思って作成に至りました。(人ではなくbotだが)

 

最後に 

うまく動作するとこんな感じで送られてきます。

f:id:yajir0be1129:20200928223459p:plain



 

 

夢川ゆいがこんな事言うか・・・?

『クラッシュ・バンディクーレーシング』HDリマスター版に期待すること

f:id:yajir0be1129:20181207204726p:plain

海外のゲームイベントTGA2018でクラッシュ・バンディクー レーシングのHDリマスター版が発表されましたが、私の期待することをまとめました。

続きを読む