Update Document file ids to make them compatible again with the Bot API

Telegram changed something server side on 29 July, 2019 starting
exactly at 04:00 AM UTC+1 (DST), logs say. Looks like Document file ids,
just like Photo-like ids, are going to change as well after all, if we
want to keep them compatible with the Bot API
This commit is contained in:
Dan 2019-08-02 01:15:01 +02:00
parent 67112a34e9
commit 64939e5289

View File

@ -21,9 +21,8 @@ import struct
from typing import List from typing import List
from typing import Union from typing import Union
from pyrogram.api.types import PeerUser, PeerChat, PeerChannel
import pyrogram import pyrogram
from pyrogram.api.types import PeerUser, PeerChat, PeerChannel
from . import BaseClient from . import BaseClient
from ...api import types from ...api import types
@ -32,10 +31,17 @@ def decode(s: str) -> bytes:
s = base64.urlsafe_b64decode(s + "=" * (-len(s) % 4)) s = base64.urlsafe_b64decode(s + "=" * (-len(s) % 4))
r = b"" r = b""
assert s[-1] == 2 try:
assert s[-1] == 2
skip = 1
except AssertionError:
assert s[-2] == 22
assert s[-1] == 4
skip = 2
i = 0 i = 0
while i < len(s) - 1:
while i < len(s) - skip:
if s[i] != 0: if s[i] != 0:
r += bytes([s[i]]) r += bytes([s[i]])
else: else:
@ -51,7 +57,7 @@ def encode(s: bytes) -> str:
r = b"" r = b""
n = 0 n = 0
for i in s + bytes([2]): for i in s + bytes([22]) + bytes([4]):
if i == 0: if i == 0:
n += 1 n += 1
else: else: