def test_user_state(group): user = generate_user() Storage.add_user_to_group(group, user) assert Storage.get_group_members(group) == {user} assert user not in Storage.get_group_not_understand_members(group) assert Storage.get_user_state(user) is True assert Storage.set_user_state(user, False) assert user in Storage.get_group_not_understand_members(group) assert Storage.get_user_state(user) is False assert Storage.set_user_state(user, True) assert user not in Storage.get_group_not_understand_members(group) assert Storage.get_user_state(user) is True user_2 = generate_user() assert Storage.set_user_state(user_2, False) is False assert Storage.get_user_state(user_2) is None Storage._redis.set(Storage.Keys.user_group(user_2), utils.generate_group_id()) assert Storage.set_user_state(user_2, False) is False assert Storage.get_user_state(user_2) is None Storage._redis.set(Storage.Keys.user_group(user_2), group) assert Storage.set_user_state(user_2, False) is False assert Storage.get_user_state(user_2) is None
def keyboard_callback(update: telegram.Update, context: CallbackContext): state = Storage.get_user_state(update.effective_user.id) if state is None: raise errors.UserHaveNoActiveGroup query = update.callback_query new_state = bool(int(query.data)) if not state ^ new_state: return Storage.set_user_state(update.effective_user.id, new_state) if new_state: query.edit_message_text(text=f'Ok! Now you *understanding*!', reply_markup=stop_understand_keyboard, parse_mode=telegram.ParseMode.MARKDOWN) else: query.edit_message_text(text=f'Ok! Now you *not understanding* :(', reply_markup=start_understand_keyboard, parse_mode=telegram.ParseMode.MARKDOWN)