diff --git a/aiogram/api/types/user.py b/aiogram/api/types/user.py index cfbf2628..f68c8fb7 100644 --- a/aiogram/api/types/user.py +++ b/aiogram/api/types/user.py @@ -39,3 +39,10 @@ class User(TelegramObject): if self.last_name: return f"{self.first_name} {self.last_name}" return self.first_name + + @property + def url(self) -> str: + """ + Get user's profile url. + """ + return f"tg://user?id={self.id}" diff --git a/tests/test_api/test_types/test_user.py b/tests/test_api/test_types/test_user.py index 064113ca..a898cd8e 100644 --- a/tests/test_api/test_types/test_user.py +++ b/tests/test_api/test_types/test_user.py @@ -24,3 +24,15 @@ class TestUser: def test_full_name(self, first_name: str, last_name: str, expected_full_name: str): user = User(id=42, is_bot=False, first_name=first_name, last_name=last_name) assert user.full_name == expected_full_name + + @pytest.mark.parametrize( + "user_id, expected_url", + [ + [42, "tg://user?id=42"], + [0, "tg://user?id=0"], + [-9999999999999999, "tg://user?id=-9999999999999999"], + ], + ) + def test_url(self, user_id: int, expected_url: str): + user = User(id=user_id, is_bot=False, first_name="User", last_name="Name") + assert user.url == expected_url