Пример #1
0
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)
Пример #2
0
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:
Пример #3
0
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)
Пример #4
0
def message_send_tips():
    """
        Отправка подсказок пользователям, у коготорых статус "tips".
    """

    for user in User_stud.objects():
        if user.user_status == "tips":
            tips_msg_only(user)
Пример #5
0
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)
Пример #6
0
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()
Пример #7
0
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="А мы уже знакомы 😄")
Пример #8
0
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()
Пример #9
0
def name_ask(message):
    """
        Запись данных в саму базу данных.
    """

    if type(message.text) == str:
        user_name = message.text

        stud = User_stud(user_id=message.chat.id,
                         user_name=user_name,
                         user_status="stop",
                         user_count_que=0,
                         user_number_que=1,
                         user_wrong_answer="")
        stud.save()

        bot.send_message(message.chat.id,
                         text="👋 Привет, " + user_name + config.START_REG_MSG)
    else:
        msg = bot.send_message(message.chat.id,
                               text="😔 Прости, я тебя не понимаю,"
                               "попробуй еще раз")

        bot.register_next_step_handler(msg, name_ask)