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
예제 #2
0
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)