From a0726e6d25410999151c138d9a0b88dc73de1c46 Mon Sep 17 00:00:00 2001 From: shriMADhav U k Date: Wed, 3 Apr 2024 08:55:15 +0200 Subject: [PATCH] Added methods set_birthdate set_personal_chat --- compiler/docs/compiler.py | 2 + pyrogram/methods/users/__init__.py | 6 +- pyrogram/methods/users/set_birthdate.py | 62 ++++++++++++++++++++ pyrogram/methods/users/set_personal_chat.py | 59 +++++++++++++++++++ pyrogram/methods/users/unblock_user.py | 2 +- pyrogram/types/messages_and_media/message.py | 5 +- pyrogram/types/user_and_chats/birthdate.py | 7 +++ 7 files changed, 139 insertions(+), 4 deletions(-) create mode 100644 pyrogram/methods/users/set_birthdate.py create mode 100644 pyrogram/methods/users/set_personal_chat.py diff --git a/compiler/docs/compiler.py b/compiler/docs/compiler.py index 364d26f3d..dee831106 100644 --- a/compiler/docs/compiler.py +++ b/compiler/docs/compiler.py @@ -265,6 +265,8 @@ def get_title_list(s: str) -> list: get_common_chats get_default_emoji_statuses set_emoji_status + set_birthdate + set_personal_chat """, invite_links=""" Invite Links diff --git a/pyrogram/methods/users/__init__.py b/pyrogram/methods/users/__init__.py index 31fda1dc3..152d3a3b6 100644 --- a/pyrogram/methods/users/__init__.py +++ b/pyrogram/methods/users/__init__.py @@ -29,6 +29,8 @@ from .set_username import SetUsername from .unblock_user import UnblockUser from .update_profile import UpdateProfile +from .set_birthdate import SetBirthdate +from .set_personal_chat import SetPersonalChat class Users( @@ -44,6 +46,8 @@ class Users( UnblockUser, UpdateProfile, GetDefaultEmojiStatuses, - SetEmojiStatus + SetEmojiStatus, + SetBirthdate, + SetPersonalChat ): pass diff --git a/pyrogram/methods/users/set_birthdate.py b/pyrogram/methods/users/set_birthdate.py new file mode 100644 index 000000000..fc242c66b --- /dev/null +++ b/pyrogram/methods/users/set_birthdate.py @@ -0,0 +1,62 @@ +# Pyrogram - Telegram MTProto API Client Library for Python +# Copyright (C) 2017-present 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 Optional + +import pyrogram +from pyrogram import raw, types + + +class SetBirthdate: + async def set_birthdate( + self: "pyrogram.Client", + birthdate: Optional["types.Birthdate"] = None + ) -> bool: + """Changes the birthdate of the current user + + .. include:: /_includes/usable-by/users.rst + + Parameters: + birthdate (:obj:`~pyrogram.types.Birthdate`, *optional*): + The new value of the current user's birthdate; pass None to remove the birthdate + + Returns: + ``bool``: True on success. + + Example: + .. code-block:: python + + # Update your birthdate + await app.set_birthdate(birthdate=types.Birthdate( + day=15, + month=12, + year=2017 + )) + + # Remove your birthdate + await app.set_birthdate() + + """ + + return bool( + await self.invoke( + raw.functions.account.UpdateBirthday( + birthday=birthdate.write() if birthdate else None + ) + ) + ) diff --git a/pyrogram/methods/users/set_personal_chat.py b/pyrogram/methods/users/set_personal_chat.py new file mode 100644 index 000000000..0a4695228 --- /dev/null +++ b/pyrogram/methods/users/set_personal_chat.py @@ -0,0 +1,59 @@ +# Pyrogram - Telegram MTProto API Client Library for Python +# Copyright (C) 2017-present 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 Optional, Union + +import pyrogram +from pyrogram import raw + + +class SetPersonalChat: + async def set_personal_chat( + self: "pyrogram.Client", + chat_id: Optional[Union[int, str]] = None, + ) -> bool: + """Changes the personal chat of the current user + + .. include:: /_includes/usable-by/users.rst + + Parameters: + chat_id (``int`` | ``str`, *optional*): + Identifier of the new personal chat; pass None to remove the chat. Use :meth:`~pyrogram.Client.get_suitable_personal_chats` to get suitable chats + + Returns: + ``bool``: True on success. + + Example: + .. code-block:: python + + # Update your personal chat + await app.set_personal_chat(chat_id="@Pyrogram") + + # Hide your personal chat + await app.set_personal_chat() + """ + + return bool( + await self.invoke( + raw.functions.account.UpdatePersonalChannel( + channel=await self.resolve_peer( + chat_id + ) if chat_id else raw.types.InputChannelEmpty() + ) + ) + ) diff --git a/pyrogram/methods/users/unblock_user.py b/pyrogram/methods/users/unblock_user.py index 2c014f8af..146d719d2 100644 --- a/pyrogram/methods/users/unblock_user.py +++ b/pyrogram/methods/users/unblock_user.py @@ -33,7 +33,7 @@ async def unblock_user( .. include:: /_includes/usable-by/users.rst Parameters: - user_id (``int`` | ``str``):: + user_id (``int`` | ``str``): Unique identifier (int) or username (str) of the target user. For you yourself you can simply use "me" or "self". For a contact that exists in your Telegram address book you can use his phone number (str). diff --git a/pyrogram/types/messages_and_media/message.py b/pyrogram/types/messages_and_media/message.py index 193b5dfab..e5a270ad2 100644 --- a/pyrogram/types/messages_and_media/message.py +++ b/pyrogram/types/messages_and_media/message.py @@ -118,7 +118,8 @@ class Message(Object, Update): For replies, the original message. Note that the Message object in this field will not contain further reply_to_message fields even if it itself is a reply. - external_reply + external_reply (:obj:`~pyrogram.types.ExternalReplyInfo`, *optional*): + Information about the message that is being replied to, which may come from another chat or forum topic quote @@ -323,7 +324,7 @@ class Message(Object, Update): video_chat_ended (:obj:`~pyrogram.types.VideoChatEnded`, *optional*): Service message: the voice chat has ended. - video_chat_participants_invited (:obj:`~pyrogram.types.VoiceChatParticipantsInvited`, *optional*): + video_chat_participants_invited (:obj:`~pyrogram.types.VideoChatParticipantsInvited`, *optional*): Service message: new members were invited to the voice chat. web_app_data (:obj:`~pyrogram.types.WebAppData`, *optional*): diff --git a/pyrogram/types/user_and_chats/birthdate.py b/pyrogram/types/user_and_chats/birthdate.py index f3e09e399..e348795f0 100644 --- a/pyrogram/types/user_and_chats/birthdate.py +++ b/pyrogram/types/user_and_chats/birthdate.py @@ -58,3 +58,10 @@ def _parse( month=birthday.month, year=getattr(birthday, "year", None) ) + + def write(self): + return raw.types.Birthday( + day=self.day, + month=self.month, + year=self.year + )