Remove set_chat/profile_video

This commit is contained in:
Dan 2020-07-27 15:03:23 +02:00
parent d5fc21e6f4
commit b745ce95ed
7 changed files with 56 additions and 159 deletions

View File

@ -190,7 +190,6 @@ def pyrogram_api():
set_administrator_title set_administrator_title
export_chat_invite_link export_chat_invite_link
set_chat_photo set_chat_photo
set_chat_video
delete_chat_photo delete_chat_photo
set_chat_title set_chat_title
set_chat_description set_chat_description
@ -226,7 +225,6 @@ def pyrogram_api():
get_profile_photos_count get_profile_photos_count
iter_profile_photos iter_profile_photos
set_profile_photo set_profile_photo
set_profile_video
delete_profile_photos delete_profile_photos
update_username update_username
update_profile update_profile

View File

@ -45,7 +45,6 @@ from .set_chat_description import SetChatDescription
from .set_chat_permissions import SetChatPermissions from .set_chat_permissions import SetChatPermissions
from .set_chat_photo import SetChatPhoto from .set_chat_photo import SetChatPhoto
from .set_chat_title import SetChatTitle from .set_chat_title import SetChatTitle
from .set_chat_video import SetChatVideo
from .set_slow_mode import SetSlowMode from .set_slow_mode import SetSlowMode
from .unarchive_chats import UnarchiveChats from .unarchive_chats import UnarchiveChats
from .unban_chat_member import UnbanChatMember from .unban_chat_member import UnbanChatMember
@ -87,7 +86,6 @@ class Chats(
DeleteSupergroup, DeleteSupergroup,
GetNearbyChats, GetNearbyChats,
SetAdministratorTitle, SetAdministratorTitle,
SetSlowMode, SetSlowMode
SetChatVideo
): ):
pass pass

View File

