- 在 Flask 上,寫一個網頁,防止 Heroku 主機休眠!
- 寫一個定時推送通知的 Line Bot 機器人程式!
寫個簡易的 Flask 小網頁
- 修改 app/router.py 的內容
(前方省略....) from flask import render_template # 設定預設網頁 @app.route("/") def home(): return render_template("home.html") (後方省略....)
- 在專案目錄 LineBot 下,建立 app/templates/home.html 的 HTML 檔案:
<!DOCTYPE html>
<html lang="en">
<head>
<title>MyLineBot</title>
</head>
<body>
<h1>Hello, World</h1>
</body>
</html> - 將專案推向 Heroku 主機....
- 打開瀏覽器,輸入http://你的專案.herokuapp.com/
定時推送通知的機器人程式
- 安裝 APScheduler
C:\> pip install APScheduler
- 在專案目錄中,寫一個 timer.py 的時鐘程式
from apscheduler.schedulers.blocking import BlockingScheduler import urllib.request scheduleEvent = BlockingScheduler() @scheduleEvent.scheduled_job('cron',day_of_week='mon-fri',minute='*/20') def scheduled_job(): website = "https://mylinebothellotux.herokuapp.com/" connection = urllib.request.urlopen(website) for i, value in connection.getheaders(): print(i,value) scheduleEvent.start()
- 修改 Procfile 檔案內容
web: gunicorn main:app --preload clock: python timer.py
- 修改 requirements.txt 檔案內容
Flask>=1.1.1 gunicorn>=20.0.4 line-bot-sdk>=1.15.0 APScheduler>=3.6.1
- 上傳專案到 heroku
- 修改 Heroku 的設定值
- 建立主動推送通知的方式:
line_bot_api.push_message(to, TextSendMessage(text='Morning Sir'))
- 修改成需要的樣子:linebotmodules.py
(前方省略....) except: #hello_text = echo(event.message.text) line_bot_api.push_message( '你的 User ID', TextSendMessage(text='沒找到') )
- 推送上 Heroku !
- 在手機 line 上,輸入任何一個句子!