diff --git a/telethon/client/messageparse.py b/telethon/client/messageparse.py index 5f3c95c9..d7e6423e 100644 --- a/telethon/client/messageparse.py +++ b/telethon/client/messageparse.py @@ -164,7 +164,7 @@ class MessageParseMethods: mapping = sched_to_message opposite = id_to_message # scheduled may be treated as normal, though - random_id = request if isinstance(request, int) else request.random_id + random_id = request if isinstance(request, (int, list)) else request.random_id if not utils.is_list_like(random_id): msg = mapping.get(random_to_id.get(random_id)) if not msg: diff --git a/telethon/client/uploads.py b/telethon/client/uploads.py index accda7f9..ad181261 100644 --- a/telethon/client/uploads.py +++ b/telethon/client/uploads.py @@ -395,25 +395,18 @@ class UploadMethods: fm, message=caption, entities=msg_entities + # random_id is autogenerated )) # Now we can construct the multi-media request - result = await self(functions.messages.SendMultiMediaRequest( + request = functions.messages.SendMultiMediaRequest( entity, reply_to_msg_id=reply_to, multi_media=media, silent=silent, schedule_date=schedule - )) + ) + result = await self(request) - # We never sent a `random_id` for the messages that resulted from - # the request so we can't pair them up with the `Updates` that we - # get from Telegram. However, the sent messages have a photo and - # the photo IDs match with those we did send. - # - # Updates -> {_: message} - messages = self._get_response_message(None, result, entity) - # {_: message} -> {photo ID: message} - messages = {m.photo.id: m for m in messages.values()} - # Sent photo IDs -> messages - return [messages[m.media.id.id] for m in media] + random_ids = [m.random_id for m in media] + return self._get_response_message(random_ids, result, entity) async def upload_file( self: 'TelegramClient',