Exemple #1
0
    def get_out_peer(
            self, peer: Peer or peers_pb2.Peer) -> peers_pb2.OutPeer or None:
        """Returns OutPeer for given Peer.

        :param peer: Peer
        :return: OutPeer
        """
        if isinstance(peer, Peer):
            peer = peer.to_api()
        if not isinstance(peer, peers_pb2.Peer):
            raise RuntimeError(
                "Invalid input data. Expects {}, got {}.".format(
                    Peer.__class__, type(peer)))
        result = self.peer_to_out_peer.get((peer.type, peer.id))
        if result is None:
            req = messaging_pb2.RequestLoadDialogs(
                min_date=0,
                limit=1,
                peers_to_load=[peer],
            )
            result = self.internal.messaging.LoadDialogs(req)
            for user in result.user_peers:
                self.__adopt_peer(user)
            for group in result.group_peers:
                self.__adopt_peer(group)
            return self.peer_to_out_peer.get((peer.type, peer.id))
        return result
Exemple #2
0
 def get_user_bot_groups(self, uid):
     request = messaging_pb2.RequestLoadDialogs(
         min_date=0,
         limit=100000,
     )
     result = self.bot.internal.messaging.LoadDialogs(request)
     response = self.bot.internal.updates.GetReferencedEntitites(
         sequence_and_updates_pb2.RequestGetReferencedEntitites(
             groups=list(result.group_peers)
         )
     ).groups
     return [x for x in response if x.self_member.uid != 0]
Exemple #3
0
    def get_user_outpeer_by_id(self, uid):
        req = messaging_pb2.RequestLoadDialogs(
            min_date=0,
            limit=1,
            peers_to_load=[
                peers_pb2.Peer(type=peers_pb2.PEERTYPE_PRIVATE, id=uid)
            ])
        result = self.internal.messaging.LoadDialogs(req)

        for outpeer in result.user_peers:
            if outpeer.uid == uid:
                return peers_pb2.OutPeer(type=peers_pb2.PEERTYPE_PRIVATE,
                                         id=outpeer.uid,
                                         access_hash=outpeer.access_hash)
Exemple #4
0
    def get_user_by_id(self, uid):
        req = messaging_pb2.RequestLoadDialogs(
            min_date=0,
            limit=1,
            peers_to_load=[
                peers_pb2.Peer(type=peers_pb2.PEERTYPE_PRIVATE, id=uid)
            ])
        result = self.internal.messaging.LoadDialogs(req)
        users_list = self.internal.updates.GetReferencedEntitites(
            sequence_and_updates_pb2.RequestGetReferencedEntitites(
                users=list(result.user_peers)))

        for user in users_list.users:
            if hasattr(user, "id") and user.id == uid:
                return user
        return None
    def get_outpeer(self, peer):
        """Returns outpeer for given peer.

        :param peer: Peer object
        :return: OutPeer object
        """
        peer_hash = peer_hasher(peer)
        result = self.peers_to_outpeers.get(peer_hash)
        if result is None:
            req = messaging_pb2.RequestLoadDialogs(
                min_date=0,
                limit=1,
                peers_to_load=[peer],
                optimizations=DEFAULT_OPTIMIZATIONS)
            result = self.internal.messaging.LoadDialogs(req)
            for user in result.user_peers:
                self.adopt_peer(user)
            for group in result.group_peers:
                self.adopt_peer(group)
            return self.peers_to_outpeers.get(peer_hash)
        return result
 def get_groups(self):
     contacts = self.bot.internal.messaging.LoadDialogs(
         messaging_pb2.RequestLoadDialogs()).group_peers
     return self.bot.internal.updates.GetReferencedEntitites(
         sequence_and_updates_pb2.RequestGetReferencedEntitites(
             groups=contacts)).groups