看了LINE提供的程式檔很久,我發現我根本看不懂因此我借用了MASO老師的程式碼為模板開始我的改造歷程
Maso老師的YT: Maso的萬事屋 - YouTube
老師的檔案一開始下載有這些
資料夾的部分不重要
我們首先先看到app.py
from flask import Flask, request, abort
from linebot import (LineBotApi, WebhookHandler)
from linebot.exceptions import (InvalidSignatureError)
from linebot.models import *
#======這裡是呼叫的檔案內容=====
from message import *
from new import *
from Function import *
from mongodb_function import *
#======這裡是呼叫的檔案內容=====
#======python的函數庫==========
import os
#======python的函數庫==========
app = Flask(__name__)
static_tmp_path = os.path.join(os.path.dirname(__file__), 'static', 'tmp')
line_bot_api = LineBotApi('你的Channel AcessToken')
handler = WebhookHandler('你的Channel Secret')
此區塊是呼叫我們在執行程式時會用到的程式和設定我們網頁、LINEBOT的值
#監聽所有來自 /callback 的 Post Request
@app.route("/callback", methods=['POST'])
def callback():
# get X-Line-Signature header value
signature = request.headers['X-Line-Signature']
#get request body as text
**body** = request.get_data(as_text=True)
write_one_data(eval(body))
app.logger.info("Request body: " + body)
#handle webhook body
try:
handler.handle(body, signature)
except InvalidSignatureError:
abort(400)
return 'OK'
此區塊是我們用於監視系統執行情況的程式碼可於其中加上print(body)能夠在LOG看到更詳細的情況
#處理訊息
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
msg = event.message.text
if '最新合作廠商' in msg:
message = imagemap_message()
elif '最新活動訊息' in msg:
message = buttons_message()
elif '註冊會員' in msg:
message = Confirm_Template()
elif '旋轉木馬' in msg:
message = Carousel_Template()
elif '圖片畫廊' in msg:
message = test()
elif '功能列表' in msg:
message = function_list()
print(body)
line_bot_api.reply_message(event.reply_token, message)
此處為我們回訊息的地方,我們利用副程式取的我們所需要的值後將其轉化成訊息傳出,副程式方面接下來這幾天我會說到。
@handler.add(PostbackEvent)#顯示程式運作過程在LOG中
def handle_message(event):
print(event.postback.data)
@handler.add(MemberJoinedEvent)#入群歡迎詞
def welcome(event):
uid = event.joined.members[0].user_id
gid = event.source.group_id
profile = line_bot_api.get_group_member_profile(gid, uid)
name = profile.display_name
message = TextSendMessage(text=f'{name}歡迎加入')
line_bot_api.reply_message(event.reply_token, message)
if __name__ == "__main__":
port = int(os.environ.get('PORT', 5000))
app.run(host='0.0.0.0', port=port)
最下面的If...是我們的主程式因為Python的一些問題所以不是我們常見的main他負責開頭及回傳Http值給Line。