Why not login to Qiita and try out its useful features?

We'll deliver articles that match you.

You can read useful information later.

7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

N高グループ・N中等部Advent Calendar 2024

Day 3

飼い猫のLINEbotを作ったらめっちゃ簡単で楽しかった

Last updated at Posted at 2024-12-16

はじめに

こんにちは。学校法人角川ドワンゴ学園でプログラミング講師をしているhokopiです。
家庭内での色々を記録する備忘録としてLINEbotを作り、ついでにアイコンを飼い猫にしたらめっちゃ楽しかったのでここに記します。
今回はLINE公式アカウントの機能の他に、googleスプレッドシート、gasを使っています。

LINEbotを作る

botの作成自体はめちゃめちゃ簡単です。
ここからLINEビジネスIDのアカウント登録をするだけで、自動的にLINE公式アカウントが開設されます。初期設定の時点で友達追加時のメッセージや自動返信メッセージが設定されているので、この時点でbot自体は完成です。
こんな感じで管理画面が出ます。
画像では隠してしまいましたが、うちの猫は「なつめ」という名前なので、なつめbotという名前にしています。

スクリーンショット 2024-12-16 7.44.56.png

あとはアイコンを設定したり、チャットタブで各友達に個別にメッセージを送ったり、応答メッセージ設定で自動返信するメッセージの設定をしたりすることで、ノーコードでも十分機能する公式アカウントが作れます。

ログ機能を作る

今回はLINEbotを備忘録的に使いたいという目的があるので、まずはLINEbotに送った内容をスプレッドシートに書き出してログとして保存しておくということをします。

ログ機能として書いたコードは以下の通り

function doPost(e) {
  let spreadsheetId = 'スプレッドシートID'
  let spreadsheet = SpreadsheetApp.openById(spreadsheetId);
  let sheet = spreadsheet.getSheetByName('log'); // シート名を指定
  let row = sheet.getLastRow() + 1;
  let lineToken = 'LINEbotのチャネルアクセストークン'
  
  //メッセージを取得
  let eventData = JSON.parse(e.postData.contents).events[0];
  let msg = eventData.message.text;
  
  //出力
  sheet.getRange(row, 1).setValue(new Date()); // 日時も記録
  sheet.getRange(row, 3).setValue(msg); // 改行区切りされたメッセージを列を分けて出力

これをgasで書いてデプロイしてからbotにメッセージを送ると………
スクリーンショット 2024-12-16 11.42.58.png

こんな感じでbotに送った内容がスプレッドシートに反映されます。

自動返信機能を作る

このままだと飼い猫のアイコンをつけただけのログ出力botなので、もう少し遊んでみようということで、ここからは自動返信機能をつけていきます。

猫の名前は「なつめ」ですが、「夏目」とか「ナツメ」とか、「猫」とか「ねこちゃん」とか、表記揺れにも対応させようと思います。

  //返信に使用するテキスト
  let replyText = ['にゃー','にゃ','にゃっ','ゴロゴロ……','みゃ〜','アオー','にゃ〜ん','にゃにゃ','うにゃ〜','にゃう','アオ〜〜オ〜〜アオゥ〜〜〜','アオオオオオ',"zzz……","ペロッティ","ペロティ"];
  let rareText = ['うまいにゃんジャンボ','ちょっと高級なごはんにしたいニャ'];

  if(msg.match('なつめ') != null || msg.match('夏目') != null || msg.match('ナツメ') != null || msg.match('猫') != null || msg.match('ねこ') != null || msg.match('ネコ') != null || msg.match('ネコ') != null){//なつめ、ナツメ、猫、ネコ、ねこなどが入っていれば返信する
  
  //返信に使うメッセージをランダムで決める
  let replyIndex = Math.floor(Math.random() * replyText.length);
  let rareIndex = Math.floor(Math.random() * rareText.length);
  let rareReplyJudgement = Math.floor(Math.random() * 100); // 100分の1でレアメッセージが送信される
  
  //メッセージを送信
  if(rareReplyJudgement === 0){
    sendMessage(replyToken,lineToken,rareText[rareIndex]);
  } else {
    sendMessage(replyToken,lineToken,replyText[replyIndex]);
  }
  
  }
}

上記のような感じで返信用のテキストを15種類ほど用意し、ランダムで返信を決めています。
また、100分の1の確率でレアメッセージが返信されるという仕様にしてみました。
返信メッセージに猫の鳴き声ではないものが混ざっているのは、家庭内の内輪ネタです。

現在の姿

現在、LINEの画面はこのようになっています

という感じでLINEbotができました。飼い猫が返信してくれるのが楽しくて、ログのほとんどが内容のないやりとりになってしまっていますが、まぁよいでしょう。

今後はリマインダー機能なども追加してさらに高機能にしていこうと思います。

みなさんもぜひLINEbot作ってみてくださいね。

7
1
0

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
7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?