diff --git a/README.md b/README.md
index 9ebcf61..b16d2b6 100644
--- a/README.md
+++ b/README.md
@@ -23,13 +23,6 @@
 pip install py-vkontakte
 ```
 
-### Run tests
-
-```
-pip install -r requirements-dev.txt
-pytest
-```
-
 ### First start
 
 ```python
@@ -75,6 +68,7 @@ pytest
 >>> user.is_deleted  # False
 >>> user.is_banned  # False
 >>> user.can_write_private_message  # False
+>>> user.is_friend  # False
 
 >>> user.get_about()
 >>> user.get_activities()
@@ -116,3 +110,10 @@ pytest
 >>> group = api.get_group('telegram')
 >>> user in group  # or 100500 in group
 ```
+
+### Run tests
+
+```
+pip install -r requirements-dev.txt
+pytest
+```
diff --git a/vk/users.py b/vk/users.py
index d52d705..f3b6b2c 100644
--- a/vk/users.py
+++ b/vk/users.py
@@ -24,6 +24,7 @@ class User(VKBase):
         'trending',
         'site',
         'relation',
+        'is_friend'
     )
 
     @classmethod
@@ -40,6 +41,7 @@ class User(VKBase):
         user.site = json_obj.get('site')
         user.relation = cls._relation(json_obj)
         user.relation_partner = cls._relation_partner(json_obj)
+        user.is_friend = bool(json_obj.get('is_friend'))
 
         user.facebook = json_obj.get('facebook')
         user.skype = json_obj.get('skype')

Пользователь. Опциональные поля (is_friend, can_write_private_message)
Подскажите, пожалуйста, как можно получить опциональные поля пользователя?

- [x] `is_friend`
- [x] `can_write_private_message`

https://vk.com/dev/objects/user
diff --git a/tests/test_user.py b/tests/test_user.py
index 58fb1d6..0417cb0 100644
--- a/tests/test_user.py
+++ b/tests/test_user.py
@@ -34,6 +34,7 @@ def test_user(factory):
     assert user.site == 'http://t.me/durov'
     assert user.relation is None
     assert user.relation_partner is None
+    assert user.is_friend is False
 
 
 def test_user_is_deleted(factory):
@@ -43,6 +44,7 @@ def test_user_is_deleted(factory):
     assert user.is_deleted
     assert not user.is_banned
 
+
 def test_user_is_banned(factory):
     user_json = factory('user_is_deleted.json')
     user_json['deactivated'] = 'banned'
@@ -52,6 +54,7 @@ def test_user_is_banned(factory):
     assert not user.is_deleted
     assert user.is_banned
 
+
 @pytest.mark.parametrize('index, name', [
     (1, 'female'),
     (2, 'male'),
@@ -77,11 +80,12 @@ def test_sex(index, name, factory):
 ])
 def test_platform(index, name, factory):
     user_json = factory('user.json')
-    user_json['last_seen']['platform'] = index 
+    user_json['last_seen']['platform'] = index
     user = User.from_json(None, user_json)
 
     assert user.platform == name
 
+
 @pytest.mark.parametrize('value, expected', [
     (0, False),
     (1, True),
@@ -93,6 +97,7 @@ def test_can_write_private_message(factory, value, expected):
 
     assert user.can_write_private_message is expected
 
+
 def test_without_status(factory):
     user_json = factory('user.json')
     assert 'status' in user_json
@@ -109,9 +114,10 @@ def test_maiden_name(factory):
 
     user_json['maiden_name'] = 'Maiden'
     user = User.from_json(None, user_json)
-    
+
     assert user.maiden_name == 'Maiden'
 
+
 def test_without_last_seen(factory):
     user_json = factory('user.json')
     del user_json['last_seen']
@@ -143,7 +149,7 @@ def test_if_not_field_site(factory):
 @pytest.mark.parametrize('method, field, expected', [
     ('get_activities', 'activities', 'Activities'),
     ('get_activities', 'activities', ''),
-    
+
     ('get_about', 'about', 'About'),
     ('get_about', 'about', ''),
 
@@ -169,7 +175,7 @@ def test_get(mock, method, field, expected):
     user = User.from_json(None, {})
     mock.return_value = [{field: expected}]
 
-    assert getattr(user, method)() == expected 
+    assert getattr(user, method)() == expected
 
 
 def test_not_relation(factory):
@@ -215,7 +221,7 @@ def test_relation_partner(factory):
 def test_get_career(mock, factory):
     user = User.from_json(None, {})
     user_career = [UserCareer.from_json(None, career) for career in factory('user_career.json')['career']]
-    mock.return_value = [factory('user_career.json') ]
+    mock.return_value = [factory('user_career.json')]
 
     assert user.get_career() == user_career
 
@@ -227,6 +233,19 @@ def test_get_career(mock, factory):
 ])
 def test_get_career_empty(mock, career, expected, factory):
     user = User.from_json(None, {})
-    mock.return_value = career 
+    mock.return_value = career
 
     assert user.get_career() == expected
+
+
+@pytest.mark.parametrize('value, expected', [
+    (0, False),
+    (1, True),
+])
+def test_is_friend(factory, value, expected):
+    user_json = factory('user.json')
+    user_json['is_friend'] = value
+
+    user = User.from_json(None, user_json)
+
+    assert user.is_friend is expected

pip install -e .[dev]
parse_log_pytest
requirements.txt
pytest
3.6
requirements-dev.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
astroid==2.11.7
attrs==22.2.0
certifi==2021.5.30
dill==0.3.4
importlib-metadata==4.8.3
iniconfig==1.1.1
isort==5.10.1
lazy-object-proxy==1.7.1
mccabe==0.7.0
packaging==21.3
platformdirs==2.4.0
pluggy==1.0.0
py==1.11.0
-e git+https://github.com/sgaynetdinov/py-vkontakte.git@c2682e099cd263ad39805b63390d628a00e047d4#egg=py_vkontakte
pylint==2.13.9
pyparsing==3.1.4
pytest==7.0.1
pytest-mock==3.6.1
tomli==1.2.3
typed-ast==1.5.5
typing_extensions==4.1.1
wrapt==1.16.0
zipp==3.6.0

name: py-vkontakte
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=21.2.2=py36h06a4308_0
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - astroid==2.11.7
      - attrs==22.2.0
      - dill==0.3.4
      - importlib-metadata==4.8.3
      - iniconfig==1.1.1
      - isort==5.10.1
      - lazy-object-proxy==1.7.1
      - mccabe==0.7.0
      - packaging==21.3
      - platformdirs==2.4.0
      - pluggy==1.0.0
      - py==1.11.0
      - pylint==2.13.9
      - pyparsing==3.1.4
      - pytest==7.0.1
      - pytest-mock==3.6.1
      - tomli==1.2.3
      - typed-ast==1.5.5
      - typing-extensions==4.1.1
      - wrapt==1.16.0
      - zipp==3.6.0
prefix: /opt/conda/envs/py-vkontakte

tests/test_user.py::test_user tests/test_user.py::test_is_friend[0-False] tests/test_user.py::test_is_friend[1-True]
tests/test_user.py::test_user_is_deleted tests/test_user.py::test_user_is_banned tests/test_user.py::test_sex[1-female] tests/test_user.py::test_sex[2-male] tests/test_user.py::test_sex[4-None] tests/test_user.py::test_sex[None-None] tests/test_user.py::test_platform[1-m.vk.com] tests/test_user.py::test_platform[2-iPhone tests/test_user.py::test_platform[3-iPad tests/test_user.py::test_platform[4-Android tests/test_user.py::test_platform[5-Windows tests/test_user.py::test_platform[6-Windows tests/test_user.py::test_platform[7-web tests/test_user.py::test_can_write_private_message[0-False] tests/test_user.py::test_can_write_private_message[1-True] tests/test_user.py::test_without_status tests/test_user.py::test_maiden_name tests/test_user.py::test_without_last_seen tests/test_user.py::test_not_time_in_last_seen tests/test_user.py::test_if_not_field_site tests/test_user.py::test_get[get_activities-activities-Activities] tests/test_user.py::test_get[get_activities-activities-] tests/test_user.py::test_get[get_about-about-About] tests/test_user.py::test_get[get_about-about-] tests/test_user.py::test_get[get_books-books-Book] tests/test_user.py::test_get[get_books-books-] tests/test_user.py::test_get[get_games-games-Games] tests/test_user.py::test_get[get_games-games-] tests/test_user.py::test_get[get_movies-movies-Movies] tests/test_user.py::test_get[get_movies-movies-] tests/test_user.py::test_get[get_music-music-Music] tests/test_user.py::test_get[get_music-music-] tests/test_user.py::test_get[get_quotes-quotes-Quotes] tests/test_user.py::test_get[get_quotes-quotes-] tests/test_user.py::test_get[get_tv-tv-TV] tests/test_user.py::test_get[get_tv-tv-] tests/test_user.py::test_not_relation tests/test_user.py::test_relation[0-None] tests/test_user.py::test_relation[1-single] tests/test_user.py::test_relation[2-in tests/test_user.py::test_relation[3-engaged] tests/test_user.py::test_relation[4-married] tests/test_user.py::test_relation[5-it's tests/test_user.py::test_relation[6-actively tests/test_user.py::test_relation[7-in tests/test_user.py::test_relation[8-in tests/test_user.py::test_relation[9-None] tests/test_user.py::test_relation_partner tests/test_user.py::test_get_career tests/test_user.py::test_get_career_empty[career0-expected0] tests/test_user.py::test_get_career_empty[career1-expected1]
vk/users.py README.md
vk/users.py README.md