diff --git a/pyrogram/methods/chats/__init__.py b/pyrogram/methods/chats/__init__.py index a2bdde08..cf13ea85 100644 --- a/pyrogram/methods/chats/__init__.py +++ b/pyrogram/methods/chats/__init__.py @@ -20,12 +20,17 @@ from .add_chat_members import AddChatMembers from .archive_chats import ArchiveChats from .ban_chat_member import BanChatMember from .create_channel import CreateChannel +from .create_forum_topic import CreateForumTopic from .create_group import CreateGroup from .create_supergroup import CreateSupergroup +from .close_forum_topic import CloseForumTopic from .delete_channel import DeleteChannel from .delete_chat_photo import DeleteChatPhoto +from .delete_forum_topic import DeleteForumTopic from .delete_supergroup import DeleteSupergroup from .delete_user_history import DeleteUserHistory +from .edit_forum_topic import EditForumTopic +from .reopen_forum_topic import ReopenForumTopic from .get_chat import GetChat from .get_chat_event_log import GetChatEventLog from .get_chat_member import GetChatMember @@ -83,9 +88,14 @@ class Chats( CreateGroup, CreateSupergroup, CreateChannel, + CreateForumTopic, + CloseForumTopic, AddChatMembers, DeleteChannel, + DeleteForumTopic, DeleteSupergroup, + EditForumTopic, + ReopenForumTopic, GetNearbyChats, SetAdministratorTitle, SetSlowMode, diff --git a/pyrogram/methods/chats/close_forum_topic.py b/pyrogram/methods/chats/close_forum_topic.py new file mode 100644 index 00000000..513080f5 --- /dev/null +++ b/pyrogram/methods/chats/close_forum_topic.py @@ -0,0 +1,60 @@ +# 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 . +import pyrogram +from pyrogram import raw +from pyrogram import types +from typing import Union + + +class CloseForumTopic: + async def close_forum_topic( + self: "pyrogram.Client", + chat_id: Union[int, str], + topic_id: int + ) -> bool: + """Close a forum topic. + + .. include:: /_includes/usable-by/users-bots.rst + + Parameters: + chat_id (``int`` | ``str``): + Unique identifier (int) or username (str) of the target chat. + + topic_id (``int``): + Unique identifier (int) of the target forum topic. + + Returns: + `bool`: On success, a Boolean is returned. + + Example: + .. code-block:: python + + await app.close_forum_topic(chat_id, topic_id) + """ + try: + await self.invoke( + raw.functions.channels.EditForumTopic( + channel=await self.resolve_peer(chat_id), + topic_id=topic_id, + closed=True + ) + ) + except Exception as e: + print(e) + return False + return True diff --git a/pyrogram/methods/chats/create_forum_topic.py b/pyrogram/methods/chats/create_forum_topic.py new file mode 100644 index 00000000..954abfb6 --- /dev/null +++ b/pyrogram/methods/chats/create_forum_topic.py @@ -0,0 +1,67 @@ +# 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 . +import pyrogram +from pyrogram import raw +from pyrogram import types +from typing import Union + + +class CreateForumTopic: + async def create_forum_topic( + self: "pyrogram.Client", + chat_id: Union[int, str], + title: str, + icon_color: int = None, + icon_emoji_id: int = None + ) -> "types.ForumTopicCreated": + """Create a new forum topic. + + .. include:: /_includes/usable-by/users-bots.rst + + Parameters: + chat_id (``int`` | ``str``): + Unique identifier (int) or username (str) of the target chat. + + title (``str``): + The forum topic title. + + icon_color (``int``, *optional*): + The color of forum topic icon. + + icon_emoji_id (``int``, *optional*): + Unique identifier of the custom emoji shown as the topic icon + + Returns: + :obj:`~pyrogram.types.ForumTopicCreated`: On success, a forum_topic_created object is returned. + + Example: + .. code-block:: python + + await app.create_forum_topic("Topic Title") + """ + r = await self.invoke( + raw.functions.channels.CreateForumTopic( + channel=await self.resolve_peer(chat_id), + title=title, + random_id=self.rnd_id(), + icon_color=icon_color, + icon_emoji_id=icon_emoji_id + ) + ) + + return types.ForumTopicCreated._parse(r.updates[1].message.action) diff --git a/pyrogram/methods/chats/delete_forum_topic.py b/pyrogram/methods/chats/delete_forum_topic.py new file mode 100644 index 00000000..689b6a44 --- /dev/null +++ b/pyrogram/methods/chats/delete_forum_topic.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 . +import pyrogram +from pyrogram import raw +from pyrogram import types +from typing import Union + + +class DeleteForumTopic: + async def delete_forum_topic( + self: "pyrogram.Client", + chat_id: Union[int, str], + topic_id: int + ) -> bool: + """Delete a forum topic. + + .. include:: /_includes/usable-by/users-bots.rst + + Parameters: + chat_id (``int`` | ``str``): + Unique identifier (int) or username (str) of the target chat. + + topic_id (``int``): + Unique identifier (int) of the target forum topic. + + Returns: + `bool`: On success, a Boolean is returned. + + Example: + .. code-block:: python + + await app.delete_forum_topic(chat_id, topic_id) + """ + try: + await self.invoke( + raw.functions.channels.DeleteTopicHistory( + channel=await self.resolve_peer(chat_id), + top_msg_id=topic_id + ) + ) + except Exception as e: + print(e) + return False + return True diff --git a/pyrogram/methods/chats/edit_forum_topic.py b/pyrogram/methods/chats/edit_forum_topic.py new file mode 100644 index 00000000..95dd4f89 --- /dev/null +++ b/pyrogram/methods/chats/edit_forum_topic.py @@ -0,0 +1,69 @@ +# 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 . +import pyrogram +from pyrogram import raw +from pyrogram import types +from typing import Union + + +class EditForumTopic: + async def edit_forum_topic( + self: "pyrogram.Client", + chat_id: Union[int, str], + topic_id: int, + title: str = None, + icon_emoji_id: int = None + ) -> bool: + """Edit a forum topic. + + .. include:: /_includes/usable-by/users-bots.rst + + Parameters: + chat_id (``int`` | ``str``): + Unique identifier (int) or username (str) of the target chat. + + topic_id (``int``): + Unique identifier (int) of the target forum topic. + + title (``str``, *optional*): + The forum topic title. + + icon_emoji_id (``int``, *optional*): + Unique identifier of the custom emoji shown as the topic icon + + Returns: + `bool`: On success, a Boolean is returned. + + Example: + .. code-block:: python + + await app.edit_forum_topic(chat_id,topic_id,"New Topic Title") + """ + try: + await self.invoke( + raw.functions.channels.EditForumTopic( + channel=await self.resolve_peer(chat_id), + topic_id=topic_id, + title=title, + icon_emoji_id=icon_emoji_id + ) + ) + except Exception as e: + print(e) + return False + return True diff --git a/pyrogram/methods/chats/reopen_forum_topic.py b/pyrogram/methods/chats/reopen_forum_topic.py new file mode 100644 index 00000000..1baa8ffb --- /dev/null +++ b/pyrogram/methods/chats/reopen_forum_topic.py @@ -0,0 +1,60 @@ +# 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 . +import pyrogram +from pyrogram import raw +from pyrogram import types +from typing import Union + + +class ReopenForumTopic: + async def reopen_forum_topic( + self: "pyrogram.Client", + chat_id: Union[int, str], + topic_id: int + ) -> bool: + """Reopen a forum topic. + + .. include:: /_includes/usable-by/users-bots.rst + + Parameters: + chat_id (``int`` | ``str``): + Unique identifier (int) or username (str) of the target chat. + + topic_id (``int``): + Unique identifier (int) of the target forum topic. + + Returns: + `bool`: On success, a Boolean is returned. + + Example: + .. code-block:: python + + await app.reopen_forum_topic(chat_id, topic_id) + """ + try: + await self.invoke( + raw.functions.channels.EditForumTopic( + channel=await self.resolve_peer(chat_id), + topic_id=topic_id, + closed=False + ) + ) + except Exception as e: + print(e) + return False + return True