@@ -292,60 +292,61 @@ def unpack_inline_message_id(inline_message_id: str) -> "raw.base.InputBotInline
292292 access_hash = unpacked [3 ]
293293 )
294294
295+ ZERO_SECRET_CHAT_ID = - 2000000000000
296+ ZERO_CHANNEL_ID = - 1000000000000
295297
296- MIN_CHANNEL_ID = - 100999999999999
297- MAX_CHANNEL_ID = - 1000000000000
298- MIN_MONOFORUM_CHANNEL_ID = 1070000000000
299- MAX_MONOFORUM_CHANNEL_ID = 107999999999999
300- MIN_CHAT_ID = - 999999999999
301- MAX_USER_ID = 999999999999
298+ MAX_CHANNEL_ID = 1000000000000 - (1 << 31 )
299+ MIN_MONOFORUM_CHANNEL_ID = 1000000000000 + (1 << 31 ) + 1
300+ MAX_MONOFORUM_CHANNEL_ID = 3000000000000
301+ MAX_USER_ID = (1 << 40 ) - 1
302+ MAX_CHAT_ID = 999999999999
302303
303304
304305def get_raw_peer_id (peer : Union [raw .base .Peer , raw .base .InputPeer , raw .base .RequestedPeer ]) -> Optional [int ]:
305306 """Get the raw peer id from a Peer object"""
306- if isinstance (peer , ( raw . types . PeerUser , raw . types . InputPeerUser , raw . types . RequestedPeerUser ) ):
307+ if hasattr (peer , "user_id" ):
307308 return peer .user_id
308309
309- if isinstance (peer , ( raw . types . PeerChat , raw . types . InputPeerChat , raw . types . RequestedPeerChat ) ):
310+ if hasattr (peer , "chat_id" ):
310311 return peer .chat_id
311312
312- if isinstance (peer , ( raw . types . PeerChannel , raw . types . InputPeerChannel , raw . types . RequestedPeerChannel ) ):
313+ if hasattr (peer , "channel_id" ):
313314 return peer .channel_id
314315
315- return None
316+ raise ValueError ( f"Peer type invalid: { peer } " )
316317
317318
318319def get_peer_id (peer : Union [raw .base .Peer , raw .base .InputPeer , raw .base .RequestedPeer ]) -> int :
319320 """Get the non-raw peer id from a Peer object"""
320- if isinstance (peer , ( raw . types . PeerUser , raw . types . InputPeerUser , raw . types . RequestedPeerUser ) ):
321+ if hasattr (peer , "user_id" ):
321322 return peer .user_id
322323
323- if isinstance (peer , ( raw . types . PeerChat , raw . types . InputPeerChat , raw . types . RequestedPeerChat ) ):
324+ if hasattr (peer , "chat_id" ):
324325 return - peer .chat_id
325326
326- if isinstance (peer , (raw .types .PeerChannel , raw .types .InputPeerChannel , raw .types .RequestedPeerChannel )):
327- if MIN_MONOFORUM_CHANNEL_ID <= peer .channel_id < MAX_MONOFORUM_CHANNEL_ID :
328- return peer .channel_id
329-
330- return MAX_CHANNEL_ID - peer .channel_id
327+ if hasattr (peer , "channel_id" ):
328+ return ZERO_CHANNEL_ID - peer .channel_id
331329
332330 raise ValueError (f"Peer type invalid: { peer } " )
333331
334332
335333def get_peer_type (peer_id : int ) -> str :
336334 if peer_id < 0 :
337- if MIN_CHAT_ID <= peer_id :
335+ if - MAX_CHAT_ID <= peer_id :
338336 return "chat"
339337
340- if MIN_CHANNEL_ID <= peer_id < MAX_CHANNEL_ID :
338+ if ZERO_CHANNEL_ID - MAX_CHANNEL_ID <= peer_id and peer_id != ZERO_CHANNEL_ID :
341339 return "channel"
342340
341+ if ZERO_SECRET_CHAT_ID + (- 1 << 31 ) <= peer_id and peer_id != ZERO_SECRET_CHAT_ID :
342+ return "secret_chat"
343+
344+ if ZERO_CHANNEL_ID - MAX_MONOFORUM_CHANNEL_ID <= peer_id :
345+ return "monoforum"
346+
343347 elif 0 < peer_id <= MAX_USER_ID :
344348 return "user"
345349
346- elif MIN_MONOFORUM_CHANNEL_ID <= peer_id < MAX_MONOFORUM_CHANNEL_ID :
347- return "monoforum"
348-
349350 raise ValueError (f"Peer id invalid: { peer_id } " )
350351
351352
@@ -388,7 +389,6 @@ async def get_reply_to(
388389 todo_item_id = reply_parameters .checklist_task_id
389390 )
390391
391-
392392 if message_thread_id :
393393 return raw .types .InputReplyToMessage (
394394 reply_to_msg_id = message_thread_id
@@ -403,10 +403,7 @@ async def get_reply_to(
403403
404404
405405def get_channel_id (peer_id : int ) -> int :
406- if MIN_MONOFORUM_CHANNEL_ID <= peer_id < MAX_MONOFORUM_CHANNEL_ID :
407- return peer_id
408-
409- return MAX_CHANNEL_ID - peer_id
406+ return ZERO_CHANNEL_ID - peer_id
410407
411408
412409def btoi (b : bytes ) -> int :
0 commit comments