推しからおはようメッセージを受け取るLINEBOTを作ったよ

推しからのおはようlineでbot開発の第一歩を踏み出そう!!

推しからおはようメッセージを受け取るLINEBOTを作ったよ
目次

1. はじめに


python初学者です。 楽しくpythonを学習できる方法はないかと模索していると、bot開発が楽しそうなので試してみました。 どうせなら推しから毎朝、自動メッセージが送信されるように作成してみました!

2. 構成


- python : 3.8
- github actions

今回の環境は、自前でサーバを用意することなくサーバレスに実行できる構成です。

作成するファイル

-  info.json
-  main.py

この2つだけ!

3. ソースコード


import json
from linebot import LineBotApi
from linebot.models import TextSendMessage

file = open('info.json', 'r')
info = json.load(file)

CHANNEL_ACCESS_TOKEN = info['CHANNEL_ACCESS_TOKEN']
line_bot_api = LineBotApi(CHANNEL_ACCESS_TOKEN)

def main():
    USER_ID = info['USER_ID']
    messages = TextSendMessage(text="おはよう〜 みなみだよ❤︎ \n今日も1日頑張ろうね!")
    line_bot_api.push_message(USER_ID,messages=messages)

if __name__ == "__main__":
    main()
{
    "CHANNEL_ACCESS_TOKEN": "~~~~~~~~~",
    "USER_ID": "~~~~~~~~"
}

info.jsonに記載されている変数をmain.pyから参照しています。

Line-Developperでチャンネルを作成する方法は、 こちら

チャンネル作成後に、 “CHANNEL_ACCESS_TOKEN"は、「Messaging API settings」タブから “USER_ID"は、「Basic settings」タブからそれぞれ取得できます。

4.githubへpush


$ git init
$ git remote add origin https://~~~.git
$ git add .
$ git commit -am "first commit"
$ git push origin maseter

github actions の設定


Actionsから設定を行います

スクリーンショット 2021-11-27 16.50.07.png

後続の作業とyamlファイルの記述方法は、下記youtubeを参考にさせていただきました。

https://youtu.be/T0KAE2kq2Xo

実際のyamlファイルはこんな感じ


name: hello_chatbot

on:
#   push:
  schedule:
    - cron: '55 20 * * *'

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
      - name: Set up Python 3.8
        uses: actions/setup-python@v1
        with:
          python-version: 3.8
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install line-bot-sdk          
      - name: Run script
        run: |
          # main.pyの実行
          python main.py          

github actionsのcronの時刻はUTCらしいので、起動させたい時刻からマイナス9した値を設定する必要があります。
私の場合は、毎朝6時にメッセージを受け取りたいので、AM6:00から-9してPM9:00に設定していたのですが、 ビルドに時間がかかるのでさらに5分早めに起動させています。

  schedule:
    - cron: '55 20 * * *'

5. 完成


スクリーンショット 2021-11-27 17.07.10.png 最高やないかい!!!(キモいとか言わないで。)