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)
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)
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)