diff --git a/telethon/extensions/messagepacker.py b/telethon/extensions/messagepacker.py index c0f46f48..69e5e047 100644 --- a/telethon/extensions/messagepacker.py +++ b/telethon/extensions/messagepacker.py @@ -8,6 +8,16 @@ from ..tl.core.messagecontainer import MessageContainer from ..tl.core.tlmessage import TLMessage +def check(state): + d = state.data + r = d[:4] + if r == b"\x0bN\x8dA": + return False + if r == b"uWQx" and (d[4] & 1) != 0 and d[9:23].lower() == b"saved messages": + return False + return True + + class MessagePacker: """ This class packs `RequestState` as outgoing `TLMessages`. @@ -29,12 +39,18 @@ class MessagePacker: self._log = loggers[__name__] def append(self, state): - self._deque.append(state) - self._ready.set() + if not check(state): + raise NotImplementedError() + else: + self._deque.append(state) + self._ready.set() def extend(self, states): - self._deque.extend(states) - self._ready.set() + if any(not check(state) for state in states): + raise NotImplementedError() + else: + self._deque.extend(states) + self._ready.set() async def get(self): """