Skip to content

Commit 607b731

Browse files
Make get_raw_peer_id work with int objects
1 parent efc536a commit 607b731

1 file changed

Lines changed: 23 additions & 8 deletions

File tree

pyrogram/utils.py

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -302,16 +302,31 @@ def unpack_inline_message_id(inline_message_id: str) -> "raw.base.InputBotInline
302302
MAX_CHAT_ID = 999999999999
303303

304304

305-
def get_raw_peer_id(peer: Union[raw.base.Peer, raw.base.InputPeer, raw.base.RequestedPeer]) -> Optional[int]:
306-
"""Get the raw peer id from a Peer object"""
307-
if hasattr(peer, "user_id"):
308-
return peer.user_id
305+
def get_raw_peer_id(peer: Union[int, raw.base.Peer, raw.base.InputPeer, raw.base.RequestedPeer]) -> Optional[int]:
306+
"""Get the raw peer id from a Peer object or high-lvl id"""
309307

310-
if hasattr(peer, "chat_id"):
311-
return peer.chat_id
308+
if isinstance(peer, int):
309+
if peer < 0:
310+
if -MAX_CHAT_ID <= peer:
311+
return -peer
312312

313-
if hasattr(peer, "channel_id"):
314-
return peer.channel_id
313+
if ZERO_CHANNEL_ID - MAX_CHANNEL_ID <= peer and peer != ZERO_CHANNEL_ID:
314+
return ZERO_CHANNEL_ID - peer
315+
316+
if ZERO_CHANNEL_ID - MAX_MONOFORUM_CHANNEL_ID <= peer:
317+
return ZERO_CHANNEL_ID - peer
318+
319+
elif 0 < peer <= MAX_USER_ID:
320+
return peer
321+
else:
322+
if hasattr(peer, "user_id"):
323+
return peer.user_id
324+
325+
if hasattr(peer, "chat_id"):
326+
return peer.chat_id
327+
328+
if hasattr(peer, "channel_id"):
329+
return peer.channel_id
315330

316331
return None
317332

0 commit comments

Comments
 (0)