From 1ded6d9d06b30f059df62a5fa9d13e7d8ba35ccb Mon Sep 17 00:00:00 2001 From: Lonami Exo Date: Sun, 1 Oct 2017 16:30:27 +0200 Subject: [PATCH] Expand Updates into Update objects before calling handlers --- telethon/update_state.py | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/telethon/update_state.py b/telethon/update_state.py index fa1963a3..477955df 100644 --- a/telethon/update_state.py +++ b/telethon/update_state.py @@ -141,5 +141,29 @@ class UpdateState: return # We already handled this update self._state.pts = pts - self._updates.append(update) - self._updates_available.set() + + if type(update).SUBCLASS_OF_ID == 0x8af52aac: # crc32(b'Updates') + # Expand "Updates" into "Update", and pass these to callbacks. + # Since .users and .chats have already been processed, we + # don't need to care about those either. + if isinstance(update, tl.UpdateShort): + self._updates.append(update.update) + self._updates_available.set() + + elif isinstance(update, tl.Updates) or \ + isinstance(update, tl.UpdatesCombined): + self._updates.extend(update.updates) + self._updates_available.set() + + elif not isinstance(update, tl.UpdatesTooLong): + # TODO Handle "Updates too long" + self._updates.append(update) + self._updates_available.set() + + elif type(update).SUBCLASS_OF_ID == 0x9f89304e: # crc32(b'Update') + self._updates.append(update) + self._updates_available.set() + else: + self._logger.debug('Ignoring "update" of type {}'.format( + type(update).__name__) + )