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."))