def handle(self, handler_input): logger.info("HAN FP_WrongAnswerHandler") speech_list = [] player_obj = PlayerDict.load_player_obj(handler_input) UserStats.update_player_stats(handler_input, correct=False, player_obj=player_obj) WrongAnswer.record_wrong_question(handler_input) ms_incorrect = IncorrectAnsUtils.get_buzz_and_incorrect() ms_retry_question = AllQuestionIntros.get_retry_question(handler_input) reprompt = GenQuestions.get_same_question(handler_input) speech_list += Pauser.make_ms_pause_level_list(ms_incorrect, 1, ms_retry_question) SessionStats.update_consecutive_correct(handler_input, correct=False) ModeStats.update_mode_stats(handler_input, correct=False) logger.debug(speech_list) speech = ' '.join(speech_list) card_title, card_text = CardFuncs.get_card_info(handler_input, speech) return (handler_input.response_builder.speak(speech).ask( reprompt).set_card(SimpleCard(card_title, card_text)).response)
def handle(self, handler_input): logger.info("HAN FP_AnsweredRequestedQuestionsHandler") attr = handler_input.attributes_manager.session_attributes speech_list = [] correct = QuestionChecker.check_answer(handler_input) UserStats.update_player_stats(handler_input, correct) ms_congrats = CongratUtils.get_player_congrats(handler_input, 2) num_questions = attr.get('num_questions', '') ms_answered_all_questions = FPSpeech.get_ms_answered_all_questions( num_questions) prompt, reprompt = (HelpUtils.get_q_what_todo() for _ in range(2)) prompt = CardFuncs.format_prompt(prompt) speech_list += Pauser.make_ms_pause_level_list( ms_congrats, 1, ms_answered_all_questions, 3, prompt) SessionStats.update_consecutive_correct(handler_input, correct) ModeStats.update_mode_stats(handler_input, correct) ModeStats.translate_mode_stats_to_sesh(handler_input) FreePlayAttr.set_attr_end_fp(handler_input) speech = ' '.join(speech_list) card_title, card_text = CardFuncs.get_card_info(handler_input, speech) return (handler_input.response_builder.speak(speech).ask( reprompt).set_card(SimpleCard(card_title, card_text)).response)
def handle(self, handler_input): logger.info("HAN SM_CorrectQuestionHandler") speech_list = [] player_obj = PlayerDict.load_player_obj(handler_input) UserStats.update_player_stats(handler_input, correct = True, player_obj= player_obj) SM_Attr.increment_sm_upper(handler_input) ms_congrats = CongratUtils.get_answer_congrats( handler_input, player_obj= player_obj, survival_mode=True) logger.debug(ms_congrats) ms_question = SMQuestions.get_question( handler_input, first_question= False, player_obj= player_obj) reprompt = GenQuestions.get_same_question(handler_input) if len(ms_congrats): sm_pause = Pauser.get_sm_pause_length(handler_input) speech_list += Pauser.make_ms_pause_level_list(ms_congrats, sm_pause) speech_list.append( ms_question) SessionStats.update_consecutive_correct(handler_input, True) ModeStats.update_mode_stats(handler_input, True) speech = ' '.join(speech_list) card_title, card_text = CardFuncs.get_card_info(handler_input, speech) return ( handler_input.response_builder .speak(speech) .ask(reprompt) .set_card( SimpleCard( card_title, card_text)) .response)
def handle(self, handler_input): logger.info("HAN FP_CorrectAnswerHandler") speech_list = [] player_obj = PlayerDict.load_player_obj(handler_input) UserStats.update_player_stats(handler_input, correct=True, player_obj=player_obj) ms_congrats = CongratUtils.get_answer_congrats(handler_input, player_obj=player_obj) ms_question = FPQuestions.get_question(handler_input) reprompt = FPQuestions.get_rephrased_question(handler_input) logger.debug(ms_congrats) if ms_congrats != "": speech_list += Pauser.make_ms_pause_level_list( ms_congrats, 1, ms_question) else: speech_list.append(ms_question) SessionStats.update_consecutive_correct(handler_input, correct=True) ModeStats.update_mode_stats(handler_input, correct=True) logger.debug(speech_list) speech = ' '.join(speech_list) card_title, card_text = CardFuncs.get_card_info(handler_input, speech) return (handler_input.response_builder.speak(speech).ask( reprompt).set_card(SimpleCard(card_title, card_text)).response)
def handle(self, handler_input): logger.info("HAN CP_WrongAnswerHandler") speech_list = [] player_obj = PlayerDict.load_player_obj(handler_input) CP_Attr.update_last_question_attr(handler_input, correct=False) UserStats.update_player_stats(handler_input, correct=False, player_obj=player_obj) ms_wrong = IncorrectAnsUtils.get_ms_incorrect() question = GenQuestions.get_same_question(handler_input) reprompt = question speech_list = ( ms_wrong, 1, question, ) SessionStats.update_consecutive_correct(handler_input, correct=False) ModeStats.update_mode_stats(handler_input, correct=False) WrongAnswer.record_wrong_question(handler_input) PlayerDict.save_player_obj(handler_input, player_obj) speech = get_linear_nlg(speech_list) reprompt = GenQuestions.get_same_question(handler_input) card_title, card_text = CardFuncs.get_card_info(handler_input, speech) return (handler_input.response_builder.speak(speech).ask( reprompt).set_card(SimpleCard(card_title, card_text)).response)
def handle(self, handler_input): logger.info("HAN CP_CorrectAnswerHandler") attr = handler_input.attributes_manager.session_attributes speech_list = [] practice_type = attr['practice_type'] if practice_type == custom_practice.data.PRACT_TYPES[0]: CP_Attr.remove_question_from_incorrect_questions( handler_input) ## Before updating last question CP_Attr.update_last_question_attr(handler_input, correct=True) player_obj = PlayerDict.load_player_obj(handler_input) UserStats.update_player_stats(handler_input, correct=True, player_obj=player_obj) ms_congrats = CongratUtils.get_answer_congrats(handler_input, player_obj=player_obj) ms_question = CP_Questions.get_question(handler_input, player_object=player_obj, practice_type=practice_type, first_question=False) reprompt = GenQuestions.get_same_question(handler_input) speech_list = (ms_congrats, 1, ms_question) SessionStats.update_consecutive_correct(handler_input, True) ModeStats.update_mode_stats(handler_input, True) PlayerDict.save_player_obj(handler_input, player_obj) speech = get_linear_nlg(speech_list) reprompt = GenQuestions.get_same_question(handler_input) card_title, card_text = CardFuncs.get_card_info(handler_input, speech) return (handler_input.response_builder.speak(speech).ask( reprompt).set_card(SimpleCard(card_title, card_text)).response)
def handle(self, handler_input): logger.info("HAN SM_WrongAnswerHandler") player_obj = PlayerDict.load_player_obj(handler_input) UserStats.update_player_stats( handler_input, correct = False, player_obj= player_obj) WrongAnswer.record_wrong_question(handler_input) ms_incorrect = IncorrectAnsUtils.get_buzz_and_incorrect() ms_correct_ans = GetAnswerSpeech.get_ms_answer(handler_input) ms_score = SMEndGame.get_ms_game_score(handler_input) ms_congrats = CongratUtils.get_player_congrats(handler_input, 1) ms_results = SMEndGame.get_ms_score_results( handler_input, player_obj= player_obj) ms_thanks = get_ms_thanks(handler_input, mode = True, excite=True) prompt, reprompt = ( HelpUtils.get_q_what_todo() for _ in range(2)) speech_list = ( ms_incorrect, 1, ms_correct_ans, 2, ms_congrats, 0.75, ms_score, 1.25, ms_results, 1.75, ms_thanks, 4.5, prompt, ) SM_Attr.log_stats(handler_input) SessionStats.update_consecutive_correct(handler_input, correct= False) ModeStats.update_mode_stats(handler_input, correct= False) UserStats.update_player_sm_stats(handler_input, player_obj= player_obj) #before translating mode stats SM_Attr.set_attr_end_survival_mode(handler_input) ModeStats.translate_mode_stats_to_sesh(handler_input) speech = get_linear_nlg(speech_list) card_title, card_text = CardFuncs.get_card_info(handler_input, speech) return ( handler_input.response_builder .speak(speech) .ask(reprompt) .set_card( SimpleCard( card_title, card_text)) .response)
def calculate_excite_level(handler_input, player_obj: object = None, survival_mode: bool = False) -> int: """Returns congratulations level to return to the user. Conditions checked: - Consecutive incorrect - Consecutive correct - If user has high (f) error on table - Table difficulty vs average table difficulty """ attr = handler_input.attributes_manager.session_attributes consecutive_incorrect = attr.get('consecutive_incorrect', 0) consecutive_correct = attr.get('consecutive_correct', 0) consecutive_correct = (consecutive_correct + 1) if consecutive_correct is not None else 1 excite_level = 0 if consecutive_incorrect and (not survival_mode): return consecutive_incorrect - (1 - random.random()) elif ((consecutive_correct) % 5 == 0) and (not survival_mode): return CongratLevel.get_level_consecutive_correct( consecutive_correct) tables = QuestionAttr.get_question_tables(handler_input, integers=False) if not player_obj: player_obj = PlayerDict.load_player_obj(handler_input) ## Check table error frequency higher_f_error = UserStats.get_higher_table_error_freq( handler_input, player_obj=player_obj, tables=tables) logger.debug(f"higher_f_error {higher_f_error}") if higher_f_error >= 1.5: ## Arbitrary value. NOTE: Revist. return higher_f_error ## Check Relative Table difficulty higher_table_difficulty = UserStats.get_higher_table_difficulty( handler_input, player_obj=player_obj, tables=tables) logger.debug(f"higher_table_difficulty {higher_table_difficulty}") if higher_table_difficulty > 1.5: return higher_table_difficulty return excite_level
def handle(self, handler_input): logger.info("HAN SC_FinishedChallengeHandler") speech_list = [] SC_Attr.save_end_time(handler_input) sc_score_time = SC_Attr.get_sc_total_time(handler_input) player_obj = PlayerDict.load_player_obj(handler_input) SessionStats.update_consecutive_correct(handler_input, correct=True) ModeStats.update_mode_stats(handler_input, correct=True) UserStats.update_player_stats(handler_input, correct=True, player_obj=player_obj) ms_congrats = CongratUtils.get_player_congrats(handler_input, 2) ms_complete_time = SC_EndGame.get_ms_game_score( handler_input, sc_score_time) ms_score_results = SC_EndGame.get_ms_score_results( handler_input, sc_score_time=sc_score_time, player_obj=player_obj) ms_thanks = get_ms_thanks(handler_input, mode=True, excite=True) prompt, reprompt = (HelpUtils.get_q_what_todo() for _ in range(2)) speech_list = ( ms_congrats, 1, ms_complete_time, 1.5, ms_score_results, 1.75, ms_thanks, 4, prompt, ) SC_Attr.log_sc_stats(handler_input) ModeStats.translate_mode_stats_to_sesh(handler_input) UserStats.update_player_sc_stats(handler_input, sc_score_time=sc_score_time, player_obj=player_obj) SC_Attr.set_attr_end_sc(handler_input) PlayerDict.save_player_obj(handler_input, player_obj) speech = get_linear_nlg(speech_list) card_title, card_text = CardFuncs.get_card_info(handler_input, speech) return (handler_input.response_builder.speak(speech).ask( reprompt).set_card(SimpleCard(card_title, card_text)).response)
def handle(self, handler_input): logger.info("HAN SC_CorrectAnswerHandler") ## TODO: Check sc attr and if anything needs to be incremented?? player_obj = PlayerDict.load_player_obj(handler_input) UserStats.update_player_stats(handler_input, correct=True, player_obj=player_obj) question = SC_Questions.get_question(handler_input) reprompt = question SessionStats.update_consecutive_correct(handler_input, correct=True) ModeStats.update_mode_stats(handler_input, correct=True) speech = question card_title, card_text = CardFuncs.get_card_info(handler_input, speech) return (handler_input.response_builder.speak(speech).ask( reprompt).set_card(SimpleCard(card_title, card_text)).response)
def get_ms_relative_difficulty( handler_input, player_obj: object = None, answered_tables: list = None, ) -> str: """Returns message depending on z_score from higher table diff.""" z_score = UserStats.get_higher_table_difficulty( handler_input, player_obj=player_obj, answered_tables=answered_tables) z_score = int(z_score) random_num = random.random() if (z_score < -1) and (random_num < z_score * -0.23): return SMQuestions.get_low_z_score_question() elif (z_score in (-1, 0, 1)) and (random_num <= 0.55): return SMQuestions.get_normal_question() elif (z_score > 1) and (random_num < z_score * 0.23): return SMQuestions.get_high_z_score_question() else: return SMQuestions.get_no_question_intro()
def handle(self, handler_input): logger.info("HAN CP_NextPracticeHandler") attr = handler_input.attributes_manager.session_attributes speech_list = [] player_obj = PlayerDict.load_player_obj(handler_input) UserStats.update_player_stats(handler_input, correct=True, player_obj=player_obj) CP_Attr.set_attr_new_practice(handler_input) CP_Attr.set_tbl_mean_err_list_attr(handler_input, player_obj) practice_type = attr['practice_type'] ms_end_pract_type = CP_PractEnd.get_ms_practice_type_end( handler_input, practice_type=practice_type) if practice_type == custom_practice.data.PRACT_TYPES[0]: CP_Attr.remove_question_from_incorrect_questions(handler_input) ms_congrats = CongratUtils.get_player_congrats(handler_input) if practice_type != custom_practice.data.PRACT_TYPES[-1]: practice_type = CP_PracticeType.get_practice_type( handler_input, allow_incorrect_problems=False) CP_Attr.save_practice_type(handler_input, practice_type) CP_Attr.set_pract_type_attr(handler_input, player_obj, practice_type) CP_Attr.update_last_question_attr(handler_input, correct=True) ms_practice_intro = CP_PractIntro.get_ms_practice_type_intro( handler_input, practice_type=practice_type) question = CP_Questions.get_question(handler_input, player_obj, practice_type, first_question=True) reprompt = GenQuestions.get_same_question(handler_input) speech_list = ( ms_congrats, 0.5, ms_end_pract_type, 2.5, ms_practice_intro, 2, question, ) else: UserStats.update_player_cp_stats(handler_input, player_obj) prompt, reprompt = (HelpUtils.get_q_what_todo() for _ in range(2)) speech_list = (ms_congrats, 0.5, ms_end_pract_type, 2, prompt) SessionStats.update_consecutive_correct(handler_input, True) ModeStats.update_mode_stats(handler_input, True) PlayerDict.save_player_obj(handler_input, player_obj) speech = get_linear_nlg(speech_list) reprompt = GenQuestions.get_same_question(handler_input) card_title, card_text = CardFuncs.get_card_info(handler_input, speech) return (handler_input.response_builder.speak(speech).ask( reprompt).set_card(SimpleCard(card_title, card_text)).response)