def question_handler(message): """ Если пользователь захочет ответить на вопросы просто так. """ if User_stud.objects(user_id=message.chat.id): stud = User_stud.objects(user_id=message.chat.id).first() print(message.chat.id, stud) stud.user_status = "ready" stud.save() send_single_conf(stud)
def tips_handler(message): """ После ответа на вопросы можео вызвать эту команду, чтобы узнать верные ответы на неверно отвеченные вопросы. """ user = User_stud.objects(user_id=message.chat.id).first() wrong_ans = user.user_wrong_answer.split(" ") wrong_ans = wrong_ans[:len(wrong_ans) - 1] wrong_ans2 = set(wrong_ans) wrong_ans = list(wrong_ans2) if len(wrong_ans) and (user.user_status == "tips"): message = " 📌 Повтори эти слова, чтобы в следующий" \ " раз правильно ответить: \n" for i in range(len(wrong_ans)): question = Question.objects(number=wrong_ans[i]).first() message += f"• *{question.text}* - {question.correct_answer} \n" bot.send_message(user.user_id, text=message, parse_mode="markdown") user.user_wrong_answer = "" user.user_status = "stop" user.save() elif user.user_status == "tips": bot.send_message(user.user_id, text=config.TIPS1_MSG, parse_mode="markdown") '''else:
def button_handler_questions(call): """ Вывод ответа правильно или неправильно ответил пользователь. """ bot.answer_callback_query(call.id) user = User_stud.objects(user_id=call.message.chat.id).first() number = user.user_number_que question = Question.objects(number=number).first() if user.user_status == "question": user_answer = question.answers[config.BUTTON_ANS[call.data] - 1] correct_answer = question.correct_answer print(user_answer) print(correct_answer) if user_answer == correct_answer: bot.send_message(call.message.chat.id, text=config.CORRECT_MSG) else: bot.send_message(call.message.chat.id, text=config.WRONG_MSG) user.user_wrong_answer += f"{number} " user.save() if user.user_count_que == config.PORTION_QUE: user.user_count_que = 0 if user.user_number_que >= config.COUNT_QUE: user.user_number_que = 1 else: user.user_number_que += 1 wrong_ans = user.user_wrong_answer.split(" ") wrong_ans = wrong_ans[:len(wrong_ans) - 1] if (len(wrong_ans)) > (config.PORTION_QUE / 2): bot.send_message(call.message.chat.id, text=config.END2_MSG) user.user_status = "tips" else: bot.send_message(call.message.chat.id, text=config.END1_MSG) if len(wrong_ans) == 0: user.user_status = "stop" else: user.user_status = "tips" user.save() else: user.user_count_que += 1 if user.user_number_que >= config.COUNT_QUE: user.user_number_que = 1 else: user.user_number_que += 1 user.save() send_questions(user)
def message_send_tips(): """ Отправка подсказок пользователям, у коготорых статус "tips". """ for user in User_stud.objects(): if user.user_status == "tips": tips_msg_only(user)
def button_handler_ready(call): """ Если пользователь ннажал "Я готов", то ему отправляются вопросы. """ bot.answer_callback_query(call.id) student = User_stud.objects(user_id=call.message.chat.id).first() if student.user_status == "ready": send_questions(student)
def message_send_readiness(): """ Отправка ВСЕМ пользователям вопрос о готовности ("Я готов", "Я не готов"). """ for stud in User_stud.objects(): if stud.user_status == "stop": stud.user_status = "ready" stud = send_single_conf(stud) stud.save()
def start_registration(message): """ Запись некоторых данных пользователя в бд. """ if not User_stud.objects(user_id=message.chat.id): msg = bot.send_message(message.chat.id, text=config.HELLO_MESSAGE) bot.register_next_step_handler(msg, name_ask) else: bot.send_message(message.chat.id, text="А мы уже знакомы 😄")
def message_end(call): """ Если пользователь нажал "Я не готов", то ему приходит сообщение с ожиданием до завтра. """ bot.answer_callback_query(call.id) user = User_stud.objects(user_id=call.message.chat.id).first() bot.send_message(user.user_id, text=config.NOT_READY_MSG) user.user_status = "stop" user.save()