mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-11-06 11:18:54 -05:00
[Mod] Added [p]modset deletedelay (#445)
Deletes issued command after X seconds
This commit is contained in:
parent
67de9a45fe
commit
c34bf36dee
59
cogs/mod.py
59
cogs/mod.py
@ -62,11 +62,14 @@ class Mod:
|
||||
await send_cmd_help(ctx)
|
||||
roles = settings.get_server(server).copy()
|
||||
_settings = {**self.settings[server.id], **roles}
|
||||
if "delete_delay" not in _settings:
|
||||
_settings["delete_delay"] = -1
|
||||
msg = ("Admin role: {ADMIN_ROLE}\n"
|
||||
"Mod role: {MOD_ROLE}\n"
|
||||
"Mod-log: {mod-log}\n"
|
||||
"Delete repeats: {delete_repeats}\n"
|
||||
"Ban mention spam: {ban_mention_spam}\n"
|
||||
"Delete delay: {delete_delay}\n"
|
||||
"".format(**_settings))
|
||||
await self.bot.say(box(msg))
|
||||
|
||||
@ -149,6 +152,36 @@ class Mod:
|
||||
dataIO.save_json("data/mod/modlog.json", self.cases)
|
||||
await self.bot.say("Cases have been reset.")
|
||||
|
||||
@modset.command(pass_context=True, no_pm=True)
|
||||
async def deletedelay(self, ctx, time: int=None):
|
||||
"""Sets the delay until the bot removes the command message.
|
||||
Must be between -1 and 60.
|
||||
|
||||
A delay of -1 means the bot will not remove the message."""
|
||||
server = ctx.message.server
|
||||
if time is not None:
|
||||
time = min(max(time, -1), 60) # Enforces the time limits
|
||||
self.settings[server.id]["delete_delay"] = time
|
||||
if time == -1:
|
||||
await self.bot.say("Command deleting disabled.")
|
||||
else:
|
||||
await self.bot.say("Delete delay set to {}"
|
||||
" seconds.".format(time))
|
||||
dataIO.save_json("data/mod/settings.json", self.settings)
|
||||
else:
|
||||
try:
|
||||
delay = self.settings[server.id]["delete_delay"]
|
||||
except KeyError:
|
||||
await self.bot.say("Delete delay not yet set up on this"
|
||||
" server.")
|
||||
else:
|
||||
if delay != -1:
|
||||
await self.bot.say("Bot will delete command messages after"
|
||||
" {} seconds. Set this value to -1 to"
|
||||
" stop deleting messages".format(delay))
|
||||
else:
|
||||
await self.bot.say("I will not delete command messages.")
|
||||
|
||||
@commands.command(no_pm=True, pass_context=True)
|
||||
@checks.admin_or_permissions(kick_members=True)
|
||||
async def kick(self, ctx, user: discord.Member):
|
||||
@ -1230,6 +1263,32 @@ class Mod:
|
||||
self._tmp_banned_cache.remove(author)
|
||||
return False
|
||||
|
||||
async def on_command(self, command, ctx):
|
||||
"""Currently used for:
|
||||
* delete delay"""
|
||||
server = ctx.message.server
|
||||
message = ctx.message
|
||||
try:
|
||||
delay = self.settings[server.id]["delete_delay"]
|
||||
except KeyError:
|
||||
# We have no delay set
|
||||
return
|
||||
|
||||
if delay == -1:
|
||||
return
|
||||
|
||||
async def _delete_helper(bot, message):
|
||||
try:
|
||||
await bot.delete_message(message)
|
||||
logger.debug("Deleted command msg {}".format(message.id))
|
||||
except discord.errors.Forbidden:
|
||||
# Do not have delete permissions
|
||||
logger.debug("Wanted to delete mid {} but no"
|
||||
" permissions".format(message.id))
|
||||
|
||||
await asyncio.sleep(delay)
|
||||
await _delete_helper(self.bot, message)
|
||||
|
||||
async def on_message(self, message):
|
||||
if message.channel.is_private or self.bot.user == message.author \
|
||||
or not isinstance(message.author, discord.Member):
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user