From f55062bc6d76c984bf0fa7cda993b264f2756e7e Mon Sep 17 00:00:00 2001 From: Dan <14043624+delivrance@users.noreply.github.com> Date: Thu, 8 Mar 2018 12:28:38 +0100 Subject: [PATCH] Add support for Bot API style basic group IDs (with minus sign) Closes #32 --- pyrogram/client/client.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/pyrogram/client/client.py b/pyrogram/client/client.py index b77644b4..5a834ee7 100644 --- a/pyrogram/client/client.py +++ b/pyrogram/client/client.py @@ -256,15 +256,16 @@ class Client: if isinstance(entity, Chat): chat_id = entity.id + peer_id = -chat_id - if chat_id in self.peers_by_id: + if peer_id in self.peers_by_id: continue input_peer = InputPeerChat( chat_id=chat_id ) - self.peers_by_id[chat_id] = input_peer + self.peers_by_id[peer_id] = input_peer if isinstance(entity, Channel): channel_id = entity.id @@ -886,17 +887,20 @@ class Client: if isinstance(peer_id, types.PeerUser): peer_id = peer_id.user_id elif isinstance(peer_id, types.PeerChat): - peer_id = peer_id.chat_id + peer_id = -peer_id.chat_id elif isinstance(peer_id, types.PeerChannel): peer_id = int("-100" + str(peer_id.channel_id)) - try: + try: # User return self.peers_by_id[peer_id] except KeyError: - try: - return self.peers_by_id[int("-100" + str(peer_id))] + try: # Chat + return self.peers_by_id[-peer_id] except KeyError: - raise PeerIdInvalid + try: # Channel + return self.peers_by_id[int("-100" + str(peer_id))] + except (KeyError, ValueError): + raise PeerIdInvalid def get_me(self): """A simple method for testing the user authorization. Requires no parameters.