mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-11-20 18:06:08 -05:00
[Mod] Move deletedelay to core (#3638)
* Move deletedelay to core * line lengths * address review * move settings change * fine...
This commit is contained in:
@@ -13,7 +13,6 @@ from redbot.core.utils._internal_utils import send_to_owners_with_prefix_replace
|
||||
from .casetypes import CASETYPES
|
||||
from .events import Events
|
||||
from .kickban import KickBanMixin
|
||||
from .movetocore import MoveToCore
|
||||
from .mutes import MuteMixin
|
||||
from .names import ModInfo
|
||||
from .slowmode import Slowmode
|
||||
@@ -21,7 +20,7 @@ from .settings import ModSettings
|
||||
|
||||
_ = T_ = Translator("Mod", __file__)
|
||||
|
||||
__version__ = "1.1.0"
|
||||
__version__ = "1.2.0"
|
||||
|
||||
|
||||
class CompositeMetaClass(type(commands.Cog), type(ABC)):
|
||||
@@ -38,7 +37,6 @@ class Mod(
|
||||
ModSettings,
|
||||
Events,
|
||||
KickBanMixin,
|
||||
MoveToCore,
|
||||
MuteMixin,
|
||||
ModInfo,
|
||||
Slowmode,
|
||||
@@ -111,8 +109,16 @@ class Mod(
|
||||
"Please use `[p]moveignoredchannels` if "
|
||||
"you were previously using these functions."
|
||||
)
|
||||
self.bot.loop.create_task(send_to_owners_with_prefix_replaced(self.bot, msg))
|
||||
await self.settings.version.set(__version__)
|
||||
self.bot.loop.create_task(self.bot.send_to_owners_with_prefix_replaced(msg))
|
||||
await self.settings.version.set("1.1.0")
|
||||
if await self.settings.version() < "1.2.0":
|
||||
msg = _(
|
||||
"Delete delay settings have been moved. "
|
||||
"Please use `[p]movedeletedelay` if "
|
||||
"you were previously using these functions."
|
||||
)
|
||||
self.bot.loop.create_task(self.bot.send_to_owners_with_prefix_replaced(msg))
|
||||
await self.settings.version.set("1.2.0")
|
||||
|
||||
@commands.command()
|
||||
@commands.is_owner()
|
||||
@@ -127,3 +133,17 @@ class Mod(
|
||||
await self.bot._config.channel_from_id(channel_id).ignored.set(settings["ignored"])
|
||||
await self.settings.channel_from_id(channel_id).clear()
|
||||
await ctx.send(_("Ignored channels and guilds restored."))
|
||||
|
||||
@commands.command()
|
||||
@commands.is_owner()
|
||||
async def movedeletedelay(self, ctx: commands.Context) -> None:
|
||||
"""
|
||||
Move deletedelay settings to core
|
||||
"""
|
||||
all_guilds = await self.settings.all_guilds()
|
||||
for guild_id, settings in all_guilds.items():
|
||||
await self.bot._config.guild_from_id(guild_id).delete_delay.set(
|
||||
settings["delete_delay"]
|
||||
)
|
||||
await self.settings.guild_from_id(guild_id).delete_delay.clear()
|
||||
await ctx.send(_("Delete delay settings restored."))
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
import logging
|
||||
import asyncio
|
||||
import contextlib
|
||||
|
||||
import discord
|
||||
from redbot.core import commands, checks, i18n
|
||||
from redbot.core.utils.chat_formatting import box
|
||||
from .abc import MixinMeta
|
||||
|
||||
log = logging.getLogger("red.mod")
|
||||
_ = i18n.Translator("Mod", __file__)
|
||||
|
||||
|
||||
# TODO: Empty this to core red.
|
||||
class MoveToCore(MixinMeta):
|
||||
"""
|
||||
Mixin for things which should really not be in mod, but have not been moved out yet.
|
||||
"""
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_command_completion(self, ctx: commands.Context):
|
||||
await self._delete_delay(ctx)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_command_error(self, ctx: commands.Context, error: Exception):
|
||||
# Every message which isn't a command but which
|
||||
# starts with a bot prefix is dispatched as a command error
|
||||
if not isinstance(error, commands.CommandNotFound):
|
||||
await self._delete_delay(ctx)
|
||||
|
||||
async def _delete_delay(self, ctx: commands.Context):
|
||||
"""Currently used for:
|
||||
* delete delay"""
|
||||
guild = ctx.guild
|
||||
if guild is None:
|
||||
return
|
||||
message = ctx.message
|
||||
delay = await self.settings.guild(guild).delete_delay()
|
||||
|
||||
if delay == -1:
|
||||
return
|
||||
|
||||
async def _delete_helper(m):
|
||||
with contextlib.suppress(discord.HTTPException):
|
||||
await m.delete()
|
||||
log.debug("Deleted command msg {}".format(m.id))
|
||||
|
||||
await asyncio.sleep(delay)
|
||||
await _delete_helper(message)
|
||||
@@ -157,36 +157,6 @@ class ModSettings(MixinMeta):
|
||||
else:
|
||||
await ctx.send(_("Repeated messages will be ignored."))
|
||||
|
||||
@modset.command()
|
||||
@commands.guild_only()
|
||||
async def deletedelay(self, ctx: commands.Context, time: int = None):
|
||||
"""Set the delay until the bot removes the command message.
|
||||
|
||||
Must be between -1 and 60.
|
||||
|
||||
Set to -1 to disable this feature.
|
||||
"""
|
||||
guild = ctx.guild
|
||||
if time is not None:
|
||||
time = min(max(time, -1), 60) # Enforces the time limits
|
||||
await self.settings.guild(guild).delete_delay.set(time)
|
||||
if time == -1:
|
||||
await ctx.send(_("Command deleting disabled."))
|
||||
else:
|
||||
await ctx.send(_("Delete delay set to {num} seconds.").format(num=time))
|
||||
else:
|
||||
delay = await self.settings.guild(guild).delete_delay()
|
||||
if delay != -1:
|
||||
await ctx.send(
|
||||
_(
|
||||
"Bot will delete command messages after"
|
||||
" {num} seconds. Set this value to -1 to"
|
||||
" stop deleting messages"
|
||||
).format(num=delay)
|
||||
)
|
||||
else:
|
||||
await ctx.send(_("I will not delete command messages."))
|
||||
|
||||
@modset.command()
|
||||
@commands.guild_only()
|
||||
async def reinvite(self, ctx: commands.Context):
|
||||
|
||||
Reference in New Issue
Block a user