From c088018afa2cd99aaccf7d9ec8de9648ff38a9e7 Mon Sep 17 00:00:00 2001 From: Dan <14043624+delivrance@users.noreply.github.com> Date: Sat, 24 Feb 2018 17:46:40 +0100 Subject: [PATCH] Move send_media_group method --- pyrogram/client/client.py | 196 +++++++++++++++++++------------------- 1 file changed, 98 insertions(+), 98 deletions(-) diff --git a/pyrogram/client/client.py b/pyrogram/client/client.py index e0bd1451..ccc615b5 100644 --- a/pyrogram/client/client.py +++ b/pyrogram/client/client.py @@ -1506,6 +1506,104 @@ class Client: else: return r + def send_media_group(self, + chat_id: int or str, + media: list, + disable_notification: bool = None, + reply_to_message_id: int = None): + """Use this method to send a group of photos or videos as an album. + On success, an Update containing the sent Messages is returned. + + Args: + chat_id (:obj:`int` | :obj:`str`): + Unique identifier for the target chat or username of the target channel/supergroup + (in the format @username). For your personal cloud storage (Saved Messages) you can + simply use "me" or "self". Phone numbers that exist in your Telegram address book are also supported. + + media (:obj:`list`): + A list containing either :obj:`pyrogram.InputMedia.Photo` or :obj:`pyrogram.InputMedia.Video` objects + describing photos and videos to be sent, must include 2–10 items. + + disable_notification (:obj:`bool`, optional): + Sends the message silently. + Users will receive a notification with no sound. + + reply_to_message_id (:obj:`int`, optional): + If the message is a reply, ID of the original message. + """ + multi_media = [] + + for i in media: + if isinstance(i, InputMedia.Photo): + style = self.html if i.parse_mode.lower() == "html" else self.markdown + media = self.save_file(i.media) + + media = self.send( + functions.messages.UploadMedia( + peer=self.resolve_peer(chat_id), + media=types.InputMediaUploadedPhoto( + file=media + ) + ) + ) + + single_media = types.InputSingleMedia( + media=types.InputMediaPhoto( + id=types.InputPhoto( + id=media.photo.id, + access_hash=media.photo.access_hash + ) + ), + random_id=self.rnd_id(), + **style.parse(i.caption) + ) + + multi_media.append(single_media) + elif isinstance(i, InputMedia.Video): + style = self.html if i.parse_mode.lower() == "html" else self.markdown + media = self.save_file(i.media) + + media = self.send( + functions.messages.UploadMedia( + peer=self.resolve_peer(chat_id), + media=types.InputMediaUploadedDocument( + file=media, + mime_type=mimetypes.types_map[".mp4"], + attributes=[ + types.DocumentAttributeVideo( + supports_streaming=i.supports_streaming, + duration=i.duration, + w=i.width, + h=i.height + ), + types.DocumentAttributeFilename(os.path.basename(i.media)) + ] + ) + ) + ) + + single_media = types.InputSingleMedia( + media=types.InputMediaDocument( + id=types.InputDocument( + id=media.document.id, + access_hash=media.document.access_hash + ) + ), + random_id=self.rnd_id(), + **style.parse(i.caption) + ) + + multi_media.append(single_media) + + return self.send( + functions.messages.SendMultiMedia( + peer=self.resolve_peer(chat_id), + multi_media=multi_media, + silent=disable_notification or None, + reply_to_msg_id=reply_to_message_id + ) + ) + def send_location(self, chat_id: int or str, latitude: float, @@ -2341,104 +2439,6 @@ class Client: else: return False - def send_media_group(self, - chat_id: int or str, - media: list, - disable_notification: bool = None, - reply_to_message_id: int = None): - """Use this method to send a group of photos or videos as an album. - On success, an Update containing the sent Messages is returned. - - Args: - chat_id (:obj:`int` | :obj:`str`): - Unique identifier for the target chat or username of the target channel/supergroup - (in the format @username). For your personal cloud storage (Saved Messages) you can - simply use "me" or "self". Phone numbers that exist in your Telegram address book are also supported. - - media (:obj:`list`): - A list containing either :obj:`pyrogram.InputMedia.Photo` or :obj:`pyrogram.InputMedia.Video` objects - describing photos and videos to be sent, must include 2–10 items. - - disable_notification (:obj:`bool`, optional): - Sends the message silently. - Users will receive a notification with no sound. - - reply_to_message_id (:obj:`int`, optional): - If the message is a reply, ID of the original message. - """ - multi_media = [] - - for i in media: - if isinstance(i, InputMedia.Photo): - style = self.html if i.parse_mode.lower() == "html" else self.markdown - media = self.save_file(i.media) - - media = self.send( - functions.messages.UploadMedia( - peer=self.resolve_peer(chat_id), - media=types.InputMediaUploadedPhoto( - file=media - ) - ) - ) - - single_media = types.InputSingleMedia( - media=types.InputMediaPhoto( - id=types.InputPhoto( - id=media.photo.id, - access_hash=media.photo.access_hash - ) - ), - random_id=self.rnd_id(), - **style.parse(i.caption) - ) - - multi_media.append(single_media) - elif isinstance(i, InputMedia.Video): - style = self.html if i.parse_mode.lower() == "html" else self.markdown - media = self.save_file(i.media) - - media = self.send( - functions.messages.UploadMedia( - peer=self.resolve_peer(chat_id), - media=types.InputMediaUploadedDocument( - file=media, - mime_type=mimetypes.types_map[".mp4"], - attributes=[ - types.DocumentAttributeVideo( - supports_streaming=i.supports_streaming, - duration=i.duration, - w=i.width, - h=i.height - ), - types.DocumentAttributeFilename(os.path.basename(i.media)) - ] - ) - ) - ) - - single_media = types.InputSingleMedia( - media=types.InputMediaDocument( - id=types.InputDocument( - id=media.document.id, - access_hash=media.document.access_hash - ) - ), - random_id=self.rnd_id(), - **style.parse(i.caption) - ) - - multi_media.append(single_media) - - return self.send( - functions.messages.SendMultiMedia( - peer=self.resolve_peer(chat_id), - multi_media=multi_media, - silent=disable_notification or None, - reply_to_msg_id=reply_to_message_id - ) - ) - def download_media(self, message: types.Message, file_name: str = None,