Esempio n. 1
0
def inline_query(callback):
    try:
        data = callback.data
        exercise = Exercise.objects(message_id=callback.message.message_id,
                                    chat_id=callback.message.chat.id).first()
        user = User.objects(chat_id=callback.message.chat.id).first()
        if exercise:
            if data.startswith("#delete"):
                delete(exercise, callback.message)
            elif data.startswith("#check"):
                if not exercise.checked:
                    check_exercise(exercise, user, callback.message)
            elif data.startswith("#next"):
                next(user, callback.message, exercise)
            elif data.startswith("#settings"):
                delete_keyboard(exercise.message_id, exercise.chat_id)
                settings(callback.message, "send")
            # elif data.startswith("#to_settings"):
            #     settings(callback.message, "edit")

            # elif data.startswith("#return_to_training"):
            #     next(user, callback.message)
            else:
                exercise.update(set__user_response=data)
                keyboard = make_keyboard(exercise)
                bot.edit_message_text(chat_id=callback.message.chat.id,
                                      message_id=callback.message.message_id,
                                      text=make_text_for_message(
                                          exercise, data),
                                      parse_mode=parse_mode,
                                      reply_markup=keyboard)
        else:
            if data.startswith("#to_settings"):
                settings(callback.message, "edit")
            elif data.startswith("#show_settings"):
                show_settings(callback.message, user)
            elif data.startswith("#return_to_training"):
                next(user, callback.message)
            elif data.startswith("#set_parts_of_speech"):
                set_parts_of_speech(user, callback.message)
            elif data.startswith("#part_of_speech"):
                _, part_of_speech = data.split(" ")
                update_users_parts_of_speech(part_of_speech, user)
                user.reload()
                set_parts_of_speech(user, callback.message)
            elif data.startswith("#set_repeat"):
                set_repeat(user, callback.message)
            elif data.startswith("#repeat"):
                _, answer = data.split(" ")
                set_repeat(user, callback.message, answer)
            elif data.startswith("#set_level"):
                set_level(user, callback.message)
            elif data.startswith("#level"):
                _, answer = data.split(" ")
                set_level(user, callback.message, answer)

        print_info(user, "answer:       " + data)
    except Exception as e:
        print(e)
Esempio n. 2
0
def send_repeat_exercise(message):
    exercises = Exercise.objects(chat_id=message.chat.id)
    if len(exercises) > 0:
        repeat_exercise = random.choice(exercises)
        res = send_exercise(repeat_exercise)
        repeat_exercise.update(set__message_id=res.message_id,
                               set__checked=False,
                               set__closed=False)
        repeat_exercise.reload()
    else:
        create_and_send_exercise(message)
Esempio n. 3
0
def close_exercise(user):
    for exercise_ in Exercise.objects(chat_id=user.chat_id, closed=False):
        delete_keyboard(exercise_.message_id, exercise_.chat_id)
        exercise_.update(set__closed=True)