diff --git a/pyrogram/methods/messages/edit_inline_media.py b/pyrogram/methods/messages/edit_inline_media.py index 77fa673a..7ab424a4 100644 --- a/pyrogram/methods/messages/edit_inline_media.py +++ b/pyrogram/methods/messages/edit_inline_media.py @@ -16,11 +16,10 @@ # You should have received a copy of the GNU Lesser General Public License # along with Pyrogram. If not, see . -import os -import re -import io import asyncio import io +import os +import re import pyrogram from pyrogram import raw @@ -80,8 +79,6 @@ class EditInlineMedia: caption = media.caption parse_mode = media.parse_mode - is_photo = isinstance(media, types.InputMediaPhoto) - is_bytes_io = isinstance(media.media, io.BytesIO) is_uploaded_file = is_bytes_io or os.path.isfile(media.media) @@ -99,15 +96,16 @@ class EditInlineMedia: else: filename_attribute = [] - - if is_photo: + if isinstance(media, types.InputMediaPhoto): if is_uploaded_file: media = raw.types.InputMediaUploadedPhoto( - file=await self.save_file(media.media) + file=await self.save_file(media.media), + spoiler=media.has_spoiler ) elif is_external_url: media = raw.types.InputMediaPhotoExternal( - url=media.media + url=media.media, + spoiler=media.has_spoiler ) else: media = utils.get_input_media_from_file_id(media.media, FileType.PHOTO) @@ -117,18 +115,20 @@ class EditInlineMedia: mime_type=(None if is_bytes_io else self.guess_mime_type(media.media)) or "video/mp4", thumb=await self.save_file(media.thumb), file=await self.save_file(media.media), + spoiler=media.has_spoiler, attributes=[ - raw.types.DocumentAttributeVideo( - supports_streaming=media.supports_streaming or None, - duration=media.duration, - w=media.width, - h=media.height - ) - ] + filename_attribute + raw.types.DocumentAttributeVideo( + supports_streaming=media.supports_streaming or None, + duration=media.duration, + w=media.width, + h=media.height + ) + ] + filename_attribute ) elif is_external_url: media = raw.types.InputMediaDocumentExternal( - url=media.media + url=media.media, + spoiler=media.has_spoiler ) else: media = utils.get_input_media_from_file_id(media.media, FileType.VIDEO) @@ -139,12 +139,12 @@ class EditInlineMedia: thumb=await self.save_file(media.thumb), file=await self.save_file(media.media), attributes=[ - raw.types.DocumentAttributeAudio( - duration=media.duration, - performer=media.performer, - title=media.title - ) - ] + filename_attribute + raw.types.DocumentAttributeAudio( + duration=media.duration, + performer=media.performer, + title=media.title + ) + ] + filename_attribute ) elif is_external_url: media = raw.types.InputMediaDocumentExternal( @@ -158,20 +158,22 @@ class EditInlineMedia: mime_type=(None if is_bytes_io else self.guess_mime_type(media.media)) or "video/mp4", thumb=await self.save_file(media.thumb), file=await self.save_file(media.media), + spoiler=media.has_spoiler, attributes=[ - raw.types.DocumentAttributeVideo( - supports_streaming=True, - duration=media.duration, - w=media.width, - h=media.height - ), - raw.types.DocumentAttributeAnimated() - ] + filename_attribute, + raw.types.DocumentAttributeVideo( + supports_streaming=True, + duration=media.duration, + w=media.width, + h=media.height + ), + raw.types.DocumentAttributeAnimated() + ] + filename_attribute, nosound_video=True ) elif is_external_url: media = raw.types.InputMediaDocumentExternal( - url=media.media + url=media.media, + spoiler=media.has_spoiler ) else: media = utils.get_input_media_from_file_id(media.media, FileType.ANIMATION) @@ -196,7 +198,6 @@ class EditInlineMedia: session = await get_session(self, dc_id) - if is_uploaded_file: uploaded_media = await self.invoke( raw.functions.messages.UploadMedia( @@ -210,13 +211,15 @@ class EditInlineMedia: id=uploaded_media.photo.id, access_hash=uploaded_media.photo.access_hash, file_reference=uploaded_media.photo.file_reference - ) - ) if is_photo else raw.types.InputMediaDocument( + ), + spoiler=getattr(media, "has_spoiler", None) + ) if isinstance(media, types.InputMediaPhoto) else raw.types.InputMediaDocument( id=raw.types.InputDocument( id=uploaded_media.document.id, access_hash=uploaded_media.document.access_hash, - file_reference=uploaded_media.document.file_reference - ) + file_reference=uploaded_media.document.file_reference + ), + spoiler=getattr(media, "has_spoiler", None) ) else: actual_media = media diff --git a/pyrogram/methods/messages/edit_message_media.py b/pyrogram/methods/messages/edit_message_media.py index 16efb5b8..5a34f138 100644 --- a/pyrogram/methods/messages/edit_message_media.py +++ b/pyrogram/methods/messages/edit_message_media.py @@ -16,9 +16,9 @@ # You should have received a copy of the GNU Lesser General Public License # along with Pyrogram. If not, see . +import io import os import re -import io from typing import Union import pyrogram @@ -93,36 +93,40 @@ class EditMessageMedia: if isinstance(media, types.InputMediaPhoto): if isinstance(media.media, io.BytesIO) or os.path.isfile(media.media): - media = await self.invoke( + uploaded_media = await self.invoke( raw.functions.messages.UploadMedia( peer=await self.resolve_peer(chat_id), media=raw.types.InputMediaUploadedPhoto( - file=await self.save_file(media.media) + file=await self.save_file(media.media), + spoiler=media.has_spoiler ) ) ) media = raw.types.InputMediaPhoto( id=raw.types.InputPhoto( - id=media.photo.id, - access_hash=media.photo.access_hash, - file_reference=media.photo.file_reference - ) + id=uploaded_media.photo.id, + access_hash=uploaded_media.photo.access_hash, + file_reference=uploaded_media.photo.file_reference + ), + spoiler=media.has_spoiler ) elif re.match("^https?://", media.media): media = raw.types.InputMediaPhotoExternal( - url=media.media + url=media.media, + spoiler=media.has_spoiler ) else: media = utils.get_input_media_from_file_id(media.media, FileType.PHOTO) elif isinstance(media, types.InputMediaVideo): if isinstance(media.media, io.BytesIO) or os.path.isfile(media.media): - media = await self.invoke( + uploaded_media = await self.invoke( raw.functions.messages.UploadMedia( peer=await self.resolve_peer(chat_id), media=raw.types.InputMediaUploadedDocument( mime_type=self.guess_mime_type(media.media) or "video/mp4", thumb=await self.save_file(media.thumb), + spoiler=media.has_spoiler, file=await self.save_file(media.media), attributes=[ raw.types.DocumentAttributeVideo( @@ -141,14 +145,16 @@ class EditMessageMedia: media = raw.types.InputMediaDocument( id=raw.types.InputDocument( - id=media.document.id, - access_hash=media.document.access_hash, - file_reference=media.document.file_reference - ) + id=uploaded_media.document.id, + access_hash=uploaded_media.document.access_hash, + file_reference=uploaded_media.document.file_reference + ), + spoiler=media.has_spoiler ) elif re.match("^https?://", media.media): media = raw.types.InputMediaDocumentExternal( - url=media.media + url=media.media, + spoiler=media.has_spoiler ) else: media = utils.get_input_media_from_file_id(media.media, FileType.VIDEO) @@ -190,12 +196,13 @@ class EditMessageMedia: media = utils.get_input_media_from_file_id(media.media, FileType.AUDIO) elif isinstance(media, types.InputMediaAnimation): if isinstance(media.media, io.BytesIO) or os.path.isfile(media.media): - media = await self.invoke( + uploaded_media = await self.invoke( raw.functions.messages.UploadMedia( peer=await self.resolve_peer(chat_id), media=raw.types.InputMediaUploadedDocument( mime_type=self.guess_mime_type(media.media) or "video/mp4", thumb=await self.save_file(media.thumb), + spoiler=media.has_spoiler, file=await self.save_file(media.media), attributes=[ raw.types.DocumentAttributeVideo( @@ -215,14 +222,16 @@ class EditMessageMedia: media = raw.types.InputMediaDocument( id=raw.types.InputDocument( - id=media.document.id, - access_hash=media.document.access_hash, - file_reference=media.document.file_reference - ) + id=uploaded_media.document.id, + access_hash=uploaded_media.document.access_hash, + file_reference=uploaded_media.document.file_reference + ), + spoiler=media.has_spoiler ) elif re.match("^https?://", media.media): media = raw.types.InputMediaDocumentExternal( - url=media.media + url=media.media, + spoiler=media.has_spoiler ) else: media = utils.get_input_media_from_file_id(media.media, FileType.ANIMATION) diff --git a/pyrogram/methods/messages/send_media_group.py b/pyrogram/methods/messages/send_media_group.py index 0dfbbaa2..a8b905de 100644 --- a/pyrogram/methods/messages/send_media_group.py +++ b/pyrogram/methods/messages/send_media_group.py @@ -100,7 +100,8 @@ class SendMediaGroup: raw.functions.messages.UploadMedia( peer=await self.resolve_peer(chat_id), media=raw.types.InputMediaUploadedPhoto( - file=await self.save_file(i.media) + file=await self.save_file(i.media), + spoiler=i.has_spoiler ) ) ) @@ -110,14 +111,16 @@ class SendMediaGroup: id=media.photo.id, access_hash=media.photo.access_hash, file_reference=media.photo.file_reference - ) + ), + spoiler=i.has_spoiler ) elif re.match("^https?://", i.media): media = await self.invoke( raw.functions.messages.UploadMedia( peer=await self.resolve_peer(chat_id), media=raw.types.InputMediaPhotoExternal( - url=i.media + url=i.media, + spoiler=i.has_spoiler ) ) ) @@ -127,7 +130,8 @@ class SendMediaGroup: id=media.photo.id, access_hash=media.photo.access_hash, file_reference=media.photo.file_reference - ) + ), + spoiler=i.has_spoiler ) else: media = utils.get_input_media_from_file_id(i.media, FileType.PHOTO) @@ -136,7 +140,8 @@ class SendMediaGroup: raw.functions.messages.UploadMedia( peer=await self.resolve_peer(chat_id), media=raw.types.InputMediaUploadedPhoto( - file=await self.save_file(i.media) + file=await self.save_file(i.media), + spoiler=i.has_spoiler ) ) ) @@ -146,7 +151,8 @@ class SendMediaGroup: id=media.photo.id, access_hash=media.photo.access_hash, file_reference=media.photo.file_reference - ) + ), + spoiler=i.has_spoiler ) elif isinstance(i, types.InputMediaVideo): if isinstance(i.media, str): @@ -157,6 +163,7 @@ class SendMediaGroup: media=raw.types.InputMediaUploadedDocument( file=await self.save_file(i.media), thumb=await self.save_file(i.thumb), + spoiler=i.has_spoiler, mime_type=self.guess_mime_type(i.media) or "video/mp4", attributes=[ raw.types.DocumentAttributeVideo( @@ -176,14 +183,16 @@ class SendMediaGroup: id=media.document.id, access_hash=media.document.access_hash, file_reference=media.document.file_reference - ) + ), + spoiler=i.has_spoiler ) elif re.match("^https?://", i.media): media = await self.invoke( raw.functions.messages.UploadMedia( peer=await self.resolve_peer(chat_id), media=raw.types.InputMediaDocumentExternal( - url=i.media + url=i.media, + spoiler=i.has_spoiler ) ) ) @@ -193,7 +202,8 @@ class SendMediaGroup: id=media.document.id, access_hash=media.document.access_hash, file_reference=media.document.file_reference - ) + ), + spoiler=i.has_spoiler ) else: media = utils.get_input_media_from_file_id(i.media, FileType.VIDEO) @@ -204,6 +214,7 @@ class SendMediaGroup: media=raw.types.InputMediaUploadedDocument( file=await self.save_file(i.media), thumb=await self.save_file(i.thumb), + spoiler=i.has_spoiler, mime_type=self.guess_mime_type(getattr(i.media, "name", "video.mp4")) or "video/mp4", attributes=[ raw.types.DocumentAttributeVideo( @@ -223,7 +234,8 @@ class SendMediaGroup: id=media.document.id, access_hash=media.document.access_hash, file_reference=media.document.file_reference - ) + ), + spoiler=i.has_spoiler ) elif isinstance(i, types.InputMediaAudio): if isinstance(i.media, str):