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
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]
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)
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