async def _process_client_persona_state(self, body): logger.debug("Processing message ClientPersonaState") if self.user_info_handler is None: return message = steammessages_clientserver_friends_pb2.CMsgClientPersonaState( ) message.ParseFromString(body) for user in message.friends: user_id = user.friendid if user_id == self._steam_id and int(user.game_played_app_id) != 0: await self.get_apps_info([int(user.game_played_app_id)]) user_info = UserInfo() if user.HasField("player_name"): user_info.name = user.player_name if user.HasField("avatar_hash"): user_info.avatar_hash = user.avatar_hash if user.HasField("persona_state"): user_info.state = EPersonaState(user.persona_state) if user.HasField("gameid"): user_info.game_id = user.gameid rich_presence: Dict[str, str] = {} for element in user.rich_presence: rich_presence[element.key] = element.value user_info.rich_presence = rich_presence if user.HasField("game_name"): user_info.game_name = user.game_name await self.user_info_handler(user_id, user_info)
async def _process_client_persona_state(self, body): logger.debug("Processing message ClientPersonaState") if self.user_info_handler is None: return message = steammessages_clientserver_friends_pb2.CMsgClientPersonaState( ) message.ParseFromString(body) for user in message.friends: user_id = user.friendid if user_id == self.steam_id and int(user.game_played_app_id) != 0: await self.get_apps_info([int(user.game_played_app_id)]) user_info = ProtoUserInfo() if user.HasField("player_name"): user_info.name = user.player_name if user.HasField("avatar_hash"): user_info.avatar_hash = user.avatar_hash if user.HasField("persona_state"): user_info.state = EPersonaState(user.persona_state) if user.HasField("gameid"): user_info.game_id = user.gameid rich_presence: Dict[str, str] = {} for element in user.rich_presence: if type(element.value) == bytes: logger.warning( f"Unsupported presence type: {type(element.value)} {element.value}" ) rich_presence = {} break rich_presence[element.key] = element.value if element.key == 'status' and element.value: if "#" in element.value: await self.translations_handler(user.gameid) if element.key == 'steam_display' and element.value: if "#" in element.value: await self.translations_handler(user.gameid) user_info.rich_presence = rich_presence if user.HasField("game_name"): user_info.game_name = user.game_name await self.user_info_handler(user_id, user_info)