7
11

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 3 years have passed since last update.

【Python】定期実行するLineBotを作成する

Posted at

前回作成した、LineBotを使用し、定期的にメッセージを送れるようにします。

#定期実行するスケジュールを作成する

Herokuにスケジュールを追加します。

heroku addons:add scheduler:standard

Heroku Schedulerが追加されるので選択します。
スクリーンショット 2020-03-17 0.06.56.jpg

[Create job]を選択して新規スケジュールを作成します。
スクリーンショット 2020-03-17 0.07.11.jpg

実行するタイミングと実行するコマンドを指定します。
スクリーンショット 2020-03-17 0.07.58.jpg

main.pyとは別にスケジュールで実行するファイルを追加します。

scheduler.py
from flask import Flask, request, abort
import os

from linebot import (
    LineBotApi, WebhookHandler
)
from linebot.exceptions import (
    InvalidSignatureError
)
from linebot.models import (
    MessageEvent, TextMessage, TextSendMessage,
)

app = Flask(__name__)

LINE_CHANNEL_ACCESS_TOKEN = os.environ["LINE_CHANNEL_ACCESS_TOKEN"]
LINE_CHANNEL_SECRET = os.environ["LINE_CHANNEL_SECRET"]
USER_ID = os.environ["USER_ID"]
line_bot_api = LineBotApi(LINE_CHANNEL_ACCESS_TOKEN)

def main():
    pushText = TextSendMessage(text="勤怠を登録しますか?")
    line_bot_api.push_message(USER_ID, messages=pushText)
    
if __name__ == "__main__":
    main()

#応答メッセージ
main.pyも受信したメッセージに対して特定の応答になるようにします。

main.py
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):

    if "勤怠" in event.message.text and "登録" in event.message.text :
        # 登録処理

        replyText = "登録しました"
        line_bot_api.reply_message(event.reply_token, TextSendMessage(text=replyText))
    
    line_bot_api.reply_message(event.reply_token, TextSendMessage(text=event.message.text))
7
11
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
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?