From 40e2afeeff715c40811d119508c84b72187cd88e Mon Sep 17 00:00:00 2001 From: KurimuzonAkuma Date: Tue, 22 Oct 2024 14:19:07 +0300 Subject: [PATCH] Added new bot methods set_bot_name get_bot_name set_bot_info_description get_bot_info_description set_bot_info_short_description get_bot_info_short_description --- compiler/docs/compiler.py | 6 ++ pyrogram/methods/bots/__init__.py | 12 ++++ .../methods/bots/get_bot_info_description.py | 63 ++++++++++++++++++ .../bots/get_bot_info_short_description.py | 63 ++++++++++++++++++ pyrogram/methods/bots/get_bot_name.py | 62 +++++++++++++++++ .../methods/bots/set_bot_info_description.py | 66 +++++++++++++++++++ .../bots/set_bot_info_short_description.py | 66 +++++++++++++++++++ pyrogram/methods/bots/set_bot_name.py | 66 +++++++++++++++++++ 8 files changed, 404 insertions(+) create mode 100644 pyrogram/methods/bots/get_bot_info_description.py create mode 100644 pyrogram/methods/bots/get_bot_info_short_description.py create mode 100644 pyrogram/methods/bots/get_bot_name.py create mode 100644 pyrogram/methods/bots/set_bot_info_description.py create mode 100644 pyrogram/methods/bots/set_bot_info_short_description.py create mode 100644 pyrogram/methods/bots/set_bot_name.py diff --git a/compiler/docs/compiler.py b/compiler/docs/compiler.py index b374e1145c..a43828a0e1 100644 --- a/compiler/docs/compiler.py +++ b/compiler/docs/compiler.py @@ -367,6 +367,12 @@ def get_title_list(s: str) -> list: answer_shipping_query create_invoice_link refund_star_payment + set_bot_info_description + get_bot_info_description + set_bot_info_short_description + get_bot_info_short_description + set_bot_name + get_bot_name """, business=""" Business diff --git a/pyrogram/methods/bots/__init__.py b/pyrogram/methods/bots/__init__.py index cbeb375e3d..6a2886ebcf 100644 --- a/pyrogram/methods/bots/__init__.py +++ b/pyrogram/methods/bots/__init__.py @@ -25,6 +25,9 @@ from .delete_bot_commands import DeleteBotCommands from .get_bot_commands import GetBotCommands from .get_bot_default_privileges import GetBotDefaultPrivileges +from .get_bot_info_description import GetBotInfoDescription +from .get_bot_info_short_description import GetBotInfoShortDescription +from .get_bot_name import GetBotName from .get_chat_menu_button import GetChatMenuButton from .get_game_high_scores import GetGameHighScores from .get_inline_bot_results import GetInlineBotResults @@ -35,6 +38,9 @@ from .send_invoice import SendInvoice from .set_bot_commands import SetBotCommands from .set_bot_default_privileges import SetBotDefaultPrivileges +from .set_bot_info_description import SetBotInfoDescription +from .set_bot_info_short_description import SetBotInfoShortDescription +from .set_bot_name import SetBotName from .set_chat_menu_button import SetChatMenuButton from .set_game_score import SetGameScore @@ -57,7 +63,13 @@ class Bots( GetBotCommands, DeleteBotCommands, SetBotDefaultPrivileges, + SetBotInfoDescription, + SetBotInfoShortDescription, + SetBotName, GetBotDefaultPrivileges, + GetBotInfoDescription, + GetBotInfoShortDescription, + GetBotName, SetChatMenuButton, GetChatMenuButton, AnswerWebAppQuery diff --git a/pyrogram/methods/bots/get_bot_info_description.py b/pyrogram/methods/bots/get_bot_info_description.py new file mode 100644 index 0000000000..b1337e7884 --- /dev/null +++ b/pyrogram/methods/bots/get_bot_info_description.py @@ -0,0 +1,63 @@ +# 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 Union + +import pyrogram +from pyrogram import raw + + +class GetBotInfoDescription: + async def get_bot_info_description( + self: "pyrogram.Client", + language_code: str = "", + for_my_bot: Union[int, str] = None, + ) -> str: + """Use this method to get the current / owned bot description for the given user language. + + .. note:: + + If the current account is an User, can be called only if the ``for_my_bot`` has ``can_be_edited`` property set to True. + + .. include:: /_includes/usable-by/users-bots.rst + + Parameters: + language_code (``str``, *optional*): + A two-letter ISO 639-1 language code or an empty string + + for_my_bot (``int`` | ``str``, *optional*): + Unique identifier (int) or username (str) of the bot for which profile photo has to be updated instead of the current user. + The bot should have ``can_be_edited`` property set to True. + + Returns: + ``str``: On success, returns the text shown in the chat with a bot if the chat is empty in the given language. + + Example: + .. code-block:: python + + bot_description = await app.get_bot_info_description() + """ + + bot_info = await self.invoke( + raw.functions.bots.GetBotInfo( + bot=await self.resolve_peer(for_my_bot) if for_my_bot else None, + lang_code=language_code + ) + ) + + return bot_info.description diff --git a/pyrogram/methods/bots/get_bot_info_short_description.py b/pyrogram/methods/bots/get_bot_info_short_description.py new file mode 100644 index 0000000000..b200910ae7 --- /dev/null +++ b/pyrogram/methods/bots/get_bot_info_short_description.py @@ -0,0 +1,63 @@ +# 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 Union + +import pyrogram +from pyrogram import raw + + +class GetBotInfoShortDescription: + async def get_bot_info_short_description( + self: "pyrogram.Client", + language_code: str = "", + for_my_bot: Union[int, str] = None, + ) -> str: + """Use this method to get the current / owned bot short description for the given user language. + + .. note:: + + If the current account is an User, can be called only if the ``for_my_bot`` has ``can_be_edited`` property set to True. + + .. include:: /_includes/usable-by/users-bots.rst + + Parameters: + language_code (``str``, *optional*): + A two-letter ISO 639-1 language code or an empty string + + for_my_bot (``int`` | ``str``, *optional*): + Unique identifier (int) or username (str) of the bot for which profile photo has to be updated instead of the current user. + The bot should have ``can_be_edited`` property set to True. + + Returns: + ``str``: On success, returns the text shown on a bot's profile page and sent together with the link when users share the bot in the given language. + + Example: + .. code-block:: python + + bot_short_description = await app.get_bot_info_short_description() + """ + + bot_info = await self.invoke( + raw.functions.bots.GetBotInfo( + bot=await self.resolve_peer(for_my_bot) if for_my_bot else None, + lang_code=language_code + ) + ) + + return bot_info.about diff --git a/pyrogram/methods/bots/get_bot_name.py b/pyrogram/methods/bots/get_bot_name.py new file mode 100644 index 0000000000..e2775b89fc --- /dev/null +++ b/pyrogram/methods/bots/get_bot_name.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 Union + +import pyrogram +from pyrogram import raw + + +class GetBotName: + async def get_bot_name( + self: "pyrogram.Client", + language_code: str = "", + for_my_bot: Union[int, str] = None, + ) -> str: + """Use this method to get the current / owned bot name for the given user language. + + .. note:: + + If the current account is an User, can be called only if the ``for_my_bot`` has ``can_be_edited`` property set to True. + + .. include:: /_includes/usable-by/users-bots.rst + + Parameters: + language_code (``str``, *optional*): + A two-letter ISO 639-1 language code or an empty string + + for_my_bot (``int`` | ``str``, *optional*): + Unique identifier (int) or username (str) of the bot for which profile photo has to be updated instead of the current user. + The bot should have ``can_be_edited`` property set to True. + + Returns: + ``str``: On success, returns the name of a bot in the given language. + + Example: + .. code-block:: python + + bot_name = await app.get_bot_name() + """ + + bot_info = await self.invoke( + raw.functions.bots.GetBotInfo( + bot=await self.resolve_peer(for_my_bot) if for_my_bot else None, + lang_code=language_code + ) + ) + return bot_info.name diff --git a/pyrogram/methods/bots/set_bot_info_description.py b/pyrogram/methods/bots/set_bot_info_description.py new file mode 100644 index 0000000000..6be130aca4 --- /dev/null +++ b/pyrogram/methods/bots/set_bot_info_description.py @@ -0,0 +1,66 @@ +# 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 Union + +import pyrogram +from pyrogram import raw + + +class SetBotInfoDescription: + async def set_bot_info_description( + self: "pyrogram.Client", + description: str, + language_code: str = "", + for_my_bot: Union[int, str] = None, + ) -> bool: + """Use this method to change the bot's description, which is shown in the chat with the bot if the chat is empty. + + .. note:: + + If the current account is an User, can be called only if the ``for_my_bot`` has ``can_be_edited`` property set to True. + + .. include:: /_includes/usable-by/users-bots.rst + + Parameters: + description (``str``): + New bot description; 0-512 characters. Pass an empty string to remove the dedicated description for the given language. + + language_code (``str``, *optional*): + A two-letter ISO 639-1 language code or an empty string + + for_my_bot (``int`` | ``str``, *optional*): + Unique identifier (int) or username (str) of the bot for which profile photo has to be updated instead of the current user. + The bot should have ``can_be_edited`` property set to True. + + Returns: + ``bool``: True on success. + + Example: + .. code-block:: python + + await app.set_bot_info_description("") + """ + + return await self.invoke( + raw.functions.bots.SetBotInfo( + bot=await self.resolve_peer(for_my_bot) if for_my_bot else None, + lang_code=language_code, + description=description + ) + ) diff --git a/pyrogram/methods/bots/set_bot_info_short_description.py b/pyrogram/methods/bots/set_bot_info_short_description.py new file mode 100644 index 0000000000..5a3903d55a --- /dev/null +++ b/pyrogram/methods/bots/set_bot_info_short_description.py @@ -0,0 +1,66 @@ +# 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 Union + +import pyrogram +from pyrogram import raw + + +class SetBotInfoShortDescription: + async def set_bot_info_short_description( + self: "pyrogram.Client", + short_description: str, + language_code: str = "", + for_my_bot: Union[int, str] = None, + ) -> bool: + """Use this method to change the bot's short description, which is shown on the bot's profile page and is sent together with the link when users share the bot. + + .. note:: + + If the current account is an User, can be called only if the ``for_my_bot`` has ``can_be_edited`` property set to True. + + .. include:: /_includes/usable-by/users-bots.rst + + Parameters: + short_description (``str``): + New short description for the bot; 0-120 characters. Pass an empty string to remove the dedicated short description for the given language. + + language_code (``str``, *optional*): + A two-letter ISO 639-1 language code or an empty string + + for_my_bot (``int`` | ``str``, *optional*): + Unique identifier (int) or username (str) of the bot for which profile photo has to be updated instead of the current user. + The bot should have ``can_be_edited`` property set to True. + + Returns: + ``bool``: True on success. + + Example: + .. code-block:: python + + await app.set_bot_info_short_description("") + """ + + return await self.invoke( + raw.functions.bots.SetBotInfo( + bot=await self.resolve_peer(for_my_bot) if for_my_bot else None, + lang_code=language_code, + about=short_description + ) + ) diff --git a/pyrogram/methods/bots/set_bot_name.py b/pyrogram/methods/bots/set_bot_name.py new file mode 100644 index 0000000000..34fd2fffeb --- /dev/null +++ b/pyrogram/methods/bots/set_bot_name.py @@ -0,0 +1,66 @@ +# 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 Union + +import pyrogram +from pyrogram import raw + + +class SetBotName: + async def set_bot_name( + self: "pyrogram.Client", + name: str, + language_code: str = "", + for_my_bot: Union[int, str] = None, + ) -> str: + """Use this method to get the current / owned bot name for the given user language. + + .. note:: + + If the current account is an User, can be called only if the ``for_my_bot`` has ``can_be_edited`` property set to True. + + .. include:: /_includes/usable-by/users-bots.rst + + Parameters: + name (``str``): + New bot name; 0-64 characters. Pass an empty string to remove the dedicated name for the given language. + + language_code (``str``, *optional*): + A two-letter ISO 639-1 language code or an empty string + + for_my_bot (``int`` | ``str``, *optional*): + Unique identifier (int) or username (str) of the bot for which profile photo has to be updated instead of the current user. + The bot should have ``can_be_edited`` property set to True. + + Returns: + ``bool``: True on success. + + Example: + .. code-block:: python + + await app.set_bot_name("Pyrogram Assistant") + """ + + return await self.invoke( + raw.functions.bots.SetBotInfo( + bot=await self.resolve_peer(for_my_bot) if for_my_bot else None, + lang_code=language_code, + name=name + ) + )