From aac9369f3fd61e1e4c009df1c4f9b52d83295197 Mon Sep 17 00:00:00 2001 From: DevilXD Date: Wed, 29 May 2019 02:01:27 +0200 Subject: [PATCH] [Mod] Add [p]slowmode (#2734) Makes use of new timedelta converter --- redbot/cogs/mod/mod.py | 2 ++ redbot/cogs/mod/slowmode.py | 41 +++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 redbot/cogs/mod/slowmode.py diff --git a/redbot/cogs/mod/mod.py b/redbot/cogs/mod/mod.py index 9ac18743c..a303aab50 100644 --- a/redbot/cogs/mod/mod.py +++ b/redbot/cogs/mod/mod.py @@ -12,6 +12,7 @@ from .kickban import KickBanMixin from .movetocore import MoveToCore from .mutes import MuteMixin from .names import ModInfo +from .slowmode import Slowmode from .settings import ModSettings _ = T_ = Translator("Mod", __file__) @@ -36,6 +37,7 @@ class Mod( MoveToCore, MuteMixin, ModInfo, + Slowmode, commands.Cog, metaclass=CompositeMetaClass, ): diff --git a/redbot/cogs/mod/slowmode.py b/redbot/cogs/mod/slowmode.py new file mode 100644 index 000000000..807769c26 --- /dev/null +++ b/redbot/cogs/mod/slowmode.py @@ -0,0 +1,41 @@ +import re +from .abc import MixinMeta +from datetime import timedelta +from redbot.core import commands, i18n, checks +from redbot.core.utils.chat_formatting import humanize_timedelta + +_ = i18n.Translator("Mod", __file__) + + +class Slowmode(MixinMeta): + """ + Commands regarding channel slowmode management. + """ + + @commands.command() + @commands.guild_only() + @commands.bot_has_permissions(manage_channels=True) + @checks.admin_or_permissions(manage_channels=True) + async def slowmode( + self, + ctx, + *, + interval: commands.TimedeltaConverter( + minimum=timedelta(seconds=0), maximum=timedelta(hours=6) + ) = timedelta(seconds=0), + ): + """Changes channel's slowmode setting. + + Interval can be anything from 0 seconds to 6 hours. + Use without parameters to disable. + """ + seconds = interval.total_seconds() + await ctx.channel.edit(slowmode_delay=seconds) + if seconds > 0: + await ctx.send( + _("Slowmode interval is now {interval}.").format( + interval=humanize_timedelta(timedelta=interval) + ) + ) + else: + await ctx.send(_("Slowmode has been disabled."))