def on_enter_rand_diff_normal(self, event): print("Entering n") reply_token = event.reply_token for count, m in enumerate(MListInfo): level = m[3][0] if level == "7": ns7List.append([m[0], m[3][0], m[3][1]]) ns57List.append([m[0], m[3][0], m[3][1]]) elif level == "6": ns57List.append([m[0], m[3][0], m[3][1]]) elif level == "5": ns57List.append([m[0], m[3][0], m[3][1]]) ns15List.append([m[0], m[3][0], m[3][1]]) else: ns15List.append([m[0], m[3][0], m[3][1]]) bMsg = TMsg(alt_text='Button', template=ButtonsTemplate( thumbnail_image_url="https://i.imgur.com/vWbUSUf.png", title="★数を選べるドン!♪", text="Please Select level to choose from.", actions=[ MsgAction(label="★7", text="s7"), MsgAction(label="★5~7", text="s57"), MsgAction(label="★1~5", text="s15") ])) send_button_message(reply_token, bMsg)
def on_enter_choice(seif,event): print("I'm entering choice state") sender_id=event['sender']['id'] if event.get('postback'): text=event['postback']['payload'] text=text.lower() send_text_message(sender_id,text) buttons=[ { "type":"postback", "title":"台南大遠百威秀影城", "payload":"台南大遠百威秀影城" }, { "type":"postback", "title":"台南南紡威秀影城", "payload":"台南南紡威秀影城" }, { "type":"postback", "title":"台南國賓影城", "payload":"台南國賓影城" } ] send_button_message(sender_id,"For movie theathers in South Taiwan.",buttons)
def on_enter_search_comic(self, event): print("I'm entering search_comic") reply_token = event.reply_token if not self.comic_not_found: url = "http://8comic.se/" res = requests.get(url) soup = bs(res.text, 'html.parser') comic_list = [] url_list = [] self.recommand_comic_list = [] self.recommand_comic_url_list = [] for entry in soup.find('div', class_='carousel-clip').select('a'): m = re.search("http://8comic.se/(\d*)/$", entry['href']) if (m): if entry.find('img') != None: comic_list.append(entry.find('img')['alt']) else: url_list.append(entry['href']) random_sample = random.sample( [index for index in range(len(url_list))], 4) for random_index in random_sample: self.recommand_comic_list.append(comic_list[random_index]) self.recommand_comic_url_list.append(url_list[random_index]) send_button_message(event.reply_token, "請輸入漫畫名稱", \ "以下4部漫畫為系統推薦\n隨時都可輸入\"退出\"回到本頁面", "https://i.imgur.com/3xofosk.jpg", self.recommand_comic_list, self.recommand_comic_list) else: send_text_message( reply_token, "\udbc0\udc92沒有此漫畫\udbc0\udc92\n請重新輸入漫畫名稱\udbc0\udc8a\n\udbc0\udc9d或是輸入退出\udbc0\udc9d" ) self.comic_not_found = False
def on_enter_hanlai(self, event): print("I'm entering hanlai") reply_token = event.reply_token send_button_message(reply_token, 'https://i.imgur.com/LtKBxlV.png', "身無長物", "就說你只有65塊了...", "一敗塗地")
def on_enter_entry(self, event): print("Entering entry") reply_token = event.reply_token # Refetch info from wiki MListInfo = wrapWikiInfo() # Clear all lists os10List.clear() os89List.clear() os68List.clear() os16List.clear() hs8List.clear() hs78List.clear() hs57List.clear() hs15List.clear() ns7List.clear() ns57List.clear() ns15List.clear() es15List.clear() # Send starting msg after fetch bMsg = TMsg(alt_text='Button', template=ButtonsTemplate( thumbnail_image_url="https://i.imgur.com/vWbUSUf.png", title="何する?", text="What do you want?", actions=[MsgAction(label="ランダムで曲を選ぶ", text="random")])) send_button_message(reply_token, bMsg)
def on_enter_state3(self,event): print("I'm entering state3") sender_id=event['sender']['id'] url="https://movies.yahoo.com.tw/chart.html?cate=rating" res=requests.get(url) soup=BeautifulSoup(res.text,"html.parser") movie1=soup.find('h2') movie2=soup.find_all(class_='rank_txt') buttons=[ { "type":"postback", "title":movie1.text, "payload":movie1.text }, { "type":"postback", "title":movie2[0].text, "payload":movie2[0].text }, { "type":"postback", "title":movie2[1].text, "payload":movie2[1].text } ] send_button_message(sender_id,"Here are 3 movies with highest score",buttons)
def on_enter_menu(self, event): print("I'm entering menu") sender_id = event['sender']['id'] #send_text_message(sender_id, "this is menu") button = [ # { # "type":"postback", # "title":"附件下載", # "payload":"download" # }, { "type": "postback", "title": "行事曆", "payload": "calendar" }, { "type": "postback", "title": "聯絡資訊", "payload": "contact_info" }, { "type": "postback", "title": "其他問題", "payload": "other" } ] send_img_message(sender_id, "https://i.imgur.com/TvjzlFP.png") send_button_message( sender_id, "這裡是2019成大資工營,歡迎使用聊天機器人!\n如果想知道報名相關的資訊,請輸入「報名資訊」。\n想知道更多我們的活動內容,請輸入「營隊介紹」。\n想要下載相關的檔案附件,請輸入「附件下載」。\n或是點選按鈕進入其他功能~", button)
def on_enter_local_food(self, event): print("I'm entering local food") sender_id = event['sender']['id'] send_text_message(sender_id, data['Local Food']['text_to_send']) send_button_message(sender_id, data['Local Food']['text_button'], data['Local Food']['buttons'])
def webhook_handler(): signature = request.headers["X-Line-Signature"] # get request body as text body = request.get_data(as_text=True) app.logger.info(f"Request body: {body}") # parse webhook body try: events = parser.parse(body, signature) except InvalidSignatureError: abort(400) # if event is MessageEvent and message is TextMessage, then echo text for event in events: if not isinstance(event, MessageEvent): continue if not isinstance(event.message, TextMessage): continue if not isinstance(event.message.text, str): continue print(f"\nFSM STATE: {machine.state}") print(f"REQUEST BODY: \n{body}") response = machine.advance(event) if response == False: if machine.state == "user": text = "按start鍵開始遊戲\n按fsm鍵顯示狀態圖" btn = [ MessageTemplateAction(label="start", text="start"), MessageTemplateAction(label="fsm", text="fsm") ] send_button_message(event.reply_token, text, btn) else: send_text_message(event.reply_token, "Not Entering any State") return "OK"
def on_enter_adventure(self, event): print("I'm entering adventure") sender_id = event['sender']['id'] send_text_message(sender_id, data['Adventure']['text_to_send']) send_button_message(sender_id, data['Adventure']['text_button'], data['Adventure']['buttons'])
def on_enter_naturals(self, event): print("I'm entering naturals") sender_id = event['sender']['id'] send_text_message(sender_id, data['Naturals']['text_to_send']) send_button_message(sender_id, data['Naturals']['text_button'], data['Naturals']['buttons'])
def webhook_handler(): global mode signature = request.headers['X-Line-Signature'] # get request body as text body = request.get_data(as_text=True) app.logger.info(f'Request body: {body}') # parse webhook body try: events = parser.parse(body, signature) except InvalidSignatureError: abort(400) # if event is MessageEvent and message is TextMessage, then echo text for event in events: if not isinstance(event, MessageEvent): continue if not isinstance(event.message, TextMessage): continue if not isinstance(event.message.text, str): continue print(f'\nFSM STATE: {machine.state}') print(f'REQUEST BODY: \n{body}') response = machine.advance(event) if response == False: if event.message.text.lower() == 'fsm': send_image_message(event.reply_token, 'https://i.imgur.com/j75C7Jo.png?1') elif event.message.text == '訂購': send_text_message( event.reply_token, '!!線上訂購請點以下連結\nhttps://docs.google.com/forms/d/e/1FAIpQLSdA2XJr4gzZOMetY-DJbEmCCpGLSoAy5o3xsCi0aMYP7dANEA/viewform?usp=sf_link\n\n有任何問題都可聯絡李老闆\n手機:09-58975339' ) elif event.message.text == '柚心園' or event.message.text == '回首頁' or machine.state == 'user' or ( (machine.state == 'answer' or machine.state == 'question') and event.message.text == '2'): title = '歡迎光臨~~ 柚心園' text = '以下資訊提供給您,請『點選』' #text不能太長 btn = [ #不可超過4個選項 MessageTemplateAction(label='商品資訊', text='商品資訊'), MessageTemplateAction(label='訂購', text='訂購'), MessageTemplateAction(label='問答', text='問答'), MessageTemplateAction(label='MENU', text='菜單'), ] url = 'https://i.imgur.com/5Yi13jZ.gif' send_button_message(event.reply_token, title, text, btn, url) machine.go_back() elif machine.state == 'answer' or machine.state == 'sale_address': send_text_message(event.reply_token, '!!繼續問答請輸入『1』!!\n!!離開請輸入『2』') elif machine.state == 'show_pomelo_discount' or machine.state == 'input_health_introduction' or machine.state == 'input_menu': send_text_message(event.reply_token, '您的選項不在列表中,請您重新輸入') elif machine.state == 'show_pomelo_taboo' or machine.state == 'input_health_information' or machine.state == 'show_pomelo_benefit': send_text_message(event.reply_token, '您的選項不在列表中,請您重新輸入') elif machine.state == 'input_menu': send_text_message(event.reply_token, '請重新選擇!!!') else: send_text_message(event.reply_token, '請重新選擇!!!') return 'OK'
def on_enter_about(self, event): print("I'm entering introduce") sender_id = event['sender']['id'] send_button_message(sender_id, "*PTT查詢小幫手*\n可以使用此ChatBot將PTT的看板及貼文爬下來並且條件搜索。") send_image_url(sender_id, "http://m.news.ptt.cc/images/PTT.png") self.go_back()
def on_enter_state5(self, event): print("I'm entering state5") response_str = "" team_A = self.today_scores[(self.num - 1) * 2] team_B = self.today_scores[(self.num - 1) * 2 + 1] response_str = "TEAM 1 2 3 4 ALL\n" response_str = response_str + team_A['TEAM_ABBREVIATION'].ljust( 5) + " " + str(team_A['PTS_QTR1']).ljust(2) + " " + str( team_A['PTS_QTR2']).ljust(2) + " " + str( team_A['PTS_QTR3']).ljust(2) + " " + str( team_A['PTS_QTR4']).ljust(2) + " " + str( team_A['PTS']) + "\n" response_str = response_str + team_B['TEAM_ABBREVIATION'].ljust( 5) + " " + str(team_B['PTS_QTR1']).ljust(2) + " " + str( team_B['PTS_QTR2']).ljust(2) + " " + str( team_B['PTS_QTR3']).ljust(2) + " " + str( team_B['PTS_QTR4']).ljust(2) + " " + str(team_B['PTS']) sender_id = event['sender']['id'] send_text_message(sender_id, response_str) send_button_message(sender_id, "https://stats.nba.com/game/" + team_A['GAME_ID'], "") send_text_message(sender_id, "請輸入\'scores\' 或 \'today scores\' 或 \'team\'") self.go_back()
def on_enter_not_register(self, event): print("I'm entering not_register") text = ["尚未註冊", "請輸入網址http://dorm.cc.ncku.edu.tw/進行註冊\n注意:開頭是http沒有s!"] buttons = ["連線成功", "仍無法連線"] reply_token = event.reply_token send_button_message(reply_token, text, buttons)
def on_enter_check_dns(self, event): print("I'm entering check_dns") text = ["設定確認", "1. DNS&IP自動取得\n2. 關閉proxy及vpn"] buttons = ["連線成功", "仍無法連線"] reply_token = event.reply_token send_button_message(reply_token, text, buttons)
def on_enter_leave(self, event): print("I'm entering 離營切結書") button = [{"type": "postback", "title": "返回下載", "payload": "dreturn"}] sender_id = event['sender']['id'] send_button_message( sender_id, "離營切結書:\nhttps://docs.google.com/document/d/1lUYx301-YGoZgzdM04mwEsAUyJL3tglnMVZr0B7mspg/edit", button)
def on_enter_find_another(self, event): print("I'm entering find_another") text = ["已被室友註冊", "請更換至其他尚未被註冊之網孔進行註冊"] buttons = ["已更換至未註冊網孔", "欲與室友交換網孔"] reply_token = event.reply_token send_button_message(reply_token, text, buttons)
def on_enter_call(self, event): print("I'm entering call") text = ["轉由專人服務", "請致電計網中心(06)2757575分機61010詢問,謝謝!"] buttons = ["我知道了"] reply_token = event.reply_token send_button_message(reply_token, text, buttons)
def on_enter_change(self, event): print("I'm entering change") text = ["網路連接狀態顯示紅色叉叉", "請更換轉接頭或網路線測試"] buttons = ["連線成功", "仍無法連線"] reply_token = event.reply_token send_button_message(reply_token, text, buttons)
def on_enter_occupied(self, event): print("I'm entering occupied") text = ["網孔已被註冊", "請先確認是否為室友註冊"] buttons = ["是", "否"] reply_token = event.reply_token send_button_message(reply_token, text, buttons)
def on_enter_contact(self, event): print("I'm entering 聯絡方式") button = [{"type": "postback", "title": "返回主目錄", "payload": "sreturn"}] sender_id = event['sender']['id'] send_button_message( sender_id, "2019成大資訊營-福爾摩資\n總召:梁竣傑\nhttps://www.facebook.com/profile.php?id=100000616770247 \n電話:0978682869\n地址:台南市東區大學路1號\n網站:https://2018nckucsiecamp.wixsite.com/2018nckucsiecamp \n信箱:[email protected]", button)
def on_enter_inform(self, event): print("I'm entering 營前通知") button = [{"type": "postback", "title": "返回下載", "payload": "dreturn"}] sender_id = event['sender']['id'] send_button_message( sender_id, "營前通知:\nhttps://docs.google.com/document/d/1XQ-mJVqlHaw_xtw96p7kjV8L9FOIPTpSr-Ganr_pYdc/edit", button)
def on_enter_check_wifi(self, event): print("I'm entering check_wifi") text = ["尚未註冊", "請直接使用學校宿網連線進入宿網管理系統,並確認無連上個人行動熱點等wifi"] buttons = ["連線成功", "仍無法連線"] reply_token = event.reply_token send_button_message(reply_token, text, buttons)
def on_enter_email(self, event): print("I'm entering 寄信") button = [{"type": "postback", "title": "返回主目錄", "payload": "sreturn"}] sender_id = event['sender']['id'] send_button_message( sender_id, "3. 寄信\n請完成匯款的同學務必要依照下列格式寄信到我們的信箱,以便核對資料。\n***如果沒有寄信造成我們無法核對資料,也視同放棄錄取***\n收件人:[email protected]\n主旨:小隊員姓名-就讀學校-聯絡電話\n(e.g 金城武-建國中學-0900123456)\n信件內容:\n*匯款人姓名\n*繳費日期\n*帳戶銀行/郵局代碼\n*帳號末五碼\n當我們確認繳費資料無誤之後會回信通知,敬請留意自己的信箱\n另外如果完成繳費之後因個人因素無法參加營隊,我們會在Email裡面釋出相關規定,再請需要退費者留意自己報名時填的信箱", button)
def on_enter_not_use_router(self, event): print("I'm entering not_use_router") text = ["無使用分享器", "請確認右下角網路連接狀態顯示何種圖示"] buttons = ["紅色叉叉", "黃色驚嘆號"] reply_token = event.reply_token send_button_message(reply_token, text, buttons)
def on_enter_after_register(self, event): print("I'm entering after_register") text = ["已開始註冊宿網", "請選擇註冊情況"] buttons = ["已註冊", "未註冊", "網孔已被註冊"] reply_token = event.reply_token send_button_message(reply_token, text, buttons)
def on_enter_already_register(self, event): print("I'm entering already_register") text = ["已註冊宿網", "請確認右下角網路連接狀態顯示何種圖示"] buttons = ["紅色叉叉", "黃色驚嘆號"] reply_token = event.reply_token send_button_message(reply_token, text, buttons)
def on_enter_TVDetail(self, event): text = event.postback.data infor = event.postback.data.split(',') infor.pop(0) reply_token = event.reply_token userId = event.source.user_id send_text_message(reply_token, infor, "TV") send_button_message(userId, "TV")
def on_enter_use_router(self, event): print("I'm entering use_router") text = ["請確認分享器設定如下:", "1. DHCP(自動取得IP&DNS)\n2. Router mode(通常是預設值)"] buttons = ["連線成功", "仍無法連線"] reply_token = event.reply_token send_button_message(reply_token, text, buttons)