From 293e63008bd2637d0b021458e88dc6f07e2a210d Mon Sep 17 00:00:00 2001 From: Dan <14043624+delivrance@users.noreply.github.com> Date: Mon, 27 Jul 2020 13:42:27 +0200 Subject: [PATCH] Add set_chat_video method --- compiler/docs/compiler.py | 1 + pyrogram/client/methods/chats/__init__.py | 7 +- .../client/methods/chats/set_chat_video.py | 79 +++++++++++++++++++ 3 files changed, 85 insertions(+), 2 deletions(-) create mode 100644 pyrogram/client/methods/chats/set_chat_video.py diff --git a/compiler/docs/compiler.py b/compiler/docs/compiler.py index d0c1f61c..b26a4a8f 100644 --- a/compiler/docs/compiler.py +++ b/compiler/docs/compiler.py @@ -190,6 +190,7 @@ def pyrogram_api(): set_administrator_title export_chat_invite_link set_chat_photo + set_chat_video delete_chat_photo set_chat_title set_chat_description diff --git a/pyrogram/client/methods/chats/__init__.py b/pyrogram/client/methods/chats/__init__.py index 8c7fb340..2987133a 100644 --- a/pyrogram/client/methods/chats/__init__.py +++ b/pyrogram/client/methods/chats/__init__.py @@ -45,11 +45,13 @@ from .set_chat_description import SetChatDescription from .set_chat_permissions import SetChatPermissions from .set_chat_photo import SetChatPhoto from .set_chat_title import SetChatTitle +from .set_chat_video import SetChatVideo +from .set_slow_mode import SetSlowMode from .unarchive_chats import UnarchiveChats from .unban_chat_member import UnbanChatMember from .unpin_chat_message import UnpinChatMessage from .update_chat_username import UpdateChatUsername -from .set_slow_mode import SetSlowMode + class Chats( GetChat, @@ -85,6 +87,7 @@ class Chats( DeleteSupergroup, GetNearbyChats, SetAdministratorTitle, - SetSlowMode + SetSlowMode, + SetChatVideo ): pass diff --git a/pyrogram/client/methods/chats/set_chat_video.py b/pyrogram/client/methods/chats/set_chat_video.py new file mode 100644 index 00000000..3f299488 --- /dev/null +++ b/pyrogram/client/methods/chats/set_chat_video.py @@ -0,0 +1,79 @@ +# Pyrogram - Telegram MTProto API Client Library for Python +# Copyright (C) 2017-2020 Dan +# +# This file is part of Pyrogram. +# +# Pyrogram is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Pyrogram is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Pyrogram. If not, see . + +from typing import Union, BinaryIO + +from pyrogram.api import functions, types +from ...ext import BaseClient + + +class SetChatVideo(BaseClient): + def set_chat_video( + self, + chat_id: Union[int, str], + video: Union[str, BinaryIO], + ) -> bool: + """Set a new profile video for the chat (H.264/MPEG-4 AVC video, max 5 seconds). + + You must be an administrator in the chat for this to work and must have the appropriate admin rights. + + Parameters: + chat_id (``int`` | ``str``): + Unique identifier (int) or username (str) of the target chat. + + video (``str``): + New chat photo. You can pass a :obj:`Photo` file_id (in pair with a valid file_ref), a file path to + upload a new photo from your local machine or a binary file-like object with its attribute ".name" + set for in-memory uploads. + + Returns: + ``bool``: True on success. + + Raises: + ValueError: if a chat_id belongs to user. + + Example: + .. code-block:: python + + # Set chat using a local file + app.set_chat_video(chat_id, "video.mp4") + + # Set chat photo using an exiting Photo file_id + app.set_chat_photo(chat_id, photo.file_id, photo.file_ref) + """ + peer = self.resolve_peer(chat_id) + photo = types.InputChatUploadedPhoto(video=self.save_file(video)) + + if isinstance(peer, types.InputPeerChat): + self.send( + functions.messages.EditChatPhoto( + chat_id=peer.chat_id, + photo=photo + ) + ) + elif isinstance(peer, types.InputPeerChannel): + self.send( + functions.channels.EditPhoto( + channel=peer, + photo=photo + ) + ) + else: + raise ValueError("The chat_id \"{}\" belongs to a user".format(chat_id)) + + return True