async def _get_full_user(self) -> Dict:
if '<STR_LIT>' in self._user:<EOL><INDENT>return self._user<EOL><DEDENT>async with self._lock:<EOL><INDENT>if self._full_user is None:<EOL><INDENT>cm = await self._telegram.call(<EOL>'<STR_LIT>',<EOL>user_id=self._user['<STR_LIT:id>'],<EOL>chat_id=self._chat['<STR_LIT:id>'],<EOL>)<EOL>self._full_user = cm['<STR_LIT:result>']['<STR_LIT:user>']<EOL><DEDENT>return self._full_user<EOL><DEDENT>
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.