-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.py
123 lines (104 loc) · 4.17 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
from __future__ import print_function
import time
import gspread
import re
import datetime
import random
import codecs
import sys
import json
from apiclient.discovery import build
from httplib2 import Http
from oauth2client import file, client, tools
from flask import Flask, request, abort
from urllib.request import urlopen
from oauth2client.service_account import ServiceAccountCredentials
from linebot import (
LineBotApi, WebhookHandler
)
from linebot.exceptions import (
InvalidSignatureError
)
from linebot.models import (
MessageEvent, TextMessage, TextSendMessage, ImageSendMessage ,
StickerSendMessage , ImageSendMessage , VideoSendMessage , TemplateSendMessage,
SourceUser, SourceGroup, SourceRoom,
TemplateSendMessage, ConfirmTemplate, MessageTemplateAction,
ButtonsTemplate, ImageCarouselTemplate, ImageCarouselColumn, URITemplateAction,
PostbackTemplateAction, DatetimePickerTemplateAction,
CarouselTemplate, CarouselColumn, PostbackEvent,
StickerMessage, StickerSendMessage, LocationMessage, LocationSendMessage,
ImageMessage, VideoMessage, AudioMessage, FileMessage,
UnfollowEvent, FollowEvent, JoinEvent, LeaveEvent, BeaconEvent
)
# ------ below are self define function ------
import slient_mode as slient
import switch as switch
import active_mode as active
import user_guide as user_guide
app = Flask(__name__)
# Channel Access Token
line_bot_api = LineBotApi('3Qkr3SNlqPpzhZ0FYrPZupD/TcYAxK0+Kdh7J0u3JzH2qQkzZVGVjivLQ32olTcPIWOPg/jSaRvyekXU3gsLRs5BLHgCZEw1sHcTZoEy8yMOnTuXGvqh+27/RHYrQHVjTibPpU/YsK+qDXR+mrgEEQdB04t89/1O/w1cDnyilFU=')
# Channel Secret
handler = WebhookHandler('2aeccaa784bd1a4d7f86f6516d91851a')
# user_id = "Udf8f28a8b752786fa7a6be7d8c808ec6"
now = datetime.datetime.now()
score_sheet_ID = '1F0aMMBcADRSXm07IT2Bxb_h22cIjNXlsCfBYRk53PHA'
my_database_sheet_ID = '1RaGPlEJKQeg_xnUGi1mlUt95-Gc6n-XF_czwudIP5Qk'
april_ID='Udf8f28a8b752786fa7a6be7d8c808ec6'
def readme():
with open('readme.txt', 'r') as f:
content = f.read()
return content
# 監聽所有來自 /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)
app.logger.info("Request body: " + body)
# handle webhook body
try:
handler.handle(body, signature)
except InvalidSignatureError:
abort(400)
return 'OK'
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
print("now: "+str((datetime.datetime.now() + datetime.timedelta(hours=8)).strftime("%Y/%m/%d %H:%M:%S")))
print("mode: "+str(switch.mode))
print("event: " +str(event))
user_message = event.message.text
if(user_message== "test"):
message = TextSendMessage(text='Hello World !!!')
line_bot_api.reply_message(event.reply_token,message)
elif(user_message== "state"):
message = TextSendMessage(
text="(silent mode)" if switch.mode == 0 else "(active mode)"
)
line_bot_api.reply_message(event.reply_token,message)
elif(user_message in ["!使用說明書","!help","!說明書"]):
message = user_guide.user_guide()
line_bot_api.reply_message(event.reply_token,message)
elif(user_message in ["!helptxt"]):
message = readme()
line_bot_api.reply_message(event.reply_token,TextSendMessage(text=message))
elif(user_message in ["!getinfo"]):
line_bot_api.reply_message(event.reply_token,TextSendMessage(text=str(event)))
elif(user_message in ["!壞掉啦","呼叫工程師","呼叫四月"]):
line_bot_api.push_message(april_ID, TextSendMessage(text='智乃壞掉囉~~~'))
line_bot_api.reply_message(event.reply_token,TextSendMessage(text="已經幫您通知拔拔了! 請稍等~~"))
elif(user_message== "!重新開機" or user_message == "!restart"):
message = TextSendMessage(text="restarting...")
line_bot_api.reply_message(event.reply_token,message)
sys.exit(0)
elif(switch.mode == 0):
message = slient.slient_mode(user_message,event)
line_bot_api.reply_message(event.reply_token,message)
elif(switch.mode == 1):
active.active_mode(user_message,event)
import os
if __name__ == "__main__":
port = int(os.environ.get('PORT', 5000))
app.run(host='0.0.0.0', port=port)