From 3b98efa16ebd4b01cacececf29f02e208e8fadf4 Mon Sep 17 00:00:00 2001 From: KurimuzonAkuma Date: Sat, 2 Dec 2023 10:12:01 +0300 Subject: [PATCH] Add get_channel_recommendations to high-lvl --- compiler/docs/compiler.py | 1 + pyrogram/methods/chats/__init__.py | 2 + .../chats/get_channel_recommendations.py | 59 +++++++++++++++++++ 3 files changed, 62 insertions(+) create mode 100644 pyrogram/methods/chats/get_channel_recommendations.py diff --git a/compiler/docs/compiler.py b/compiler/docs/compiler.py index 82bc674d368..57c1b878144 100644 --- a/compiler/docs/compiler.py +++ b/compiler/docs/compiler.py @@ -250,6 +250,7 @@ def get_title_list(s: str) -> list: export_folder_link get_folders update_folder + get_channel_recommendations """, users=""" Users diff --git a/pyrogram/methods/chats/__init__.py b/pyrogram/methods/chats/__init__.py index 46c7ee1ed64..cac1c60fabb 100644 --- a/pyrogram/methods/chats/__init__.py +++ b/pyrogram/methods/chats/__init__.py @@ -38,6 +38,7 @@ from .get_chat_members import GetChatMembers from .get_chat_members_count import GetChatMembersCount from .get_chat_online_count import GetChatOnlineCount +from .get_channel_recommendations import GetChannelRecommendations from .get_dialogs import GetDialogs from .get_dialogs_count import GetDialogsCount from .get_folders import GetFolders @@ -120,6 +121,7 @@ class Chats( MarkChatUnread, GetChatEventLog, GetChatOnlineCount, + GetChannelRecommendations, GetSendAsChats, SetSendAsChat, SetChatProtectedContent diff --git a/pyrogram/methods/chats/get_channel_recommendations.py b/pyrogram/methods/chats/get_channel_recommendations.py new file mode 100644 index 00000000000..4d59121a426 --- /dev/null +++ b/pyrogram/methods/chats/get_channel_recommendations.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 Union + +import pyrogram +from pyrogram import raw +from pyrogram import types + + +class GetChannelRecommendations: + async def get_channel_recommendations( + self: "pyrogram.Client", + chat_id: Union[int, str] + ) -> "types.Chat": + """Get channel recommendations. + + .. include:: /_includes/usable-by/users.rst + + Parameters: + chat_id (``int`` | ``str``): + Unique identifier (int) or username (str) of the target chat. + + Returns: + List of :obj:`~pyrogram.types.Chat`: On success, the list of channels is returned. + + Example: + .. code-block:: python + + channels = await app.get_channel_recommendations(chat_id) + print(channels) + """ + chat = await self.resolve_peer(chat_id) + + if isinstance(chat, raw.types.InputPeerChannel): + r = await self.invoke( + raw.functions.channels.GetChannelRecommendations( + channel=chat + ) + ) + + return types.List([types.Chat._parse_channel_chat(self, chat) for chat in r.chats]) or None + else: + raise ValueError(f'The chat_id "{chat_id}" belongs to a user or chat')