diff --git a/readthedocs/misc/v2-migration-guide.rst b/readthedocs/misc/v2-migration-guide.rst index 669ed8a8..dc751b1a 100644 --- a/readthedocs/misc/v2-migration-guide.rst +++ b/readthedocs/misc/v2-migration-guide.rst @@ -771,3 +771,5 @@ sequential_updates is gone connection type is gone raise_last_call_error is now the default rather than ValueError + +self-produced updates like getmessage now also trigger a handler diff --git a/telethon/_network/mtprotosender.py b/telethon/_network/mtprotosender.py index fa58240f..177813cd 100644 --- a/telethon/_network/mtprotosender.py +++ b/telethon/_network/mtprotosender.py @@ -603,6 +603,7 @@ class MTProtoSender: if not state.future.cancelled(): state.future.set_exception(e) else: + self._store_own_updates(result) if not state.future.cancelled(): state.future.set_result(result) @@ -646,6 +647,20 @@ class MTProtoSender: ) self._last_update_warn = now + def _store_own_updates(self, obj, *, _update_ids=frozenset(( + _tl.UpdateShortMessage.CONSTRUCTOR_ID, + _tl.UpdateShortChatMessage.CONSTRUCTOR_ID, + _tl.UpdateShort.CONSTRUCTOR_ID, + _tl.UpdatesCombined.CONSTRUCTOR_ID, + _tl.Updates.CONSTRUCTOR_ID, + _tl.UpdateShortSentMessage.CONSTRUCTOR_ID, + ))): + try: + if obj.CONSTRUCTOR_ID in _update_ids: + self._updates_queue.put_nowait(obj) + except AttributeError: + pass + async def _handle_pong(self, message): """ Handles pong results, which don't come inside a ``rpc_result``