From bd9827d61776bca1d45636e7eda5c1b5de0005a0 Mon Sep 17 00:00:00 2001 From: Groosha Date: Tue, 18 May 2021 23:21:11 +0300 Subject: [PATCH] Better shifted_id method --- aiogram/types/chat.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/aiogram/types/chat.py b/aiogram/types/chat.py index c8185f72..bfeb82e5 100644 --- a/aiogram/types/chat.py +++ b/aiogram/types/chat.py @@ -60,5 +60,13 @@ class Chat(TelegramObject): """ Returns shifted chat ID (positive and without "-100" prefix). Mostly used for private links like t.me/c/chat_id/message_id + + Currently supergroup/channel IDs have 10-digit ID after "-100" prefix removed. + However, these IDs might become 11-digit in future. So, first we remove "-100" + prefix and count remaining number length. Then we multiple + -1 * 10 ^ (number_length + 2) + Finally, self.id is substracted from that number """ - return abs(self.id + 1_000_000_000_000) + short_id = str(self.id).replace("-100", "") + shift = int(-1 * pow(10, len(short_id)+2)) + return shift - self.id