docs: async def _get_full_user(self) -> Dict:
          """
          Sometimes Telegram does not provide all the user info with the message.
          In order to get the full profile (aka the language code) you need to
          call this method which will make sure that the full User object is
          loaded.
  
          The result is cached for the lifetime of the object, so if the function
          is called multiple times it will only fetch the user once. There is
          a locking mechanism around the cache to allow concurrent calls.
          """
  
          if 'language_code' in self._user:
              return self._user
  
          async with self._lock:
              if self._full_user is None:
                  cm = await self._telegram.call(
                      'getChatMember',
                      user_id=self._user['id'],
                      chat_id=self._chat['id'],
                  )
                  self._full_user = cm['result']['user']
  
              return self._full_user