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
export_chat_invite_link
set_chat_photo
set_chat_video
delete_chat_photo
set_chat_title
set_chat_description
@ -226,7 +225,6 @@ def pyrogram_api():
get_profile_photos_count
iter_profile_photos
set_profile_photo
set_profile_video
delete_profile_photos
update_username
update_profile

View File

@ -45,7 +45,6 @@ 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
@ -87,7 +86,6 @@ class Chats(
DeleteSupergroup,
GetNearbyChats,
SetAdministratorTitle,
SetSlowMode,
SetChatVideo
SetSlowMode
):
pass

View File

@ -27,10 +27,15 @@ class SetChatPhoto(BaseClient):
def set_chat_photo(
self,
chat_id: Union[int, str],
photo: Union[str, BinaryIO],
*,
photo: Union[str, BinaryIO] = None,
video: Union[str, BinaryIO] = None,
file_ref: str = None
) -> 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.
@ -38,11 +43,16 @@ class SetChatPhoto(BaseClient):
chat_id (``int`` | ``str``):
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
upload a new photo from your local machine or a binary file-like object with its attribute ".name"
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*):
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.
@ -57,21 +67,34 @@ class SetChatPhoto(BaseClient):
.. code-block:: python
# 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
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)
if isinstance(photo, str):
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:
photo = utils.get_input_media_from_file_id(photo, file_ref, 2)
photo = types.InputChatPhoto(id=photo.id)
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):
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 .iter_profile_photos import IterProfilePhotos
from .set_profile_photo import SetProfilePhoto
from .set_profile_video import SetProfileVideo
from .unblock_user import UnblockUser
from .update_profile import UpdateProfile
from .update_username import UpdateUsername
@ -44,6 +43,5 @@ class Users(
IterProfilePhotos,
UnblockUser,
UpdateProfile,
SetProfileVideo
):
pass

View File

@ -16,42 +16,58 @@
# 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
from typing import Union, BinaryIO
class SetProfilePhoto(BaseClient):
def set_profile_photo(
self,
photo: Union[str, BinaryIO]
*,
photo: Union[str, BinaryIO] = None,
video: Union[str, BinaryIO] = None
) -> 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).
This method only works for Users.
Bots profile photos must be set using BotFather.
.. note::
This method only works for Users.
Bots profile photos must be set using BotFather.
Parameters:
photo (``str``):
photo (``str`` | ``BinaryIO``, *optional*):
Profile photo to set.
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.
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:
``bool``: True on success.
Example:
.. 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(
self.send(
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)
)
)
)