今までLINEbotを作るときはVPSやherokuでサーバー立てたりしてその上で動かしていました。
しかし、GitHub Actionsを使えばGitHub上にpushするだけでLINEbotを動かすことが可能です。
今回は一方的にメッセージが届くbotの作成について一連の流れを説明します。
追記2021/02/10
※注意事項
GitHub Actionsの利用規約は確認しましょう。
https://docs.github.com/en/github/site-policy/github-additional-product-terms#a-actions-usage
GitHub Actionsを利用することでサーバーレスが可能になりますが、GitHubに負荷をかけてしまうことになります。そのため、リポジトリのプロジェクト運用に関係ないのであればサーバーを立てるもしくはサーバーレスのサービスを利用することをおすすめします。
やること
- PythonでLINEメッセージを送信する
- GitHub上でトリガーを元にLINEbotを動かす
環境
Python
Messaging API
GitHub
PythonでLINEにメッセージを送信する
事前準備
- LINE Developersからチャネルの設定(詳細は割愛します)
- Messaging API SDKインストール
pip install line-bot-sdk
- python-dotenvのインストール
pip install python-dotenv
必要ライブラリインポート
- envファイル用
import os
from os.path import join, dirname
from dotenv import load_dotenv
.envに後述で利用するMessagin APIのアクセストークンとユーザーIDを設定してsetting.pyでそれらを取得します。
- メッセージ用
from linebot import LineBotApi
from linebot.models import TextSendMessage
import setting
メッセージを送る
# setting.pyで取得したアクセストークンとユーザーIDを代入
CHANNEL_ACCESS_TOKEN = setting.CHANNEL_ACCESS_TOKEN
USER_ID = setting.USER_ID
line_bot_api = LineBotApi(CHANNEL_ACCESS_TOKEN)
def push():
# LINEで送る内容を記述
messages = TextSendMessage(text="おはよう〜〜〜〜")
line_bot_api.push_message(USER_ID, messages=messages)
# 実行!
push()
GitHub上でトリガーを元にLINEbotを動かす
記述してきた内容をコミットし、GitHubにプッシュします。
GitHub上でActionsタブを選択し、ymlファイルにトリガーや実行する処理を記述していきます。
https://docs.github.com/en/actions/reference/events-that-trigger-workflows#manual-events
トリガーにworkflow_dispatch
というイベントが実装されたことによって手動で実行することが可能になったようです。
今回はcronを指定して、定期的にメッセージを送るようにします。
cronについては下記を参考に設定しました。
crontabコマンドについてまとめました 【Linuxコマンド集】
※注意
GitHub Actionsのcronの時刻はUTCなので、日本時間に合わせるために日本時刻から-9時間で設定する必要があります。
# 10分毎にメッセージを送信
on:
schedule:
- cron: '*/10 * * * *'
10分間隔にしていましたが、実際に届いたメッセージは10~20分の間でランダムになってました。謎
参考