def fetchAllUsersFromThreads(self, threads):
        """
        Get all users involved in threads.

        :param threads: models.Thread: List of threads to check for users
        :return: :class:`models.User` objects
        :rtype: list
        :raises: FBchatException if request failed
        """
        users = []
        users_to_fetch = []  # It's more efficient to fetch all users in one request
        for thread in threads:
            if thread.type == ThreadType.USER:
                if thread.uid not in [user.uid for user in users]:
                    users.append(thread)
            elif thread.type == ThreadType.GROUP:
                for user_id in thread.participants:
                    if (
                        user_id not in [user.uid for user in users]
                        and user_id not in users_to_fetch
                    ):
                        users_to_fetch.append(user_id)
        for user_id, user in self.fetchUserInfo(*users_to_fetch).items():
            users.append(user)
        return users
def fetchAllUsersFromThreads ( self , threads ) : users = [ ] users_to_fetch = [ ] for thread in threads : if thread . type == ThreadType . USER : if thread . uid not in [ user . uid for user in users ] : users . append ( thread ) elif thread . type == ThreadType . GROUP : for user_id in thread . participants : if ( user_id not in [ user . uid for user in users ] and user_id not in users_to_fetch ) : users_to_fetch . append ( user_id ) for user_id , user in self . fetchUserInfo ( * users_to_fetch ) . items ( ) : users . append ( user ) return users
Get all users involved in threads.

        :param threads: models.Thread: List of threads to check for users
        :return: :class:`models.User` objects
        :rtype: list
        :raises: FBchatException if request failed