diff --git a/pyrogram/client/utils.py b/pyrogram/client/utils.py index db755822..fa5ff41a 100644 --- a/pyrogram/client/utils.py +++ b/pyrogram/client/utils.py @@ -1,3 +1,5 @@ +from base64 import b64encode, b64decode + import pyrogram from pyrogram.api import types @@ -163,3 +165,39 @@ def parse_message_service(message: types.MessageService, users: dict, chats: dic migrate_from_chat_id=migrate_from_chat_id, group_chat_created=group_chat_created ) + + +def decode(s): + s = b64decode(s + "=" * (-len(s) % 4), "-_") + r = b"" + + assert s[-1] == 2 + + i = 0 + while i < len(s) - 1: + if s[i] != 0: + r += bytes([s[i]]) + else: + r += b"\x00" * s[i + 1] + i += 1 + + i += 1 + + return r + + +def encode(s): + r = b"" + n = 0 + + for i in s + bytes([2]): + if i == 0: + n += 1 + else: + if n: + r += b"\x00" + bytes([n]) + n = 0 + + r += bytes([i]) + + return b64encode(r, b"-_").decode().rstrip("=")