Source code for aiogram.types.user

from __future__ import annotations

from typing import Optional

import babel

from . import base
from . import fields
from ..utils import markdown
from ..utils.deprecated import deprecated


[docs]class User(base.TelegramObject): """ This object represents a Telegram user or bot. https://core.telegram.org/bots/api#user """ id: base.Integer = fields.Field() is_bot: base.Boolean = fields.Field() first_name: base.String = fields.Field() last_name: base.String = fields.Field() username: base.String = fields.Field() language_code: base.String = fields.Field() is_premium: base.Boolean = fields.Field() added_to_attachment_menu: base.Boolean = fields.Field() can_join_groups: base.Boolean = fields.Field() can_read_all_group_messages: base.Boolean = fields.Field() supports_inline_queries: base.Boolean = fields.Field() @property def full_name(self): """ You can get full name of user. :return: str """ full_name = self.first_name if self.last_name: full_name += ' ' + self.last_name return full_name @property def mention(self): """ You can get user's username to mention him Full name will be returned if user has no username :return: str """ if self.username: return '@' + self.username return self.full_name @property def locale(self) -> Optional[babel.core.Locale]: """ Get user's locale :return: :class:`babel.core.Locale` """ if not self.language_code: return None if not hasattr(self, '_locale'): setattr(self, '_locale', babel.core.Locale.parse(self.language_code, sep='-')) return getattr(self, '_locale') @property def url(self) -> str: return f"tg://user?id={self.id}" def get_mention(self, name: Optional[str] = None, as_html: Optional[bool] = None) -> str: if as_html is None and self.bot.parse_mode and self.bot.parse_mode.lower() == 'html': as_html = True if name is None: name = self.full_name if as_html: return markdown.hlink(name, self.url) return markdown.link(name, self.url) @deprecated( '`get_user_profile_photos` is outdated, please use `get_profile_photos`', stacklevel=3 ) async def get_user_profile_photos(self, offset=None, limit=None): return await self.bot.get_user_profile_photos(self.id, offset, limit) async def get_profile_photos(self, offset=None, limit=None): return await self.bot.get_user_profile_photos(self.id, offset, limit) def __hash__(self): return self.id def __int__(self): return self.id