[Mod] Move deletedelay to core (#3638)

* Move deletedelay to core

* line lengths

* address review

* move settings change

* fine...
This commit is contained in:
TrustyJAID
2020-03-21 11:39:58 -06:00
committed by GitHub
parent d957e44e1e
commit b9f07e8684
6 changed files with 84 additions and 84 deletions

View File

@@ -6,6 +6,7 @@ import platform
import re
import shutil
import sys
import contextlib
from collections import namedtuple
from datetime import datetime
from enum import IntEnum
@@ -125,6 +126,7 @@ class RedBase(
fuzzy=False,
disabled_commands=[],
autoimmune_ids=[],
delete_delay=-1,
)
self._config.register_channel(embeds=None, ignored=False)
@@ -1207,6 +1209,26 @@ class RedBase(
"""Wait until our post connection startup is done."""
await self._red_ready.wait()
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._config.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)
class Red(RedBase, discord.AutoShardedClient):
"""

View File

@@ -912,6 +912,37 @@ class Core(commands.Cog, CoreLogic):
for page in pagify(settings):
await ctx.send(box(page))
@checks.guildowner_or_permissions(administrator=True)
@_set.command(name="deletedelay")
@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 ctx.bot._config.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 ctx.bot._config.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."))
@checks.is_owner()
@_set.command(name="description")
async def setdescription(self, ctx: commands.Context, *, description: str = ""):

View File

@@ -134,6 +134,10 @@ def init_events(bot, cli_flags):
if outdated_red_message:
await bot.send_to_owners(outdated_red_message)
@bot.event
async def on_command_completion(ctx: commands.Context):
await bot._delete_delay(ctx)
@bot.event
async def on_command_error(ctx, error, unhandled_by_cog=False):
@@ -144,6 +148,8 @@ def init_events(bot, cli_flags):
if ctx.cog:
if commands.Cog._get_overridden_method(ctx.cog.cog_command_error) is not None:
return
if not isinstance(error, commands.CommandNotFound):
await bot._delete_delay(ctx)
if isinstance(error, commands.MissingRequiredArgument):
await ctx.send_help()