def allow_late_report(self, request, queryset): #rows_updated = queryset.update(accept_late_report = True) allowed_reporters = [] reporters_messages = [] today = datetime.now() new_deadline = None message = "Please send your report before %s" for late_healthpost in queryset: late_healthpost.accept_late_report = True late_healthpost.save() # new deadline new_deadline = today + timedelta(days=int(late_healthpost.extended_days)) reporters_messages.append({"reporter": late_healthpost.rutf_reporter, "message":message % new_deadline}) allowed_reporters.append(late_healthpost.rutf_reporter) EventSchedule.objects.create(callback='rutfet.utils.deny_allowed_health_posts', months=set([new_deadline.month]), days_of_month=set([new_deadline.day]), hours = set([0]), minutes=set([0]), callback_kwargs = {"late_healthpost":late_healthpost}) # send message to the reporter to # report with the extended days send_text_message(reporters_messages = reporters_messages) rows_updated = len(allowed_reporters) # Display message to the user if rows_updated ==1: message_no = "1 health post was" elif rows_updated > 1: message_no = "%s health posts were" % rows_updated self.message_user(request, "%s allowed to report late" % message_no)
def on_enter_nasi_detail(self, event): print("I'm entering nasi campur detail") reply_token = event.reply_token send_text_message(reply_token, data['nasi_campur']['detail'])
def on_enter_encounterBBB(self, event): sender_id = event['sender']['id'] send_img_message(sender_id, "http://evenews24.com/wp-content/uploads/2013/05/dead_owned_wreck.jpg") response = send_text_message(sender_id, "You choose to retreat again, but all efforts are invain. your fleet has been destoryed.") response = send_text_message(sender_id, "Type: back\nto return to manual") self.advance(event)
def on_enter_encounterBAB(self, event): sender_id = event['sender']['id'] send_img_message(sender_id, "http://www.guinnessworldrecords.com/Images/eve-online-1_tcm25-522237.jpg") response = send_text_message(sender_id, "You choose to retreat as you think you cannot hold more damege. Thankfully the burners is dameged so that thay cannot stop you from wrapping.\nYour fleet returned safely.") response = send_text_message(sender_id, "Type: back\nto return to manual") self.advance(event)
def on_enter_encounterCC(self, event): sender_id = event['sender']['id'] send_img_message(sender_id, "https://1dfq7235s7hdjun832pbscof-wpengine.netdna-ssl.com/wp-content/uploads/2018/10/project-nova-750x445.jpg") response = send_text_message(sender_id, "You tried to surrender to keep your fleet alive, but they did not accpet your surrender. your fleet is destoryed") response = send_text_message(sender_id, "Type: back\nto return to manual") self.advance(event)
def on_enter_encounterCA(self, event): sender_id = event['sender']['id'] send_img_message(sender_id, "http://evenews24.com/wp-content/uploads/2013/05/dead_owned_wreck.jpg") response = send_text_message(sender_id, "As you realize you must fight them, it has been too late.\nYour fleet is destoryed!") response = send_text_message(sender_id, "Type: back\nto return to manual") self.advance(event)
def on_enter_encounterBA(self, event): sender_id = event['sender']['id'] response = send_text_message(sender_id, "Your fleet engaged the burners. The burners suffered huge damege, but the condition is not optimistic") response = send_text_message(sender_id, "options:\nbaa. Fire!\nbab. Retreat!") self.advance(event)
def on_enter_encounterB(self, event): sender_id = event['sender']['id'] response = send_text_message(sender_id, "You ordered your fleet to active shield and armor hardeners, they are now prepared!") response = send_text_message(sender_id, "options:\nba. Fire!\nbb. Retreat!") self.advance(event)
def on_enter_state6(self, event): reply_token = event.reply_token send_text_message(reply_token, "你的幼稚指數35%:你心智成熟!好棒棒!") self.go_back()
def on_enter_state5(self, event): reply_token = event.reply_token send_text_message(reply_token, "你的幼稚指數80%:看來你比較大男人或大女人,表面上很成熟,其實內心是非常幼稚的") self.go_back()
def on_enter_flavor12(self, event): print("In flavor12") reply_token = event.reply_token rstr = search_flavor(12) send_text_message(reply_token, rstr) self.go_back()
def on_enter_base5(self, event): print("In base0") reply_token = event.reply_token rstr = search_base(5) send_text_message(reply_token, rstr) self.go_back()
def on_enter_default_search_keyword(self, event): print("I'm entering default_search_keyword") reply_token = event.reply_token send_text_message(reply_token, "請直接輸入關鍵字")
def on_enter_custom_search_count(self, event): print("I'm entering custom_search_count") self.nPush = int(event.message.text) reply_token = event.reply_token send_text_message(reply_token, "輸入顯示文章數量 (1~15)")
def webhook_handler(): body = request.json print('\nFSM STATE: ' + machine.state) print('REQUEST BODY: ') print(body) global game_type if body['object'] == "page": event = body['entry'][0]['messaging'][0] if 'message' in event and 'nlp' in event['message']: if 'recommend_game' in event['message']['nlp'][ 'entities'] and machine.state == 'user': machine.recommend(event) elif 'boolean' in event['message']['nlp'][ 'entities'] and machine.state == 'ask_price': # ask for game v sender_id = event['sender']['id'] if event['message']['nlp']['entities']['boolean'][0][ 'value'] == 'false': if game_type == 'RPG': sender_id = event['sender']['id'] responese = send_text_message( sender_id, "https://store.steampowered.com/app/292030/The_Witcher_3_Wild_Hunt/" ) elif game_type == 'WuSha': sender_id = event['sender']['id'] responese = send_text_message( sender_id, "https://store.steampowered.com/app/882790/_Fate_Seeker/" ) elif game_type == 'action': sender_id = event['sender']['id'] responese = send_text_message( sender_id, "https://store.steampowered.com/app/271590/Grand_Theft_Auto_V/" ) elif game_type == 'metroidvania': sender_id = event['sender']['id'] responese = send_text_message( sender_id, "https://store.steampowered.com/app/367520/Hollow_Knight/" ) elif game_type == 'STG': sender_id = event['sender']['id'] responese = send_text_message( sender_id, "https://store.steampowered.com/app/289070/Sid_Meiers_Civilization_VI/" ) elif game_type == 'SLG': sender_id = event['sender']['id'] responese = send_text_message( sender_id, "https://store.steampowered.com/app/255710/Cities_Skylines/" ) else: responese = send_text_message( sender_id, "you are too young to play game") machine.another_question(event) # ask for game ^ elif 'pixiv' in event['message']['nlp'][ 'entities'] and machine.state == 'user': machine.search(event) elif 'game_type' in event['message']['nlp'][ 'entities'] and machine.state == 'ask_game': game_type = event['message']['nlp']['entities']['game_type'][ 0]['value'] machine.about_price(event) elif 'gm_type' in event['message']['nlp'][ 'entities'] and machine.state == 'pixiv': gm_type = event['message']['nlp']['entities']['gm_type'][0][ 'value'] sender_id = event['sender']['id'] if gm_type == 'ps4': responese = send_message(sender_id, "ps4", "ps4") responese = send_text_message(sender_id, "wish you have a nice day") elif gm_type == 'xbox one': responese = send_text_message(sender_id, "wish you have a nice day") elif gm_type == 'switch': responese = send_text_message(sender_id, "wish you have a nice day") elif 'greetings' in event['message']['nlp']['entities']: sender_id = event['sender']['id'] responese = send_text_message(sender_id, "hello, what can I do for you?") elif 'bye' in event['message']['nlp'][ 'entities'] and machine.state != 'user': sender_id = event['sender']['id'] responese = send_text_message(sender_id, "wish you have a nice day") machine.go_back(event) elif machine.state == 'user': sender_id = event['sender']['id'] responese = send_text_message( sender_id, "I don't understand what you say") else: sender_id = event['sender']['id'] responese = send_text_message(sender_id, "you are away from the theme") #if event.get("message"): # text = event['message']['text'] # print(text.lower()) # if text.lower() == 'game': # machine.recommend(event) return 'OK'
def on_enter_encounterA(self, event): sender_id = event['sender']['id'] send_img_message(sender_id, "http://evenews24.com/wp-content/uploads/2013/05/dead_owned_wreck.jpg") response = send_text_message(sender_id, "You ordered your fleet to engage target, but they are not prepared.\nYour fleet has been destoryed.") response = send_text_message(sender_id, "Type: back\nto return to manual") self.advance(event)
def on_enter_one3(self, event): reply_token = event.reply_token send_text_message(reply_token, "答錯了~ 若要繼續挑戰請輸入:金頭腦") self.go_back2()
def on_enter_encounterC(self, event): sender_id = event['sender']['id'] response = send_text_message(sender_id, "You tried to active warp drive to escape from battle field, but the burners used warp scrambler toward your fleet.\nyou cannot retreat.") response = send_text_message(sender_id, "options:\nca. Fire!\ncb. Retreat!\ncc. Surrender.") self.advance(event)
def on_enter_two2(self, event): reply_token = event.reply_token send_text_message(reply_token, "恭喜答對!! 若要繼續挑戰請輸入:金頭腦") self.go_back2()
def on_enter_encounterBB(self, event): sender_id = event['sender']['id'] response = send_text_message(sender_id, "As you found burners are capable to destory your fleet, you ordered retreat. But they webified and warp scrambled your fleet. You cannot escape!") response = send_text_message(sender_id, "options:\nbba. Fire!\nbbb. Retreat!") self.advance(event)
def on_enter_two4(self, event): reply_token = event.reply_token #count = count + 10 send_text_message(reply_token, "答錯了~ 若要繼續挑戰請輸入:金頭腦") self.go_back2()
def on_enter_encounterCB(self, event): sender_id = event['sender']['id'] send_img_message(sender_id, "http://evenews24.com/wp-content/uploads/2013/05/dead_owned_wreck.jpg") response = send_text_message(sender_id, "You know that you cannot escape, but you still ordered retreat. You put your fleet into DEATH!") response = send_text_message(sender_id, "Type: back\nto return to manual") self.advance(event)
def on_enter_state3(self, event): reply_token = event.reply_token send_text_message(reply_token, "你的幼稚指數99%:你簡直是活在童話世界中,幼稚到了極點 ! 成熟點好嗎~") self.go_back()
def on_enter_encounterBAA(self, event): sender_id = event['sender']['id'] send_img_message(sender_id, "https://upload.wikimedia.org/wikipedia/commons/thumb/5/53/Eve_Online_-_Empyrean_Age_screenshot.jpg/800px-Eve_Online_-_Empyrean_Age_screenshot.jpg") response = send_text_message(sender_id, "Your fleet keeps fireing at burners. Though we lost some ships but victory claimed!") response = send_text_message(sender_id, "Type: back\nto return to manual") self.advance(event)
def on_enter_state1(self, event): print("I'm entering state1") reply_token = event.reply_token #send_text_message(reply_token, "Trigger state1") #依state1產生 output : "Trigger state1" ? text = event.message.text if text.lower() == "1-1": img_url = '' rand = random.randint(0, 13) if rand == 0: img_url = 'https://imgur.com/76qpcCc.png' elif rand == 1: img_url = 'https://imgur.com/Hbla4WE.png' elif rand == 2: img_url = 'https://imgur.com/EPnjFrF.png' elif rand == 3: img_url = 'https://imgur.com/FzXrxF4.png' elif rand == 4: img_url = 'https://imgur.com/VHKV9fh.png' elif rand == 5: img_url = 'https://imgur.com/a1OoV4s.png' elif rand == 6: img_url = 'https://imgur.com/5HWQuH0.png' elif rand == 7: img_url = 'https://imgur.com/C6pN6dN.png' elif rand == 8: img_url = 'https://imgur.com/AGcLk2B.png' elif rand == 9: img_url = 'https://imgur.com/8v09XgC.png' elif rand == 10: img_url = 'https://imgur.com/8ICBiAr.png' elif rand == 11: img_url = 'https://imgur.com/yAYDNVu.png' elif rand == 12: img_url = 'https://imgur.com/R1w37BY.png' elif rand == 13: img_url = 'https://imgur.com/8MGq627.png' send_image_url(reply_token, img_url) elif text.lower() == "1-2": text = "" rand = random.randint(0, 7) if rand == 0: text = "大吉" elif rand == 1: text = "中吉" elif rand == 2: text = "小吉" elif rand == 3: text = "吉" elif rand == 4: text = "半吉" elif rand == 5: text = "末吉" elif rand == 6: text = "末小吉" elif rand == 7: text = "小凶" send_text_message(reply_token, text) elif text.lower() == "1-3": sticker_ids = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 21, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 401, 402 ] index_id = random.randint(0, len(sticker_ids) - 1) sticker_id = str(sticker_ids[index_id]) message = StickerSendMessage(package_id='1', sticker_id=sticker_id) send_sticker(reply_token, message) else: send_text_message( reply_token, "輸入數字 : 1-1.御主抽從者 1-2.參拜者抽御神籤 1-3.隨機貼圖 2.爬蟲--科技新報 ") self.go_back() # state1產生output後自動回user state
def on_enter_encounterBBA(self, event): sender_id = event['sender']['id'] send_img_message(sender_id, "http://www.guinnessworldrecords.com/Images/eve-online-1_tcm25-522237.jpg") response = send_text_message(sender_id, "You choose to fight back as you cannot escape. After a fierce battle, only few ships returned safely. The burners are eliminated.") response = send_text_message(sender_id, "Type: back\nto return to manual") self.advance(event)
def on_enter_state2(self, event): print("I'm entering state2") reply_token = event.reply_token send_text_message(reply_token, "Trigger state2")
def on_enter_sate_detail(self, event): print("I'm entering sate detail") reply_token = event.reply_token send_text_message(reply_token, data['sate']['detail'])
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 event.source.user_id not in machine: machine[event.source.user_id] = TocMachine( states=[ "user", "option", "music", "random", "play", "guest_num", "right", "wrong_large", "wrong_small", "riddle", "riddle_right", "riddle_wrong", "riddle_answer", "laugh", "laugh_manage", "add_laugh", "add_success", "search_laugh", "laugh_search_num", "delete_laugh", "confirm_delete", "finish_delete", "music_manage", "add_music", "add_music_name", "add_music_link", "add_music_composer", "add_confirm", "delete_music", "confirm_delete_music", "finish_delete_music", "modify_music", "modify_list", "modify_name", "modify_link", "modify_composer", "modify_confirm", "show_graph" ], transitions=[ { "trigger": "advance", "source": "user", "dest": "option", }, #music { "trigger": "advance", "source": "option", "dest": "music", "conditions": "is_going_to_music", }, #play music { "trigger": "advance", "source": "music", "dest": "play", "conditions": "is_going_to_play", }, { "trigger": "advance", "source": "play", "dest": "music", "conditions": "is_going_to_music", }, #------ #random play music { "trigger": "advance", "source": "music", "dest": "random", "conditions": "is_going_to_random", }, { "trigger": "advance", "source": "random", "dest": "music", "conditions": "is_going_to_music", }, #-------- #guess number { "trigger": "advance", "source": "option", "dest": "guest_num", "conditions": "is_going_to_guest_num", }, { "trigger": "advance", "source": "guest_num", "dest": "right", "conditions": "is_going_to_right", }, { "trigger": "advance", "source": "right", "dest": "guest_num", "conditions": "is_going_to_guest_num", }, { "trigger": "advance", "source": "guest_num", "dest": "wrong_large", "conditions": "is_going_to_wrong_large", }, { "trigger": "advance", "source": "guest_num", "dest": "wrong_small", "conditions": "is_going_to_wrong_small", }, { "trigger": "advance", "source": "wrong_large", "dest": "right", "conditions": "is_going_to_right", }, { "trigger": "advance", "source": "wrong_small", "dest": "right", "conditions": "is_going_to_right", }, { "trigger": "advance", "source": "wrong_large", "dest": "wrong_large", "conditions": "is_going_to_wrong_large", }, { "trigger": "advance", "source": "wrong_large", "dest": "wrong_small", "conditions": "is_going_to_wrong_small", }, { "trigger": "advance", "source": "wrong_small", "dest": "wrong_large", "conditions": "is_going_to_wrong_large", }, { "trigger": "advance", "source": "wrong_small", "dest": "wrong_small", "conditions": "is_going_to_wrong_small", }, #------- #猜謎 { "trigger": "advance", "source": "option", "dest": "riddle", "conditions": "is_going_to_riddle", }, { "trigger": "advance", "source": "riddle", "dest": "riddle_right", "conditions": "is_going_to_riddle_right", }, { "trigger": "advance", "source": "riddle_right", "dest": "riddle", "conditions": "is_going_to_riddle", }, { "trigger": "advance", "source": "riddle", "dest": "riddle_wrong", "conditions": "is_going_to_riddle_wrong", }, { "trigger": "advance", "source": "riddle_wrong", "dest": "riddle_wrong", "conditions": "is_going_to_riddle_wrong", }, { "trigger": "advance", "source": "riddle_wrong", "dest": "riddle_answer", "conditions": "is_going_to_riddle_answer", }, { "trigger": "advance", "source": "riddle_answer", "dest": "riddle", "conditions": "is_going_to_riddle", }, { "trigger": "advance", "source": "riddle_wrong", "dest": "riddle_right", "conditions": "is_going_to_riddle_right", }, #--------- #笑話 { "trigger": "advance", "source": "option", "dest": "laugh", "conditions": "is_going_to_laugh", }, { "trigger": "advance", "source": "laugh", "dest": "laugh", "conditions": "is_going_to_laugh", }, #--------- #笑話管理 { "trigger": "advance", "source": "option", "dest": "laugh_manage", "conditions": "is_going_to_laugh_manage", }, { "trigger": "advance", "source": "laugh_manage", "dest": "add_laugh", "conditions": "is_going_to_add_laugh", }, { "trigger": "advance", "source": "add_laugh", "dest": "add_success", "conditions": "is_going_to_add_success", }, { "trigger": "advance", "source": "laugh_manage", "dest": "search_laugh", "conditions": "is_going_to_search_laugh", }, { "trigger": "advance", "source": "search_laugh", "dest": "laugh_search_num", "conditions": "is_going_to_laugh_search_num", }, { "trigger": "advance", "source": "laugh_search_num", "dest": "search_laugh", "conditions": "is_going_to_search_laugh", }, { "trigger": "advance", "source": "laugh_manage", "dest": "delete_laugh", "conditions": "is_going_to_delete_laugh", }, { "trigger": "advance", "source": "delete_laugh", "dest": "confirm_delete", "conditions": "is_going_to_confirm_delete", }, { "trigger": "advance", "source": "confirm_delete", "dest": "finish_delete", "conditions": "is_going_to_finish_delete", }, #--------- #music manage { "trigger": "advance", "source": "option", "dest": "music_manage", "conditions": "is_going_to_music_manage", }, { "trigger": "advance", "source": "music_manage", "dest": "add_music", "conditions": "is_going_to_add_music", }, { "trigger": "advance", "source": "add_music", "dest": "add_music_name", "conditions": "is_going_to_add_music_name", }, { "trigger": "advance", "source": "add_music_name", "dest": "add_music_link", "conditions": "is_going_to_add_music_link", }, { "trigger": "advance", "source": "add_music_link", "dest": "add_music_composer", "conditions": "is_going_to_add_music_composer", }, { "trigger": "advance", "source": "add_music_composer", "dest": "add_confirm", "conditions": "is_going_to_add_confirm", }, #delete music { "trigger": "advance", "source": "music_manage", "dest": "delete_music", "conditions": "is_going_to_delete_music", }, { "trigger": "advance", "source": "delete_music", "dest": "confirm_delete_music", "conditions": "is_going_to_confirm_delete_music", }, { "trigger": "advance", "source": "confirm_delete_music", "dest": "finish_delete_music", "conditions": "is_going_to_finish_delete_music", }, #modify { "trigger": "advance", "source": "music_manage", "dest": "modify_music", "conditions": "is_going_to_modify_music", }, { "trigger": "advance", "source": "modify_music", "dest": "modify_list", "conditions": "is_going_to_modify_list", }, { "trigger": "advance", "source": "modify_list", "dest": "modify_name", "conditions": "is_going_to_modify_name", }, { "trigger": "advance", "source": "modify_name", "dest": "modify_list", "conditions": "is_going_to_modify_name_to_list", }, { "trigger": "advance", "source": "modify_list", "dest": "modify_link", "conditions": "is_going_to_modify_link", }, { "trigger": "advance", "source": "modify_link", "dest": "modify_list", "conditions": "is_going_to_modify_link_to_list", }, { "trigger": "advance", "source": "modify_list", "dest": "modify_composer", "conditions": "is_going_to_modify_composer", }, { "trigger": "advance", "source": "modify_composer", "dest": "modify_list", "conditions": "is_going_to_modify_composer_to_list", }, { "trigger": "advance", "source": "modify_list", "dest": "modify_confirm", "conditions": "is_going_to_modify_confirm", }, #--------- { "trigger": "advance", "source": "option", "dest": "show_graph", "conditions": "is_going_to_show_graph", }, #--------- { "trigger": "advance", "source": [ "music", "random", "play", "guest_num", "right", "wrong_large", "wrong_small", "riddle", "riddle_right", "riddle_wrong", "riddle_answer", "laugh", "laugh_manage", "add_laugh", "add_success", "search_laugh", "laugh_search_num", "delete_laugh", "confirm_delete", "finish_delete", "music_manage", "add_music", "add_music_name", "add_music_link", "add_music_composer", "add_confirm", "delete_music", "confirm_delete_music", "finish_delete_music", "modify_music", "modify_list", "modify_name", "modify_link", "modify_composer", "modify_confirm", "show_graph" ], "dest": "option", "conditions": "is_going_back" }, ], initial="user", auto_transitions=False, show_conditions=True, ) 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[event.source.user_id].advance(event) if response == False: send_text_message(event.reply_token, "輸入錯誤,請檢查並重新輸入") return "OK"
def on_enter_state4(self, event): print("I'm entering state4") sender_id = event['sender']['id'] responese = send_text_message(sender_id, "Where do you want to go FROM ?")
def on_enter_state2(self, event): print("I'm entering state2") sender_id = event['sender']['id'] send_text_message(sender_id, "I'm entering state2") self.go_back()