From 7d4424ac2bc201a626575d753b2af85e0b80e33f Mon Sep 17 00:00:00 2001 From: Lonami Exo Date: Wed, 14 Sep 2022 16:53:56 +0200 Subject: [PATCH] Make use of AlbumHack for all albums Closes #3916. The new MessageBox system is not designed with "albums come in the same updates container" in mind (in fact, there was a note about this). This version was also not intended to be published to PyPi, but it is, so a workaround must be made for events.Album to remain working. In essence, AlbumHack will always be used even if it technically did not need to be used previously. This will cause a small delay for those updates, but it should not be a major issue. --- telethon/client/updates.py | 1 + telethon/events/album.py | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/telethon/client/updates.py b/telethon/client/updates.py index 538469f0..17b93db1 100644 --- a/telethon/client/updates.py +++ b/telethon/client/updates.py @@ -260,6 +260,7 @@ class UpdateMethods: await self._dispatch_update(updates_to_dispatch.popleft()) else: while updates_to_dispatch: + # TODO if _dispatch_update fails for whatever reason, it's not logged! this should be fixed task = self.loop.create_task(self._dispatch_update(updates_to_dispatch.popleft())) self._event_handler_tasks.add(task) task.add_done_callback(lambda _: self._event_handler_tasks.discard(task)) diff --git a/telethon/events/album.py b/telethon/events/album.py index 6e3ce1b3..01b2bbf4 100644 --- a/telethon/events/album.py +++ b/telethon/events/album.py @@ -97,8 +97,10 @@ class Album(EventBuilder): @classmethod def build(cls, update, others=None, self_id=None): - if not others: - return # We only care about albums which come inside the same Updates + # TODO normally we'd only check updates if they come with other updates + # but MessageBox is not designed for this so others will always be None. + # In essence we always rely on AlbumHack rather than returning early if not others. + others = [update] if isinstance(update, (types.UpdateNewMessage, types.UpdateNewChannelMessage)):