mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-11-21 18:27:59 -05:00
[ModLog] Optimise get_next_case_number() (#2908)
* [ModLog] Optimise get_next_case_number() Signed-off-by: Toby Harradine <tobyharradine@gmail.com> * Address reviews Signed-off-by: Toby Harradine <tobyharradine@gmail.com> * Add changelog entry Signed-off-by: Toby Harradine <tobyharradine@gmail.com> * Delete get_next_case_number Signed-off-by: Toby Harradine <tobyharradine@gmail.com> * Add modlog.get_latest_case() and fix `[p]reason` Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
This commit is contained in:
committed by
Michael H
parent
9362dd9465
commit
ef8b9b81c3
@@ -150,41 +150,28 @@ class ModLog(commands.Cog):
|
||||
guild = ctx.guild
|
||||
if case is None:
|
||||
# get the latest case
|
||||
case = int(await modlog.get_next_case_number(guild)) - 1
|
||||
try:
|
||||
case_before = await modlog.get_case(case, guild, self.bot)
|
||||
except RuntimeError:
|
||||
await ctx.send(_("That case does not exist!"))
|
||||
return
|
||||
else:
|
||||
if case_before.moderator is None:
|
||||
# No mod set, so attempt to find out if the author
|
||||
# triggered the case creation with an action
|
||||
bot_perms = guild.me.guild_permissions
|
||||
if bot_perms.view_audit_log:
|
||||
case_type = await modlog.get_casetype(case_before.action_type, guild)
|
||||
if case_type is not None and case_type.audit_type is not None:
|
||||
audit_type = getattr(discord.AuditLogAction, case_type.audit_type)
|
||||
if audit_type:
|
||||
audit_case = None
|
||||
async for entry in guild.audit_logs(action=audit_type):
|
||||
if (
|
||||
entry.target.id == case_before.user.id
|
||||
and entry.action == audit_type
|
||||
):
|
||||
audit_case = entry
|
||||
break
|
||||
if audit_case:
|
||||
case_before.moderator = audit_case.user
|
||||
is_guild_owner = author == guild.owner
|
||||
is_case_author = author == case_before.moderator
|
||||
author_is_mod = await ctx.bot.is_mod(author)
|
||||
if not (is_guild_owner or is_case_author or author_is_mod):
|
||||
await ctx.send(_("You are not authorized to modify that case!"))
|
||||
case_obj = await modlog.get_latest_case(guild, self.bot)
|
||||
if case_obj is None:
|
||||
await ctx.send(_("There are no modlog cases in this server."))
|
||||
return
|
||||
to_modify = {"reason": reason}
|
||||
if case_before.moderator != author:
|
||||
to_modify["amended_by"] = author
|
||||
to_modify["modified_at"] = ctx.message.created_at.timestamp()
|
||||
await case_before.edit(to_modify)
|
||||
await ctx.send(_("Reason has been updated."))
|
||||
else:
|
||||
try:
|
||||
case_obj = await modlog.get_case(case, guild, self.bot)
|
||||
except RuntimeError:
|
||||
await ctx.send(_("That case does not exist!"))
|
||||
return
|
||||
|
||||
is_guild_owner = author == guild.owner
|
||||
is_case_author = author == case_obj.moderator
|
||||
author_is_mod = await ctx.bot.is_mod(author)
|
||||
if not (is_guild_owner or is_case_author or author_is_mod):
|
||||
await ctx.send(_("You are not authorized to modify that case!"))
|
||||
return
|
||||
to_modify = {"reason": reason}
|
||||
if case_obj.moderator != author:
|
||||
to_modify["amended_by"] = author
|
||||
to_modify["modified_at"] = ctx.message.created_at.timestamp()
|
||||
await case_obj.edit(to_modify)
|
||||
await ctx.send(
|
||||
_("Reason for case #{num} has been updated.").format(num=case_obj.case_number)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user