22
12

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 1 year has passed since last update.

猫を愛でたい欲求を開放するLINE Botを作ってみた。

Last updated at Posted at 2023-05-20

猫は最強。顔も中身もタイプ。

我が家の 2匹 の猫はとにかくかわいい。人の猫もとにかくかわいい。
お琴の先生宅に、猫が 5匹 いるから、その先生に習うことを決めた。(それ以外の理由もあるけど)

でも私は家の猫に好かれていない。それがまた、たまらなく良い。
追われるより追いたい!!!!

寝る前に見れたら最高なのではないかニャ?

いつ猫に会いたくなるか?そりゃ Always
でもなかなか上手くいかない。家の都合上飼えない人もいる。私あんまり我が家の子に好かれてないし…。
どうしたものか…。

私はもの凄く気にしいなので、寝る前に 振り返りという名の反省 をします。
でも、落ち込んだまま眠りにつくなんて悲しすぎる!

じゃあ寝る前に欠かさず見る「LINE」に猫を送りつけてみようではないか!!!!!!!

使ったものはこちらだニャ

利用したツールはこちらです!

無料で定期実行したいんだニャ〜

はじめはJavaScriptとNode.jsを使ってAPIを叩いて、単発の実行は成功しました。
しかし、以下の課題も…

  • お金をかけたくない(ケチなので)
  • 定期的に実行したい(毎日癒やされたい)

そこで、GASの「トリガー」という自動実行の機能を使うことで今回のフローを 無料定期実行 できるようになりました。
ちなみに、JavaScriptからGASへの変換は 話題のChatGPTにお任せ しました。

使ったGASのコードはこれだ!

課題を踏まえてGASを採用したけど、GASだと使えないライブラリがあったりするみたい。(と後から知った)
これからの勉強になった…!

// LINE Notifyのアクセストークン
const accessToken = 'YOUR_ACCESS_TOKEN';  // YOUR_ACCESS_TOKEN は置き換え

// ランダムな猫の画像を取得する関数
async function getRandomCatImage() {
  try {
    const response = await UrlFetchApp.fetch('https://api.thecatapi.com/v1/images/search');
    const responseData = JSON.parse(response.getContentText());
    const catImageUrl = responseData[0].url;
    return catImageUrl;
  } catch (error) {
    console.error('猫の画像の取得に失敗しました:', error.message);
    return null;
  }
}

// LINEに通知する関数
async function sendLineNotification(message, image) {
  try {
    const formData = {
      message: message,
      imageThumbnail: image,
      imageFullsize: image,
    };

    const response = await UrlFetchApp.fetch('https://notify-api.line.me/api/notify', {
      method: 'post',
      payload: formData,
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
        Authorization: `Bearer ${accessToken}`,
      },
    });

    console.log('LINEに通知しました:', response.getContentText());
  } catch (error) {
    console.error('LINE通知の送信に失敗しました:', error.message);
  }
}

// ランダムな猫の画像を取得し、LINEに通知する処理を実行
async function notifyRandomCatImage() {
  const catImage = await getRandomCatImage();
  if (catImage) {
    sendLineNotification('今日もお疲れさま。ゆっくり休んでね!', catImage);
  }
}

// 関数を実行
notifyRandomCatImage();

制作タイム(ΦωΦ)

試行錯誤しながら作るニャ

こんな流れで作りました!

  1. LINE Notifyでアクセストークンの生成
  2. GASでコード記述
  3. GASでトリガーの設定

いざ、使ってみたニャ

テストとして、5分おきに通知がくるように設定しました!
無事通知が来ました!かわいい〜〜〜〜
image.png

GitHub Actionsを使ったNode.jsパターン!

GitHub Actionsを使うことで、GAS同様に定期実行は無料でできます!(と後から知った)
ということで、せっかく曲がりなりにもエンジニアということで試してみました。
コードはGitHubにあげてます。(私がこんなことする日が来るとは…)

こちらでもちゃんと来ますね(ΦωΦ)やったー!

コード書けなくても作れる、なんて便利な世の中!

コードも書けない私でしたが、JavaScriptからGASへの変換を 一発で やってくれるなんてChatGPTすごい、というのが第一の感想です!
GitHub Actionsって難しいイメージだったけど、意外にあっさり定期実行ができることに衝撃でした!
猫ちゃんAPIかわいい〜、API使いこなしていくための第一歩になりました!
これでぐっすり寝れそうだ!

参考にした記事たち

22
12
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
22
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?