From d71d9686d7e3833fea34a332b8e95bd0de9bb457 Mon Sep 17 00:00:00 2001 From: Dan <14043624+delivrance@users.noreply.github.com> Date: Sun, 27 Oct 2019 11:02:38 +0100 Subject: [PATCH] Add set_slow_mode method --- compiler/docs/compiler.py | 1 + compiler/error/source/400_BAD_REQUEST.tsv | 1 + compiler/error/source/420_FLOOD.tsv | 1 + pyrogram/client/methods/chats/__init__.py | 5 +- .../client/methods/chats/set_slow_mode.py | 57 +++++++++++++++++++ 5 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 pyrogram/client/methods/chats/set_slow_mode.py diff --git a/compiler/docs/compiler.py b/compiler/docs/compiler.py index 6d940448..ce5ba667 100644 --- a/compiler/docs/compiler.py +++ b/compiler/docs/compiler.py @@ -212,6 +212,7 @@ def pyrogram_api(): create_supergroup delete_channel delete_supergroup + set_slow_mode """, users=""" Users diff --git a/compiler/error/source/400_BAD_REQUEST.tsv b/compiler/error/source/400_BAD_REQUEST.tsv index 73445b5e..838b0413 100644 --- a/compiler/error/source/400_BAD_REQUEST.tsv +++ b/compiler/error/source/400_BAD_REQUEST.tsv @@ -132,3 +132,4 @@ ADMIN_RANK_EMOJI_NOT_ALLOWED Emojis are not allowed in custom administrator titl FILE_REFERENCE_EMPTY The file reference is empty FILE_REFERENCE_INVALID The file reference is invalid REPLY_MARKUP_TOO_LONG The reply markup is too long +SECONDS_INVALID The seconds interval is invalid, for slow mode try with 0 (off), 10, 30, 60 (1m), 300 (5m), 900 (15m) or 3600 (1h) \ No newline at end of file diff --git a/compiler/error/source/420_FLOOD.tsv b/compiler/error/source/420_FLOOD.tsv index 3d5ceabd..c381e752 100644 --- a/compiler/error/source/420_FLOOD.tsv +++ b/compiler/error/source/420_FLOOD.tsv @@ -1,3 +1,4 @@ id message FLOOD_WAIT_X A wait of {x} seconds is required TAKEOUT_INIT_DELAY_X You have to confirm the data export request using one of your mobile devices or wait {x} seconds +SLOWMODE_WAIT_X A wait of {x} seconds is required to send messages in this chat. \ No newline at end of file diff --git a/pyrogram/client/methods/chats/__init__.py b/pyrogram/client/methods/chats/__init__.py index 67ade88a..b5fc529c 100644 --- a/pyrogram/client/methods/chats/__init__.py +++ b/pyrogram/client/methods/chats/__init__.py @@ -49,7 +49,7 @@ from .unarchive_chats import UnarchiveChats from .unban_chat_member import UnbanChatMember from .unpin_chat_message import UnpinChatMessage from .update_chat_username import UpdateChatUsername - +from .set_slow_mode import SetSlowMode class Chats( GetChat, @@ -84,6 +84,7 @@ class Chats( DeleteChannel, DeleteSupergroup, GetNearbyChats, - SetAdministratorTitle + SetAdministratorTitle, + SetSlowMode ): pass diff --git a/pyrogram/client/methods/chats/set_slow_mode.py b/pyrogram/client/methods/chats/set_slow_mode.py new file mode 100644 index 00000000..99043e82 --- /dev/null +++ b/pyrogram/client/methods/chats/set_slow_mode.py @@ -0,0 +1,57 @@ +# Pyrogram - Telegram MTProto API Client Library for Python +# Copyright (C) 2017-2019 Dan Tès +# +# 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 + +from pyrogram.api import functions +from ...ext import BaseClient + + +class SetSlowMode(BaseClient): + def set_slow_mode( + self, + chat_id: Union[int, str], + seconds: int, + ) -> bool: + """Set the slow mode interval for a chat. + + Parameters: + chat_id (``int`` | ``str``): + Unique identifier (int) or username (str) of the target chat. + + seconds (``int`` | ``str``): + Seconds in which members will be able to send only one message per this interval. + Valid values are: 0 (off), 10, 30, 60 (1m), 300 (5m), 900 (15m) or 3600 (1h). + + Returns: + ``bool``: True on success. + + Example: + .. code-block:: python + + app.set_slow_mode("pyrogramchat", 60) + """ + + self.send( + functions.channels.ToggleSlowMode( + channel=self.resolve_peer(chat_id), + seconds=seconds + ) + ) + + return True