@ -27,10 +27,15 @@ class SetChatPhoto(BaseClient):
def set_chat_photo( def set_chat_photo(
self, self,
chat_id: Union[int, str], chat_id: Union[int, str],
photo: Union[str, BinaryIO], *,
photo: Union[str, BinaryIO] = None,
video: Union[str, BinaryIO] = None,
file_ref: str = None file_ref: str = None
) -> bool: ) -> bool:
"""Set a new profile photo for the chat. """Set a new chat photo or video (H.264/MPEG-4 AVC video, max 5 seconds).
The ``photo`` and ``video`` arguments are mutually exclusive.
Pass either one as named argument (see examples below).
You must be an administrator in the chat for this to work and must have the appropriate admin rights. You must be an administrator in the chat for this to work and must have the appropriate admin rights.
@ -38,11 +43,16 @@ class SetChatPhoto(BaseClient):
chat_id (``int`` | ``str``): chat_id (``int`` | ``str``):
Unique identifier (int) or username (str) of the target chat. Unique identifier (int) or username (str) of the target chat.
photo (``str``): photo (``str`` | ``BinaryIO``, *optional*):
New chat photo. You can pass a :obj:`Photo` file_id (in pair with a valid file_ref), a file path to 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" upload a new photo from your local machine or a binary file-like object with its attribute ".name"
set for in-memory uploads. set for in-memory uploads.
video (``str`` | ``BinaryIO``, *optional*):
New chat video. You can pass a :obj:`Video` file_id (in pair with a valid file_ref), a file path to
upload a new video from your local machine or a binary file-like object with its attribute ".name"
set for in-memory uploads.
file_ref (``str``, *optional*): file_ref (``str``, *optional*):
A valid file reference obtained by a recently fetched media message. A valid file reference obtained by a recently fetched media message.
To be used in combination with a file_id in case a file reference is needed. To be used in combination with a file_id in case a file reference is needed.
@ -57,21 +67,34 @@ class SetChatPhoto(BaseClient):
.. code-block:: python .. code-block:: python
# Set chat photo using a local file # Set chat photo using a local file
app.set_chat_photo(chat_id, "photo.jpg") app.set_chat_photo(chat_id, photo="photo.jpg")
# Set chat photo using an exiting Photo file_id # Set chat photo using an exiting Photo file_id
app.set_chat_photo(chat_id, photo.file_id, photo.file_ref) app.set_chat_photo(chat_id, photo=photo.file_id, file_ref=photo.file_ref)
# Set chat video using a local file
app.set_chat_photo(chat_id, video="video.mp4")
# Set chat photo using an exiting Video file_id
app.set_chat_photo(chat_id, video=video.file_id, file_ref=video.file_ref)
""" """
peer = self.resolve_peer(chat_id) peer = self.resolve_peer(chat_id)
if isinstance(photo, str): if isinstance(photo, str):
if os.path.isfile(photo): if os.path.isfile(photo):
photo = types.InputChatUploadedPhoto(file=self.save_file(photo)) photo = types.InputChatUploadedPhoto(
file=self.save_file(photo),
video=self.save_file(video)
)
else: else:
photo = utils.get_input_media_from_file_id(photo, file_ref, 2) photo = utils.get_input_media_from_file_id(photo, file_ref, 2)
photo = types.InputChatPhoto(id=photo.id) photo = types.InputChatPhoto(id=photo.id)
else: else:
photo = types.InputChatUploadedPhoto(file=self.save_file(photo)) photo = types.InputChatUploadedPhoto(
file=self.save_file(photo),
video=self.save_file(video)
)
if isinstance(peer, types.InputPeerChat): if isinstance(peer, types.InputPeerChat):
self.send( self.send(

View File

@ -1,79 +0,0 @@
# Pyrogram - Telegram MTProto API Client Library for Python
# Copyright (C) 2017-2020 Dan <https://github.com/delivrance>
#
# 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 <http://www.gnu.org/licenses/>.
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

View File

@ -25,7 +25,6 @@ from .get_profile_photos_count import GetProfilePhotosCount
from .get_users import GetUsers from .get_users import GetUsers
from .iter_profile_photos import IterProfilePhotos from .iter_profile_photos import IterProfilePhotos
from .set_profile_photo import SetProfilePhoto from .set_profile_photo import SetProfilePhoto
from .set_profile_video import SetProfileVideo
from .unblock_user import UnblockUser from .unblock_user import UnblockUser
from .update_profile import UpdateProfile from .update_profile import UpdateProfile
from .update_username import UpdateUsername from .update_username import UpdateUsername
@ -44,6 +43,5 @@ class Users(
IterProfilePhotos, IterProfilePhotos,
UnblockUser, UnblockUser,
UpdateProfile, UpdateProfile,
SetProfileVideo
): ):
pass pass

View File

@ -16,42 +16,58 @@
# You should have received a copy of the GNU Lesser General Public License # You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>. # along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
from typing import Union, BinaryIO
from pyrogram.api import functions from pyrogram.api import functions
from ...ext import BaseClient from ...ext import BaseClient
from typing import Union, BinaryIO
class SetProfilePhoto(BaseClient): class SetProfilePhoto(BaseClient):
def set_profile_photo( def set_profile_photo(
self, self,
photo: Union[str, BinaryIO] *,
photo: Union[str, BinaryIO] = None,
video: Union[str, BinaryIO] = None
) -> bool: ) -> bool:
"""Set a new profile photo. """Set a new profile photo or video (H.264/MPEG-4 AVC video, max 5 seconds).
If you want to set a profile video instead, use :meth:`~Client.set_profile_video` The ``photo`` and ``video`` arguments are mutually exclusive.
Pass either one as named argument (see examples below).
.. note::
This method only works for Users. This method only works for Users.
Bots profile photos must be set using BotFather. Bots profile photos must be set using BotFather.
Parameters: Parameters:
photo (``str``): photo (``str`` | ``BinaryIO``, *optional*):
Profile photo to set. Profile photo to set.
Pass a file path as string to upload a new photo that exists on your local machine or Pass a file path as string to upload a new photo that exists on your local machine or
pass a binary file-like object with its attribute ".name" set for in-memory uploads. pass a binary file-like object with its attribute ".name" set for in-memory uploads.
video (``str`` | ``BinaryIO``, *optional*):
Profile video to set.
Pass a file path as string to upload a new video that exists on your local machine or
pass a binary file-like object with its attribute ".name" set for in-memory uploads.
Returns: Returns:
``bool``: True on success. ``bool``: True on success.
Example: Example:
.. code-block:: python .. code-block:: python
app.set_profile_photo("new_photo.jpg") # Set a new profile photo
app.set_profile_photo(photo="new_photo.jpg")
# Set a new profile video
app.set_profile_photo(video="new_video.mp4")
""" """
return bool( return bool(
self.send( self.send(
functions.photos.UploadProfilePhoto( functions.photos.UploadProfilePhoto(
file=self.save_file(photo) file=self.save_file(photo),
video=self.save_file(video)
) )
) )
) )

View File

@ -1,57 +0,0 @@
# Pyrogram - Telegram MTProto API Client Library for Python
# Copyright (C) 2017-2020 Dan <https://github.com/delivrance>
#
# 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 <http://www.gnu.org/licenses/>.
from typing import Union, BinaryIO
from pyrogram.api import functions
from ...ext import BaseClient
class SetProfileVideo(BaseClient):
def set_profile_video(
self,
video: Union[str, BinaryIO]
) -> bool:
"""Set a new profile video (H.264/MPEG-4 AVC video, max 5 seconds).
If you want to set a profile photo instead, use :meth:`~Client.set_profile_photo`
This method only works for Users.
Parameters:
video (``str``):
Profile video to set.
Pass a file path as string to upload a new video that exists on your local machine or
pass a binary file-like object with its attribute ".name" set for in-memory uploads.
Returns:
``bool``: True on success.
Example:
.. code-block:: python
app.set_profile_video("new_video.mp4")
"""
return bool(
self.send(
functions.photos.UploadProfilePhoto(
video=self.save_file(video)
)
)
)