fix(aurora): bandaid fixes so pylint passes
these are not good changes in the slightest and are only here because pylint is failing otherwise, you should really be using aurora v3 instead of v2 even though it's in development
This commit is contained in:
parent
cc1745a9d2
commit
336e01456c
2 changed files with 244 additions and 323 deletions
333
aurora/aurora.py
333
aurora/aurora.py
|
@ -40,7 +40,7 @@ class Aurora(commands.Cog):
|
|||
This cog stores all of its data in an SQLite database."""
|
||||
|
||||
__author__ = ["cswimr"]
|
||||
__version__ = "2.1.3"
|
||||
__version__ = "2.1.4"
|
||||
__documentation__ = "https://seacogs.coastalcommits.com/aurora/"
|
||||
|
||||
async def red_delete_data_for_user(self, *, requester, user_id: int):
|
||||
|
@ -70,7 +70,8 @@ class Aurora(commands.Cog):
|
|||
await config.user_from_id(user_id).clear()
|
||||
else:
|
||||
logger.warning(
|
||||
"Invalid requester passed to red_delete_data_for_user: %s", requester
|
||||
"Invalid requester passed to red_delete_data_for_user: %s",
|
||||
requester,
|
||||
)
|
||||
|
||||
def __init__(self, bot: Red):
|
||||
|
@ -135,8 +136,7 @@ class Aurora(commands.Cog):
|
|||
if await config.guild(entry.guild).ignore_other_bots() is True:
|
||||
if entry.user.bot or entry.target.bot:
|
||||
return
|
||||
else:
|
||||
if entry.user.id == self.bot.user.id:
|
||||
elif entry.user.id == self.bot.user.id:
|
||||
return
|
||||
|
||||
duration = "NULL"
|
||||
|
@ -159,10 +159,10 @@ class Aurora(commands.Cog):
|
|||
elif entry.action == discord.AuditLogAction.member_update:
|
||||
if entry.after.timed_out_until is not None:
|
||||
timed_out_until_aware = entry.after.timed_out_until.replace(
|
||||
tzinfo=timezone.utc
|
||||
tzinfo=timezone.utc,
|
||||
)
|
||||
duration_datetime = timed_out_until_aware - datetime.now(
|
||||
tz=timezone.utc
|
||||
tz=timezone.utc,
|
||||
)
|
||||
minutes = round(duration_datetime.total_seconds() / 60)
|
||||
duration = timedelta(minutes=minutes)
|
||||
|
@ -209,7 +209,7 @@ class Aurora(commands.Cog):
|
|||
return
|
||||
|
||||
await interaction.response.send_message(
|
||||
content=f"{target.mention} has recieved a note!\n**Reason** - `{reason}`"
|
||||
content=f"{target.mention} has recieved a note!\n**Reason** - `{reason}`",
|
||||
)
|
||||
|
||||
if silent is None:
|
||||
|
@ -239,7 +239,7 @@ class Aurora(commands.Cog):
|
|||
reason,
|
||||
)
|
||||
await interaction.edit_original_response(
|
||||
content=f"{target.mention} has received a note! (Case `#{moderation_id:,}`)\n**Reason** - `{reason}`"
|
||||
content=f"{target.mention} has received a note! (Case `#{moderation_id:,}`)\n**Reason** - `{reason}`",
|
||||
)
|
||||
await log(interaction, moderation_id)
|
||||
|
||||
|
@ -268,7 +268,7 @@ class Aurora(commands.Cog):
|
|||
return
|
||||
|
||||
await interaction.response.send_message(
|
||||
content=f"{target.mention} has been warned!\n**Reason** - `{reason}`"
|
||||
content=f"{target.mention} has been warned!\n**Reason** - `{reason}`",
|
||||
)
|
||||
|
||||
if silent is None:
|
||||
|
@ -298,7 +298,7 @@ class Aurora(commands.Cog):
|
|||
reason,
|
||||
)
|
||||
await interaction.edit_original_response(
|
||||
content=f"{target.mention} has been warned! (Case `#{moderation_id:,}`)\n**Reason** - `{reason}`"
|
||||
content=f"{target.mention} has been warned! (Case `#{moderation_id:,}`)\n**Reason** - `{reason}`",
|
||||
)
|
||||
await log(interaction, moderation_id)
|
||||
|
||||
|
@ -342,7 +342,8 @@ class Aurora(commands.Cog):
|
|||
parsed_time = parse_timedelta(duration)
|
||||
if parsed_time is None:
|
||||
await interaction.response.send_message(
|
||||
content=error("Please provide a valid duration!"), ephemeral=True
|
||||
content=error("Please provide a valid duration!"),
|
||||
ephemeral=True,
|
||||
)
|
||||
return
|
||||
else:
|
||||
|
@ -350,12 +351,15 @@ class Aurora(commands.Cog):
|
|||
|
||||
if role.id not in addrole_whitelist:
|
||||
await interaction.response.send_message(
|
||||
content=error("That role isn't whitelisted!"), ephemeral=True
|
||||
content=error("That role isn't whitelisted!"),
|
||||
ephemeral=True,
|
||||
)
|
||||
return
|
||||
|
||||
if not await check_moddable(
|
||||
target, interaction, ["moderate_members", "manage_roles"]
|
||||
target,
|
||||
interaction,
|
||||
["moderate_members", "manage_roles"],
|
||||
):
|
||||
return
|
||||
|
||||
|
@ -390,7 +394,7 @@ class Aurora(commands.Cog):
|
|||
reason=f"Role added by {interaction.user.id}{' for ' + humanize_timedelta(timedelta=parsed_time) if parsed_time != 'NULL' else ''} for: {reason}",
|
||||
)
|
||||
response: discord.WebhookMessage = await interaction.followup.send(
|
||||
content=f"{target.mention} has been given the {role.mention} role{' for ' + humanize_timedelta(timedelta=parsed_time) if parsed_time != 'NULL' else ''}!\n**Reason** - `{reason}`"
|
||||
content=f"{target.mention} has been given the {role.mention} role{' for ' + humanize_timedelta(timedelta=parsed_time) if parsed_time != 'NULL' else ''}!\n**Reason** - `{reason}`",
|
||||
)
|
||||
|
||||
moderation_id = await mysql_log(
|
||||
|
@ -448,7 +452,8 @@ class Aurora(commands.Cog):
|
|||
parsed_time = parse_timedelta(duration)
|
||||
if parsed_time is None:
|
||||
await interaction.response.send_message(
|
||||
content=error("Please provide a valid duration!"), ephemeral=True
|
||||
content=error("Please provide a valid duration!"),
|
||||
ephemeral=True,
|
||||
)
|
||||
return
|
||||
else:
|
||||
|
@ -456,12 +461,15 @@ class Aurora(commands.Cog):
|
|||
|
||||
if role.id not in addrole_whitelist:
|
||||
await interaction.response.send_message(
|
||||
content=error("That role isn't whitelisted!"), ephemeral=True
|
||||
content=error("That role isn't whitelisted!"),
|
||||
ephemeral=True,
|
||||
)
|
||||
return
|
||||
|
||||
if not await check_moddable(
|
||||
target, interaction, ["moderate_members", "manage_roles"]
|
||||
target,
|
||||
interaction,
|
||||
["moderate_members", "manage_roles"],
|
||||
):
|
||||
return
|
||||
|
||||
|
@ -496,7 +504,7 @@ class Aurora(commands.Cog):
|
|||
reason=f"Role removed by {interaction.user.id}{' for ' + humanize_timedelta(timedelta=parsed_time) if parsed_time != 'NULL' else ''} for: {reason}",
|
||||
)
|
||||
response: discord.WebhookMessage = await interaction.followup.send(
|
||||
content=f"{target.mention} has had the {role.mention} role removed{' for ' + humanize_timedelta(timedelta=parsed_time) if parsed_time != 'NULL' else ''}!\n**Reason** - `{reason}`"
|
||||
content=f"{target.mention} has had the {role.mention} role removed{' for ' + humanize_timedelta(timedelta=parsed_time) if parsed_time != 'NULL' else ''}!\n**Reason** - `{reason}`",
|
||||
)
|
||||
|
||||
moderation_id = await mysql_log(
|
||||
|
@ -553,21 +561,24 @@ class Aurora(commands.Cog):
|
|||
parsed_time = parse_timedelta(duration, maximum=timedelta(days=28))
|
||||
if parsed_time is None:
|
||||
await interaction.response.send_message(
|
||||
error("Please provide a valid duration!"), ephemeral=True
|
||||
error("Please provide a valid duration!"),
|
||||
ephemeral=True,
|
||||
)
|
||||
return
|
||||
except commands.BadArgument:
|
||||
await interaction.response.send_message(
|
||||
error("Please provide a duration that is less than 28 days."), ephemeral=True
|
||||
error("Please provide a duration that is less than 28 days."),
|
||||
ephemeral=True,
|
||||
)
|
||||
return
|
||||
|
||||
await target.timeout(
|
||||
parsed_time, reason=f"Muted by {interaction.user.id} for: {reason}"
|
||||
parsed_time,
|
||||
reason=f"Muted by {interaction.user.id} for: {reason}",
|
||||
)
|
||||
|
||||
await interaction.response.send_message(
|
||||
content=f"{target.mention} has been muted for {humanize_timedelta(timedelta=parsed_time)}!\n**Reason** - `{reason}`"
|
||||
content=f"{target.mention} has been muted for {humanize_timedelta(timedelta=parsed_time)}!\n**Reason** - `{reason}`",
|
||||
)
|
||||
|
||||
if silent is None:
|
||||
|
@ -598,7 +609,7 @@ class Aurora(commands.Cog):
|
|||
reason,
|
||||
)
|
||||
await interaction.edit_original_response(
|
||||
content=f"{target.mention} has been muted for {humanize_timedelta(timedelta=parsed_time)}! (Case `#{moderation_id:,}`)\n**Reason** - `{reason}`"
|
||||
content=f"{target.mention} has been muted for {humanize_timedelta(timedelta=parsed_time)}! (Case `#{moderation_id:,}`)\n**Reason** - `{reason}`",
|
||||
)
|
||||
await log(interaction, moderation_id)
|
||||
|
||||
|
@ -636,14 +647,15 @@ class Aurora(commands.Cog):
|
|||
|
||||
if reason:
|
||||
await target.timeout(
|
||||
None, reason=f"Unmuted by {interaction.user.id} for: {reason}"
|
||||
None,
|
||||
reason=f"Unmuted by {interaction.user.id} for: {reason}",
|
||||
)
|
||||
else:
|
||||
await target.timeout(None, reason=f"Unbanned by {interaction.user.id}")
|
||||
reason = "No reason given."
|
||||
|
||||
await interaction.response.send_message(
|
||||
content=f"{target.mention} has been unmuted!\n**Reason** - `{reason}`"
|
||||
content=f"{target.mention} has been unmuted!\n**Reason** - `{reason}`",
|
||||
)
|
||||
|
||||
if silent is None:
|
||||
|
@ -673,7 +685,7 @@ class Aurora(commands.Cog):
|
|||
reason,
|
||||
)
|
||||
await interaction.edit_original_response(
|
||||
content=f"{target.mention} has been unmuted! (Case `#{moderation_id:,}`)\n**Reason** - `{reason}`"
|
||||
content=f"{target.mention} has been unmuted! (Case `#{moderation_id:,}`)\n**Reason** - `{reason}`",
|
||||
)
|
||||
await log(interaction, moderation_id)
|
||||
|
||||
|
@ -702,7 +714,7 @@ class Aurora(commands.Cog):
|
|||
return
|
||||
|
||||
await interaction.response.send_message(
|
||||
content=f"{target.mention} has been kicked!\n**Reason** - `{reason}`"
|
||||
content=f"{target.mention} has been kicked!\n**Reason** - `{reason}`",
|
||||
)
|
||||
|
||||
if silent is None:
|
||||
|
@ -734,7 +746,7 @@ class Aurora(commands.Cog):
|
|||
reason,
|
||||
)
|
||||
await interaction.edit_original_response(
|
||||
content=f"{target.mention} has been kicked! (Case `#{moderation_id:,}`)\n**Reason** - `{reason}`"
|
||||
content=f"{target.mention} has been kicked! (Case `#{moderation_id:,}`)\n**Reason** - `{reason}`",
|
||||
)
|
||||
await log(interaction, moderation_id)
|
||||
|
||||
|
@ -750,7 +762,7 @@ class Aurora(commands.Cog):
|
|||
Choice(name="1 Day", value=86400),
|
||||
Choice(name="3 Days", value=259200),
|
||||
Choice(name="7 Days", value=604800),
|
||||
]
|
||||
],
|
||||
)
|
||||
async def ban(
|
||||
self,
|
||||
|
@ -786,7 +798,8 @@ class Aurora(commands.Cog):
|
|||
try:
|
||||
await interaction.guild.fetch_ban(target)
|
||||
await interaction.response.send_message(
|
||||
content=error(f"{target.mention} is already banned!"), ephemeral=True
|
||||
content=error(f"{target.mention} is already banned!"),
|
||||
ephemeral=True,
|
||||
)
|
||||
return
|
||||
except discord.errors.NotFound:
|
||||
|
@ -796,19 +809,21 @@ class Aurora(commands.Cog):
|
|||
parsed_time = parse_relativedelta(duration)
|
||||
if parsed_time is None:
|
||||
await interaction.response.send_message(
|
||||
content=error("Please provide a valid duration!"), ephemeral=True
|
||||
content=error("Please provide a valid duration!"),
|
||||
ephemeral=True,
|
||||
)
|
||||
return
|
||||
try:
|
||||
parsed_time = timedelta_from_relativedelta(parsed_time)
|
||||
except ValueError:
|
||||
await interaction.response.send_message(
|
||||
content=error("Please provide a valid duration!"), ephemeral=True
|
||||
content=error("Please provide a valid duration!"),
|
||||
ephemeral=True,
|
||||
)
|
||||
return
|
||||
|
||||
await interaction.response.send_message(
|
||||
content=f"{target.mention} has been banned for {humanize_timedelta(timedelta=parsed_time)}!\n**Reason** - `{reason}`"
|
||||
content=f"{target.mention} has been banned for {humanize_timedelta(timedelta=parsed_time)}!\n**Reason** - `{reason}`",
|
||||
)
|
||||
|
||||
try:
|
||||
|
@ -842,7 +857,7 @@ class Aurora(commands.Cog):
|
|||
reason,
|
||||
)
|
||||
await interaction.edit_original_response(
|
||||
content=f"{target.mention} has been banned for {humanize_timedelta(timedelta=parsed_time)}! (Case `#{moderation_id}`)\n**Reason** - `{reason}`"
|
||||
content=f"{target.mention} has been banned for {humanize_timedelta(timedelta=parsed_time)}! (Case `#{moderation_id}`)\n**Reason** - `{reason}`",
|
||||
)
|
||||
await log(interaction, moderation_id)
|
||||
|
||||
|
@ -850,7 +865,7 @@ class Aurora(commands.Cog):
|
|||
await send_evidenceformat(interaction, case)
|
||||
else:
|
||||
await interaction.response.send_message(
|
||||
content=f"{target.mention} has been banned!\n**Reason** - `{reason}`"
|
||||
content=f"{target.mention} has been banned!\n**Reason** - `{reason}`",
|
||||
)
|
||||
|
||||
if silent is None:
|
||||
|
@ -886,7 +901,7 @@ class Aurora(commands.Cog):
|
|||
reason,
|
||||
)
|
||||
await interaction.edit_original_response(
|
||||
content=f"{target.mention} has been banned! (Case `#{moderation_id:,}`)\n**Reason** - `{reason}`"
|
||||
content=f"{target.mention} has been banned! (Case `#{moderation_id:,}`)\n**Reason** - `{reason}`",
|
||||
)
|
||||
await log(interaction, moderation_id)
|
||||
|
||||
|
@ -918,22 +933,25 @@ class Aurora(commands.Cog):
|
|||
await interaction.guild.fetch_ban(target)
|
||||
except discord.errors.NotFound:
|
||||
await interaction.response.send_message(
|
||||
content=error(f"{target.mention} is not banned!"), ephemeral=True
|
||||
content=error(f"{target.mention} is not banned!"),
|
||||
ephemeral=True,
|
||||
)
|
||||
return
|
||||
|
||||
if reason:
|
||||
await interaction.guild.unban(
|
||||
target, reason=f"Unbanned by {interaction.user.id} for: {reason}"
|
||||
target,
|
||||
reason=f"Unbanned by {interaction.user.id} for: {reason}",
|
||||
)
|
||||
else:
|
||||
await interaction.guild.unban(
|
||||
target, reason=f"Unbanned by {interaction.user.id}"
|
||||
target,
|
||||
reason=f"Unbanned by {interaction.user.id}",
|
||||
)
|
||||
reason = "No reason given."
|
||||
|
||||
await interaction.response.send_message(
|
||||
content=f"{target.mention} has been unbanned!\n**Reason** - `{reason}`"
|
||||
content=f"{target.mention} has been unbanned!\n**Reason** - `{reason}`",
|
||||
)
|
||||
|
||||
if silent is None:
|
||||
|
@ -963,7 +981,7 @@ class Aurora(commands.Cog):
|
|||
reason,
|
||||
)
|
||||
await interaction.edit_original_response(
|
||||
content=f"{target.mention} has been unbanned! (Case `#{moderation_id:,}`)\n**Reason** - `{reason}`"
|
||||
content=f"{target.mention} has been unbanned! (Case `#{moderation_id:,}`)\n**Reason** - `{reason}`",
|
||||
)
|
||||
await log(interaction, moderation_id)
|
||||
|
||||
|
@ -1001,42 +1019,28 @@ class Aurora(commands.Cog):
|
|||
export: bool
|
||||
Exports the server's entire moderation history to a JSON file"""
|
||||
if ephemeral is None:
|
||||
ephemeral = (
|
||||
await config.user(interaction.user).history_ephemeral()
|
||||
or await config.guild(interaction.guild).history_ephemeral()
|
||||
or False
|
||||
)
|
||||
ephemeral = await config.user(interaction.user).history_ephemeral() or await config.guild(interaction.guild).history_ephemeral() or False
|
||||
|
||||
if inline is None:
|
||||
inline = (
|
||||
await config.user(interaction.user).history_inline()
|
||||
or await config.guild(interaction.guild).history_inline()
|
||||
or False
|
||||
)
|
||||
inline = await config.user(interaction.user).history_inline() or await config.guild(interaction.guild).history_inline() or False
|
||||
|
||||
if pagesize is None:
|
||||
if inline is True:
|
||||
pagesize = (
|
||||
await config.user(interaction.user).history_inline_pagesize()
|
||||
or await config.guild(interaction.guild).history_inline_pagesize()
|
||||
or 6
|
||||
)
|
||||
pagesize = await config.user(interaction.user).history_inline_pagesize() or await config.guild(interaction.guild).history_inline_pagesize() or 6
|
||||
else:
|
||||
pagesize = (
|
||||
await config.user(interaction.user).history_pagesize()
|
||||
or await config.guild(interaction.guild).history_pagesize()
|
||||
or 5
|
||||
)
|
||||
pagesize = await config.user(interaction.user).history_pagesize() or await config.guild(interaction.guild).history_pagesize() or 5
|
||||
|
||||
await interaction.response.defer(ephemeral=ephemeral)
|
||||
|
||||
permissions = check_permissions(
|
||||
interaction.client.user, ["embed_links"], interaction
|
||||
interaction.client.user,
|
||||
["embed_links"],
|
||||
interaction,
|
||||
)
|
||||
if permissions:
|
||||
await interaction.followup.send(
|
||||
error(
|
||||
f"I do not have the `{permissions}` permission, required for this action."
|
||||
f"I do not have the `{permissions}` permission, required for this action.",
|
||||
),
|
||||
ephemeral=True,
|
||||
)
|
||||
|
@ -1061,18 +1065,15 @@ class Aurora(commands.Cog):
|
|||
cases.append(case)
|
||||
|
||||
try:
|
||||
filename = (
|
||||
str(data_manager.cog_data_path(cog_instance=self))
|
||||
+ str(os.sep)
|
||||
+ f"moderation_{interaction.guild.id}.json"
|
||||
)
|
||||
filename = str(data_manager.cog_data_path(cog_instance=self)) + str(os.sep) + f"moderation_{interaction.guild.id}.json"
|
||||
|
||||
with open(filename, "w", encoding="utf-8") as f:
|
||||
json.dump(cases, f, indent=2)
|
||||
|
||||
await interaction.followup.send(
|
||||
file=discord.File(
|
||||
filename, f"moderation_{interaction.guild.id}.json"
|
||||
filename,
|
||||
f"moderation_{interaction.guild.id}.json",
|
||||
),
|
||||
ephemeral=ephemeral,
|
||||
)
|
||||
|
@ -1081,7 +1082,7 @@ class Aurora(commands.Cog):
|
|||
except json.JSONDecodeError as e:
|
||||
await interaction.followup.send(
|
||||
content=error(
|
||||
"An error occured while exporting the moderation history.\nError:\n"
|
||||
"An error occured while exporting the moderation history.\nError:\n",
|
||||
)
|
||||
+ box(e, "py"),
|
||||
ephemeral=ephemeral,
|
||||
|
@ -1127,7 +1128,7 @@ class Aurora(commands.Cog):
|
|||
embed = discord.Embed(color=await self.bot.get_embed_color(interaction.channel))
|
||||
embed.set_author(icon_url=interaction.guild.icon.url, name="Infraction History")
|
||||
embed.set_footer(
|
||||
text=f"Page {page:,}/{page_quantity:,} | {case_quantity:,} Results"
|
||||
text=f"Page {page:,}/{page_quantity:,} | {case_quantity:,} Results",
|
||||
)
|
||||
|
||||
memory_dict = {}
|
||||
|
@ -1136,33 +1137,30 @@ class Aurora(commands.Cog):
|
|||
if case["target_id"] not in memory_dict:
|
||||
if case["target_type"] == "USER":
|
||||
memory_dict[str(case["target_id"])] = await fetch_user_dict(
|
||||
interaction.client, case["target_id"]
|
||||
interaction.client,
|
||||
case["target_id"],
|
||||
)
|
||||
elif case["target_type"] == "CHANNEL":
|
||||
memory_dict[str(case["target_id"])] = await fetch_channel_dict(
|
||||
interaction.guild, case["target_id"]
|
||||
interaction.guild,
|
||||
case["target_id"],
|
||||
)
|
||||
target_user = memory_dict[str(case["target_id"])]
|
||||
|
||||
if case["target_type"] == "USER":
|
||||
target_name = (
|
||||
f"`{target_user['name']}`"
|
||||
if target_user["discriminator"] == "0"
|
||||
else f"`{target_user['name']}#{target_user['discriminator']}`"
|
||||
)
|
||||
target_name = f"`{target_user['name']}`" if target_user["discriminator"] == "0" else f"`{target_user['name']}#{target_user['discriminator']}`"
|
||||
elif case["target_type"] == "CHANNEL":
|
||||
target_name = f"`{target_user['mention']}`"
|
||||
else:
|
||||
target_name = ""
|
||||
|
||||
if case["moderator_id"] not in memory_dict:
|
||||
memory_dict[str(case["moderator_id"])] = await fetch_user_dict(
|
||||
interaction.client, case["moderator_id"]
|
||||
interaction.client,
|
||||
case["moderator_id"],
|
||||
)
|
||||
moderator_user = memory_dict[str(case["moderator_id"])]
|
||||
moderator_name = (
|
||||
f"`{moderator_user['name']}`"
|
||||
if moderator_user["discriminator"] == "0"
|
||||
else f"`{moderator_user['name']}#{moderator_user['discriminator']}`"
|
||||
)
|
||||
moderator_name = f"`{moderator_user['name']}`" if moderator_user["discriminator"] == "0" else f"`{moderator_user['name']}#{moderator_user['discriminator']}`"
|
||||
|
||||
field_name = f"Case #{case['moderation_id']:,} ({str.title(case['moderation_type'])})"
|
||||
field_value = f"**Target:** {target_name} ({target_user['id']})\n**Moderator:** {moderator_name} ({moderator_user['id']})"
|
||||
|
@ -1177,20 +1175,15 @@ class Aurora(commands.Cog):
|
|||
**{
|
||||
unit: int(val)
|
||||
for unit, val in zip(
|
||||
["hours", "minutes", "seconds"], case["duration"].split(":")
|
||||
["hours", "minutes", "seconds"],
|
||||
case["duration"].split(":"),
|
||||
)
|
||||
}
|
||||
)
|
||||
duration_embed = (
|
||||
f"{humanize_timedelta(timedelta=td)} | <t:{case['end_timestamp']}:R>"
|
||||
if bool(case["expired"]) is False
|
||||
else f"{humanize_timedelta(timedelta=td)} | Expired"
|
||||
},
|
||||
)
|
||||
duration_embed = f"{humanize_timedelta(timedelta=td)} | <t:{case['end_timestamp']}:R>" if bool(case["expired"]) is False else f"{humanize_timedelta(timedelta=td)} | Expired"
|
||||
field_value += f"\n**Duration:** {duration_embed}"
|
||||
|
||||
field_value += (
|
||||
f"\n**Timestamp:** <t:{case['timestamp']}> | <t:{case['timestamp']}:R>"
|
||||
)
|
||||
field_value += f"\n**Timestamp:** <t:{case['timestamp']}> | <t:{case['timestamp']}:R>"
|
||||
|
||||
if case["role_id"] != "0":
|
||||
role = interaction.guild.get_role(int(case["role_id"]))
|
||||
|
@ -1208,7 +1201,10 @@ class Aurora(commands.Cog):
|
|||
|
||||
@app_commands.command(name="resolve")
|
||||
async def resolve(
|
||||
self, interaction: discord.Interaction, case: int, reason: str = None
|
||||
self,
|
||||
interaction: discord.Interaction,
|
||||
case: int,
|
||||
reason: str = None,
|
||||
):
|
||||
"""Resolve a specific case.
|
||||
|
||||
|
@ -1226,7 +1222,7 @@ class Aurora(commands.Cog):
|
|||
if permissions:
|
||||
await interaction.response.send_message(
|
||||
error(
|
||||
f"I do not have the `{permissions}` permission, required for this action."
|
||||
f"I do not have the `{permissions}` permission, required for this action.",
|
||||
),
|
||||
ephemeral=True,
|
||||
)
|
||||
|
@ -1235,9 +1231,7 @@ class Aurora(commands.Cog):
|
|||
database = connect()
|
||||
cursor = database.cursor()
|
||||
|
||||
query_1 = (
|
||||
f"SELECT * FROM moderation_{interaction.guild.id} WHERE moderation_id = ?;"
|
||||
)
|
||||
query_1 = f"SELECT * FROM moderation_{interaction.guild.id} WHERE moderation_id = ?;"
|
||||
cursor.execute(query_1, (case,))
|
||||
result_1 = cursor.fetchone()
|
||||
if result_1 is None or case == 0:
|
||||
|
@ -1253,7 +1247,7 @@ class Aurora(commands.Cog):
|
|||
if result_2 is None:
|
||||
await interaction.response.send_message(
|
||||
content=error(
|
||||
f"This moderation has already been resolved!\nUse `/case {case}` for more information."
|
||||
f"This moderation has already been resolved!\nUse `/case {case}` for more information.",
|
||||
),
|
||||
ephemeral=True,
|
||||
)
|
||||
|
@ -1267,7 +1261,7 @@ class Aurora(commands.Cog):
|
|||
if len(changes) > 25:
|
||||
await interaction.response.send_message(
|
||||
content=error(
|
||||
"Due to limitations with Discord's embed system, you cannot edit a case more than 25 times."
|
||||
"Due to limitations with Discord's embed system, you cannot edit a case more than 25 times.",
|
||||
),
|
||||
ephemeral=True,
|
||||
)
|
||||
|
@ -1279,7 +1273,7 @@ class Aurora(commands.Cog):
|
|||
"timestamp": case_dict["timestamp"],
|
||||
"reason": case_dict["reason"],
|
||||
"user_id": case_dict["moderator_id"],
|
||||
}
|
||||
},
|
||||
)
|
||||
changes.append(
|
||||
{
|
||||
|
@ -1287,7 +1281,7 @@ class Aurora(commands.Cog):
|
|||
"timestamp": int(time.time()),
|
||||
"reason": reason,
|
||||
"user_id": interaction.user.id,
|
||||
}
|
||||
},
|
||||
)
|
||||
|
||||
if case_dict["moderation_type"] in ["UNMUTE", "UNBAN"]:
|
||||
|
@ -1301,11 +1295,12 @@ class Aurora(commands.Cog):
|
|||
if case_dict["moderation_type"] == "MUTE":
|
||||
try:
|
||||
member = await interaction.guild.fetch_member(
|
||||
case_dict["target_id"]
|
||||
case_dict["target_id"],
|
||||
)
|
||||
|
||||
await member.timeout(
|
||||
None, reason=f"Case #{case:,} resolved by {interaction.user.id}"
|
||||
None,
|
||||
reason=f"Case #{case:,} resolved by {interaction.user.id}",
|
||||
)
|
||||
except discord.NotFound:
|
||||
pass
|
||||
|
@ -1315,7 +1310,8 @@ class Aurora(commands.Cog):
|
|||
user = await interaction.client.fetch_user(case_dict["target_id"])
|
||||
|
||||
await interaction.guild.unban(
|
||||
user, reason=f"Case #{case} resolved by {interaction.user.id}"
|
||||
user,
|
||||
reason=f"Case #{case} resolved by {interaction.user.id}",
|
||||
)
|
||||
except discord.NotFound:
|
||||
pass
|
||||
|
@ -1340,7 +1336,8 @@ class Aurora(commands.Cog):
|
|||
case_dict=await fetch_case(case, interaction.guild.id),
|
||||
)
|
||||
await interaction.response.send_message(
|
||||
content=f"✅ Moderation #{case:,} resolved!", embed=embed
|
||||
content=f"✅ Moderation #{case:,} resolved!",
|
||||
embed=embed,
|
||||
)
|
||||
await log(interaction, case, resolved=True)
|
||||
|
||||
|
@ -1352,7 +1349,7 @@ class Aurora(commands.Cog):
|
|||
export=[
|
||||
Choice(name="Export as File", value="file"),
|
||||
Choice(name="Export as Codeblock", value="codeblock"),
|
||||
]
|
||||
],
|
||||
)
|
||||
async def case(
|
||||
self,
|
||||
|
@ -1376,41 +1373,35 @@ class Aurora(commands.Cog):
|
|||
export: bool
|
||||
Export the case to a JSON file or codeblock"""
|
||||
permissions = check_permissions(
|
||||
interaction.client.user, ["embed_links"], interaction
|
||||
interaction.client.user,
|
||||
["embed_links"],
|
||||
interaction,
|
||||
)
|
||||
if permissions:
|
||||
await interaction.response.send_message(
|
||||
error(
|
||||
f"I do not have the `{permissions}` permission, required for this action."
|
||||
f"I do not have the `{permissions}` permission, required for this action.",
|
||||
),
|
||||
ephemeral=True,
|
||||
)
|
||||
return
|
||||
|
||||
if ephemeral is None:
|
||||
ephemeral = (
|
||||
await config.user(interaction.user).history_ephemeral()
|
||||
or await config.guild(interaction.guild).history_ephemeral()
|
||||
or False
|
||||
)
|
||||
ephemeral = await config.user(interaction.user).history_ephemeral() or await config.guild(interaction.guild).history_ephemeral() or False
|
||||
|
||||
if case != 0:
|
||||
case_dict = await fetch_case(case, interaction.guild.id)
|
||||
if case_dict:
|
||||
if export:
|
||||
if export.value == "file" or len(str(case_dict)) > 1800:
|
||||
filename = (
|
||||
str(data_manager.cog_data_path(cog_instance=self))
|
||||
+ str(os.sep)
|
||||
+ f"moderation_{interaction.guild.id}_case_{case}.json"
|
||||
)
|
||||
filename = str(data_manager.cog_data_path(cog_instance=self)) + str(os.sep) + f"moderation_{interaction.guild.id}_case_{case}.json"
|
||||
|
||||
with open(filename, "w", encoding="utf-8") as f:
|
||||
json.dump(case_dict, f, indent=2)
|
||||
|
||||
if export.value == "codeblock":
|
||||
content = f"Case #{case:,} exported.\n" + warning(
|
||||
"Case was too large to export as codeblock, so it has been uploaded as a `.json` file."
|
||||
"Case was too large to export as codeblock, so it has been uploaded as a `.json` file.",
|
||||
)
|
||||
else:
|
||||
content = f"Case #{case:,} exported."
|
||||
|
@ -1427,34 +1418,41 @@ class Aurora(commands.Cog):
|
|||
os.remove(filename)
|
||||
return
|
||||
await interaction.response.send_message(
|
||||
content=box(json.dumps(case_dict, indent=2), 'json'),
|
||||
content=box(json.dumps(case_dict, indent=2), "json"),
|
||||
ephemeral=ephemeral,
|
||||
)
|
||||
return
|
||||
if changes:
|
||||
embed = await changes_factory(
|
||||
interaction=interaction, case_dict=case_dict
|
||||
interaction=interaction,
|
||||
case_dict=case_dict,
|
||||
)
|
||||
await interaction.response.send_message(
|
||||
embed=embed, ephemeral=ephemeral
|
||||
embed=embed,
|
||||
ephemeral=ephemeral,
|
||||
)
|
||||
elif evidenceformat:
|
||||
content = await evidenceformat_factory(
|
||||
interaction=interaction, case_dict=case_dict
|
||||
interaction=interaction,
|
||||
case_dict=case_dict,
|
||||
)
|
||||
await interaction.response.send_message(
|
||||
content=content, ephemeral=ephemeral
|
||||
content=content,
|
||||
ephemeral=ephemeral,
|
||||
)
|
||||
else:
|
||||
embed = await case_factory(
|
||||
interaction=interaction, case_dict=case_dict
|
||||
interaction=interaction,
|
||||
case_dict=case_dict,
|
||||
)
|
||||
await interaction.response.send_message(
|
||||
embed=embed, ephemeral=ephemeral
|
||||
embed=embed,
|
||||
ephemeral=ephemeral,
|
||||
)
|
||||
return
|
||||
await interaction.response.send_message(
|
||||
content=f"No case with case number `{case}` found.", ephemeral=True
|
||||
content=f"No case with case number `{case}` found.",
|
||||
ephemeral=True,
|
||||
)
|
||||
|
||||
@app_commands.command(name="edit")
|
||||
|
@ -1476,13 +1474,16 @@ class Aurora(commands.Cog):
|
|||
duration: str
|
||||
What is the new duration? Does not reapply the moderation if it has already expired.
|
||||
"""
|
||||
end_timestamp = None
|
||||
permissions = check_permissions(
|
||||
interaction.client.user, ["embed_links"], interaction
|
||||
interaction.client.user,
|
||||
["embed_links"],
|
||||
interaction,
|
||||
)
|
||||
if permissions:
|
||||
await interaction.response.send_message(
|
||||
error(
|
||||
f"I do not have the `{permissions}` permission, required for this action."
|
||||
f"I do not have the `{permissions}` permission, required for this action.",
|
||||
),
|
||||
ephemeral=True,
|
||||
)
|
||||
|
@ -1496,26 +1497,25 @@ class Aurora(commands.Cog):
|
|||
parsed_time = parse_timedelta(duration)
|
||||
if parsed_time is None:
|
||||
await interaction.response.send_message(
|
||||
error("Please provide a valid duration!"), ephemeral=True
|
||||
error("Please provide a valid duration!"),
|
||||
ephemeral=True,
|
||||
)
|
||||
return
|
||||
|
||||
end_timestamp = case_dict["timestamp"] + parsed_time.total_seconds()
|
||||
|
||||
if case_dict["moderation_type"] == "MUTE":
|
||||
if (
|
||||
time.time() - case_dict["timestamp"]
|
||||
) + parsed_time.total_seconds() > 2419200:
|
||||
if (time.time() - case_dict["timestamp"]) + parsed_time.total_seconds() > 2419200:
|
||||
await interaction.response.send_message(
|
||||
error(
|
||||
"Please provide a duration that is less than 28 days from the initial moderation."
|
||||
)
|
||||
"Please provide a duration that is less than 28 days from the initial moderation.",
|
||||
),
|
||||
)
|
||||
return
|
||||
|
||||
try:
|
||||
member = await interaction.guild.fetch_member(
|
||||
case_dict["target_id"]
|
||||
case_dict["target_id"],
|
||||
)
|
||||
|
||||
await member.timeout(
|
||||
|
@ -1529,7 +1529,7 @@ class Aurora(commands.Cog):
|
|||
if len(changes) > 25:
|
||||
await interaction.response.send_message(
|
||||
content=error(
|
||||
"Due to limitations with Discord's embed system, you cannot edit a case more than 25 times."
|
||||
"Due to limitations with Discord's embed system, you cannot edit a case more than 25 times.",
|
||||
),
|
||||
ephemeral=True,
|
||||
)
|
||||
|
@ -1543,9 +1543,10 @@ class Aurora(commands.Cog):
|
|||
"user_id": case_dict["moderator_id"],
|
||||
"duration": case_dict["duration"],
|
||||
"end_timestamp": case_dict["end_timestamp"],
|
||||
}
|
||||
},
|
||||
)
|
||||
if parsed_time:
|
||||
assert end_timestamp is not None
|
||||
changes.append(
|
||||
{
|
||||
"type": "EDIT",
|
||||
|
@ -1554,7 +1555,7 @@ class Aurora(commands.Cog):
|
|||
"user_id": interaction.user.id,
|
||||
"duration": convert_timedelta_to_str(parsed_time),
|
||||
"end_timestamp": end_timestamp,
|
||||
}
|
||||
},
|
||||
)
|
||||
else:
|
||||
changes.append(
|
||||
|
@ -1565,7 +1566,7 @@ class Aurora(commands.Cog):
|
|||
"user_id": interaction.user.id,
|
||||
"duration": case_dict["duration"],
|
||||
"end_timestamp": case_dict["end_timestamp"],
|
||||
}
|
||||
},
|
||||
)
|
||||
|
||||
database = connect()
|
||||
|
@ -1602,7 +1603,8 @@ class Aurora(commands.Cog):
|
|||
database.close()
|
||||
return
|
||||
await interaction.response.send_message(
|
||||
content=error(f"No case with case number `{case}` found."), ephemeral=True
|
||||
content=error(f"No case with case number `{case}` found."),
|
||||
ephemeral=True,
|
||||
)
|
||||
|
||||
@tasks.loop(minutes=1)
|
||||
|
@ -1634,14 +1636,11 @@ class Aurora(commands.Cog):
|
|||
unban_num = 0
|
||||
for target_id, moderation_id in zip(target_ids, moderation_ids):
|
||||
user: discord.User = await self.bot.fetch_user(target_id)
|
||||
name = (
|
||||
f"{user.name}#{user.discriminator}"
|
||||
if user.discriminator != "0"
|
||||
else user.name
|
||||
)
|
||||
name = f"{user.name}#{user.discriminator}" if user.discriminator != "0" else user.name
|
||||
try:
|
||||
await guild.unban(
|
||||
user, reason=f"Automatic unban from case #{moderation_id}"
|
||||
user,
|
||||
reason=f"Automatic unban from case #{moderation_id}",
|
||||
)
|
||||
|
||||
embed = await message_factory(
|
||||
|
@ -1690,13 +1689,16 @@ class Aurora(commands.Cog):
|
|||
role_ids = [row[2] for row in result]
|
||||
|
||||
for target_id, moderation_id, role_id in zip(
|
||||
target_ids, moderation_ids, role_ids
|
||||
target_ids,
|
||||
moderation_ids,
|
||||
role_ids,
|
||||
):
|
||||
try:
|
||||
member = await guild.fetch_member(target_id)
|
||||
|
||||
await member.remove_roles(
|
||||
Object(role_id), reason=f"Automatic role removal from case #{moderation_id}"
|
||||
Object(role_id),
|
||||
reason=f"Automatic role removal from case #{moderation_id}",
|
||||
)
|
||||
|
||||
removerole_num = removerole_num + 1
|
||||
|
@ -1725,13 +1727,16 @@ class Aurora(commands.Cog):
|
|||
role_ids = [row[2] for row in result]
|
||||
|
||||
for target_id, moderation_id, role_id in zip(
|
||||
target_ids, moderation_ids, role_ids
|
||||
target_ids,
|
||||
moderation_ids,
|
||||
role_ids,
|
||||
):
|
||||
try:
|
||||
member = await guild.fetch_member(target_id)
|
||||
|
||||
await member.add_roles(
|
||||
Object(role_id), reason=f"Automatic role addition from case #{moderation_id}"
|
||||
Object(role_id),
|
||||
reason=f"Automatic role addition from case #{moderation_id}",
|
||||
)
|
||||
|
||||
addrole_num = addrole_num + 1
|
||||
|
@ -1827,15 +1832,11 @@ class Aurora(commands.Cog):
|
|||
@commands.admin()
|
||||
async def aurora_import_aurora(self, ctx: commands.Context):
|
||||
"""Import moderation history from another bot using Aurora."""
|
||||
if (
|
||||
ctx.message.attachments
|
||||
and ctx.message.attachments[0].content_type
|
||||
== "application/json; charset=utf-8"
|
||||
):
|
||||
if ctx.message.attachments and ctx.message.attachments[0].content_type == "application/json; charset=utf-8":
|
||||
message = await ctx.send(
|
||||
warning(
|
||||
"Are you sure you want to import moderations from another bot?\n**This will overwrite any moderations that already exist in this guild's moderation table.**\n*The import process will block the rest of your bot until it is complete.*"
|
||||
)
|
||||
"Are you sure you want to import moderations from another bot?\n**This will overwrite any moderations that already exist in this guild's moderation table.**\n*The import process will block the rest of your bot until it is complete.*",
|
||||
),
|
||||
)
|
||||
await message.edit(view=ImportAuroraView(60, ctx, message))
|
||||
else:
|
||||
|
@ -1845,20 +1846,16 @@ class Aurora(commands.Cog):
|
|||
@commands.admin()
|
||||
async def aurora_import_galacticbot(self, ctx: commands.Context):
|
||||
"""Import moderation history from GalacticBot."""
|
||||
if (
|
||||
ctx.message.attachments
|
||||
and ctx.message.attachments[0].content_type
|
||||
== "application/json; charset=utf-8"
|
||||
):
|
||||
if ctx.message.attachments and ctx.message.attachments[0].content_type == "application/json; charset=utf-8":
|
||||
message = await ctx.send(
|
||||
warning(
|
||||
"Are you sure you want to import GalacticBot moderations?\n**This will overwrite any moderations that already exist in this guild's moderation table.**\n*The import process will block the rest of your bot until it is complete.*"
|
||||
)
|
||||
"Are you sure you want to import GalacticBot moderations?\n**This will overwrite any moderations that already exist in this guild's moderation table.**\n*The import process will block the rest of your bot until it is complete.*",
|
||||
),
|
||||
)
|
||||
await message.edit(view=ImportGalacticBotView(60, ctx, message))
|
||||
else:
|
||||
await ctx.send(
|
||||
error("Please provide a valid GalacticBot moderation export file.")
|
||||
error("Please provide a valid GalacticBot moderation export file."),
|
||||
)
|
||||
|
||||
@aurora.command(aliases=["tdc", "td", "timedeltaconvert"])
|
||||
|
|
|
@ -75,7 +75,9 @@ async def message_factory(
|
|||
|
||||
if await config.guild(guild).show_moderator() and moderator is not None:
|
||||
embed.add_field(
|
||||
name="Moderator", value=f"`{moderator.name} ({moderator.id})`", inline=False
|
||||
name="Moderator",
|
||||
value=f"`{moderator.name} ({moderator.id})`",
|
||||
inline=False,
|
||||
)
|
||||
|
||||
embed.add_field(name="Reason", value=f"`{reason}`", inline=False)
|
||||
|
@ -94,7 +96,9 @@ async def message_factory(
|
|||
|
||||
|
||||
async def log_factory(
|
||||
interaction: Interaction, case_dict: dict, resolved: bool = False
|
||||
interaction: Interaction,
|
||||
case_dict: dict,
|
||||
resolved: bool = False,
|
||||
) -> Embed:
|
||||
"""This function creates a log embed from set parameters, meant for moderation logging.
|
||||
|
||||
|
@ -103,14 +107,11 @@ async def log_factory(
|
|||
case_dict (dict): The case dictionary.
|
||||
resolved (bool, optional): Whether the case is resolved or not. Defaults to False.
|
||||
"""
|
||||
target_name = ""
|
||||
if resolved:
|
||||
if case_dict["target_type"] == "USER":
|
||||
target_user = await fetch_user_dict(interaction.client, case_dict["target_id"])
|
||||
target_name = (
|
||||
f"`{target_user['name']}`"
|
||||
if target_user["discriminator"] == "0"
|
||||
else f"`{target_user['name']}#{target_user['discriminator']}`"
|
||||
)
|
||||
target_name = f"`{target_user['name']}`" if target_user["discriminator"] == "0" else f"`{target_user['name']}#{target_user['discriminator']}`"
|
||||
elif case_dict["target_type"] == "CHANNEL":
|
||||
target_user = await fetch_channel_dict(interaction.guild, case_dict["target_id"])
|
||||
if target_user["mention"]:
|
||||
|
@ -119,11 +120,7 @@ async def log_factory(
|
|||
target_name = f"`{target_user['name']}`"
|
||||
|
||||
moderator_user = await fetch_user_dict(interaction.client, case_dict["moderator_id"])
|
||||
moderator_name = (
|
||||
f"`{moderator_user['name']}`"
|
||||
if moderator_user["discriminator"] == "0"
|
||||
else f"`{moderator_user['name']}#{moderator_user['discriminator']}`"
|
||||
)
|
||||
moderator_name = f"`{moderator_user['name']}`" if moderator_user["discriminator"] == "0" else f"`{moderator_user['name']}#{moderator_user['discriminator']}`"
|
||||
|
||||
embed = Embed(
|
||||
title=f"📕 Case #{case_dict['moderation_id']:,} Resolved",
|
||||
|
@ -140,40 +137,24 @@ async def log_factory(
|
|||
["hours", "minutes", "seconds"],
|
||||
case_dict["duration"].split(":"),
|
||||
)
|
||||
}
|
||||
)
|
||||
duration_embed = (
|
||||
f"{humanize_timedelta(timedelta=td)} | <t:{case_dict['end_timestamp']}:R>"
|
||||
if case_dict["expired"] == "0"
|
||||
else str(humanize_timedelta(timedelta=td))
|
||||
)
|
||||
embed.description = (
|
||||
embed.description
|
||||
+ f"\n**Duration:** {duration_embed}\n**Expired:** {bool(case_dict['expired'])}"
|
||||
},
|
||||
)
|
||||
duration_embed = f"{humanize_timedelta(timedelta=td)} | <t:{case_dict['end_timestamp']}:R>" if case_dict["expired"] == "0" else str(humanize_timedelta(timedelta=td))
|
||||
embed.description = embed.description + f"\n**Duration:** {duration_embed}\n**Expired:** {bool(case_dict['expired'])}"
|
||||
|
||||
embed.add_field(name="Reason", value=box(case_dict["reason"]), inline=False)
|
||||
|
||||
resolved_user = await fetch_user_dict(interaction.client, case_dict["resolved_by"])
|
||||
resolved_name = (
|
||||
resolved_user["name"]
|
||||
if resolved_user["discriminator"] == "0"
|
||||
else f"{resolved_user['name']}#{resolved_user['discriminator']}"
|
||||
)
|
||||
resolved_name = resolved_user["name"] if resolved_user["discriminator"] == "0" else f"{resolved_user['name']}#{resolved_user['discriminator']}"
|
||||
embed.add_field(
|
||||
name="Resolve Reason",
|
||||
value=f"Resolved by `{resolved_name}` ({resolved_user['id']}) for:\n"
|
||||
+ box(case_dict["resolve_reason"]),
|
||||
value=f"Resolved by `{resolved_name}` ({resolved_user['id']}) for:\n" + box(case_dict["resolve_reason"]),
|
||||
inline=False,
|
||||
)
|
||||
else:
|
||||
if case_dict["target_type"] == "USER":
|
||||
target_user = await fetch_user_dict(interaction.client, case_dict["target_id"])
|
||||
target_name = (
|
||||
f"`{target_user['name']}`"
|
||||
if target_user["discriminator"] == "0"
|
||||
else f"`{target_user['name']}#{target_user['discriminator']}`"
|
||||
)
|
||||
target_name = f"`{target_user['name']}`" if target_user["discriminator"] == "0" else f"`{target_user['name']}#{target_user['discriminator']}`"
|
||||
elif case_dict["target_type"] == "CHANNEL":
|
||||
target_user = await fetch_channel_dict(interaction.guild, case_dict["target_id"])
|
||||
if target_user["mention"]:
|
||||
|
@ -182,11 +163,7 @@ async def log_factory(
|
|||
target_name = f"`{target_user['name']}`"
|
||||
|
||||
moderator_user = await fetch_user_dict(interaction.client, case_dict["moderator_id"])
|
||||
moderator_name = (
|
||||
f"`{moderator_user['name']}`"
|
||||
if moderator_user["discriminator"] == "0"
|
||||
else f"`{moderator_user['name']}#{moderator_user['discriminator']}`"
|
||||
)
|
||||
moderator_name = f"`{moderator_user['name']}`" if moderator_user["discriminator"] == "0" else f"`{moderator_user['name']}#{moderator_user['discriminator']}`"
|
||||
|
||||
embed = Embed(
|
||||
title=f"📕 Case #{case_dict['moderation_id']:,}",
|
||||
|
@ -202,12 +179,9 @@ async def log_factory(
|
|||
["hours", "minutes", "seconds"],
|
||||
case_dict["duration"].split(":"),
|
||||
)
|
||||
}
|
||||
)
|
||||
embed.description = (
|
||||
embed.description
|
||||
+ f"\n**Duration:** {humanize_timedelta(timedelta=td)} | <t:{case_dict['end_timestamp']}:R>"
|
||||
},
|
||||
)
|
||||
embed.description = embed.description + f"\n**Duration:** {humanize_timedelta(timedelta=td)} | <t:{case_dict['end_timestamp']}:R>"
|
||||
|
||||
embed.add_field(name="Reason", value=box(case_dict["reason"]), inline=False)
|
||||
return embed
|
||||
|
@ -220,13 +194,10 @@ async def case_factory(interaction: Interaction, case_dict: dict) -> Embed:
|
|||
interaction (Interaction): The interaction object.
|
||||
case_dict (dict): The case dictionary.
|
||||
"""
|
||||
target_name = ""
|
||||
if case_dict["target_type"] == "USER":
|
||||
target_user = await fetch_user_dict(interaction.client, case_dict["target_id"])
|
||||
target_name = (
|
||||
f"`{target_user['name']}`"
|
||||
if target_user["discriminator"] == "0"
|
||||
else f"`{target_user['name']}#{target_user['discriminator']}`"
|
||||
)
|
||||
target_name = f"`{target_user['name']}`" if target_user["discriminator"] == "0" else f"`{target_user['name']}#{target_user['discriminator']}`"
|
||||
elif case_dict["target_type"] == "CHANNEL":
|
||||
target_user = await fetch_channel_dict(interaction.guild, case_dict["target_id"])
|
||||
if target_user["mention"]:
|
||||
|
@ -235,11 +206,7 @@ async def case_factory(interaction: Interaction, case_dict: dict) -> Embed:
|
|||
target_name = f"`{target_user['name']}`"
|
||||
|
||||
moderator_user = await fetch_user_dict(interaction.client, case_dict["moderator_id"])
|
||||
moderator_name = (
|
||||
f"`{moderator_user['name']}`"
|
||||
if moderator_user["discriminator"] == "0"
|
||||
else f"`{moderator_user['name']}#{moderator_user['discriminator']}`"
|
||||
)
|
||||
moderator_name = f"`{moderator_user['name']}`" if moderator_user["discriminator"] == "0" else f"`{moderator_user['name']}#{moderator_user['discriminator']}`"
|
||||
|
||||
embed = Embed(
|
||||
title=f"📕 Case #{case_dict['moderation_id']:,}",
|
||||
|
@ -252,41 +219,28 @@ async def case_factory(interaction: Interaction, case_dict: dict) -> Embed:
|
|||
**{
|
||||
unit: int(val)
|
||||
for unit, val in zip(
|
||||
["hours", "minutes", "seconds"], case_dict["duration"].split(":")
|
||||
["hours", "minutes", "seconds"],
|
||||
case_dict["duration"].split(":"),
|
||||
)
|
||||
}
|
||||
)
|
||||
duration_embed = (
|
||||
f"{humanize_timedelta(timedelta=td)} | <t:{case_dict['end_timestamp']}:R>"
|
||||
if bool(case_dict["expired"]) is False
|
||||
else str(humanize_timedelta(timedelta=td))
|
||||
},
|
||||
)
|
||||
duration_embed = f"{humanize_timedelta(timedelta=td)} | <t:{case_dict['end_timestamp']}:R>" if bool(case_dict["expired"]) is False else str(humanize_timedelta(timedelta=td))
|
||||
embed.description += f"\n**Duration:** {duration_embed}\n**Expired:** {bool(case_dict['expired'])}"
|
||||
|
||||
embed.description += (
|
||||
f"\n**Changes:** {len(case_dict['changes']) - 1}"
|
||||
if case_dict["changes"]
|
||||
else "\n**Changes:** 0"
|
||||
)
|
||||
embed.description += f"\n**Changes:** {len(case_dict['changes']) - 1}" if case_dict["changes"] else "\n**Changes:** 0"
|
||||
|
||||
if case_dict["role_id"]:
|
||||
embed.description += f"\n**Role:** <@&{case_dict['role_id']}>"
|
||||
|
||||
if case_dict["metadata"]:
|
||||
if case_dict["metadata"]["imported_from"]:
|
||||
embed.description += (
|
||||
f"\n**Imported From:** {case_dict['metadata']['imported_from']}"
|
||||
)
|
||||
embed.description += f"\n**Imported From:** {case_dict['metadata']['imported_from']}"
|
||||
|
||||
embed.add_field(name="Reason", value=box(case_dict["reason"]), inline=False)
|
||||
|
||||
if case_dict["resolved"] == 1:
|
||||
resolved_user = await fetch_user_dict(interaction.client, case_dict["resolved_by"])
|
||||
resolved_name = (
|
||||
f"`{resolved_user['name']}`"
|
||||
if resolved_user["discriminator"] == "0"
|
||||
else f"`{resolved_user['name']}#{resolved_user['discriminator']}`"
|
||||
)
|
||||
resolved_name = f"`{resolved_user['name']}`" if resolved_user["discriminator"] == "0" else f"`{resolved_user['name']}#{resolved_user['discriminator']}`"
|
||||
embed.add_field(
|
||||
name="Resolve Reason",
|
||||
value=f"Resolved by {resolved_name} ({resolved_user['id']}) for:\n{box(case_dict['resolve_reason'])}",
|
||||
|
@ -314,15 +268,12 @@ async def changes_factory(interaction: Interaction, case_dict: dict) -> Embed:
|
|||
for change in case_dict["changes"]:
|
||||
if change["user_id"] not in memory_dict:
|
||||
memory_dict[str(change["user_id"])] = await fetch_user_dict(
|
||||
interaction.client, change["user_id"]
|
||||
interaction.client,
|
||||
change["user_id"],
|
||||
)
|
||||
|
||||
user = memory_dict[str(change["user_id"])]
|
||||
name = (
|
||||
user["name"]
|
||||
if user["discriminator"] == "0"
|
||||
else f"{user['name']}#{user['discriminator']}"
|
||||
)
|
||||
name = user["name"] if user["discriminator"] == "0" else f"{user['name']}#{user['discriminator']}"
|
||||
|
||||
timestamp = f"<t:{change['timestamp']}> | <t:{change['timestamp']}:R>"
|
||||
|
||||
|
@ -360,24 +311,17 @@ async def evidenceformat_factory(interaction: Interaction, case_dict: dict) -> s
|
|||
interaction (Interaction): The interaction object.
|
||||
case_dict (dict): The case dictionary.
|
||||
"""
|
||||
target_name = ""
|
||||
if case_dict["target_type"] == "USER":
|
||||
target_user = await fetch_user_dict(interaction.client, case_dict["target_id"])
|
||||
target_name = (
|
||||
target_user["name"]
|
||||
if target_user["discriminator"] == "0"
|
||||
else f"{target_user['name']}#{target_user['discriminator']}"
|
||||
)
|
||||
target_name = target_user["name"] if target_user["discriminator"] == "0" else f"{target_user['name']}#{target_user['discriminator']}"
|
||||
|
||||
elif case_dict["target_type"] == "CHANNEL":
|
||||
target_user = await fetch_channel_dict(interaction.guild, case_dict["target_id"])
|
||||
target_name = target_user["name"]
|
||||
|
||||
moderator_user = await fetch_user_dict(interaction.client, case_dict["moderator_id"])
|
||||
moderator_name = (
|
||||
moderator_user["name"]
|
||||
if moderator_user["discriminator"] == "0"
|
||||
else f"{moderator_user['name']}#{moderator_user['discriminator']}"
|
||||
)
|
||||
moderator_name = moderator_user["name"] if moderator_user["discriminator"] == "0" else f"{moderator_user['name']}#{moderator_user['discriminator']}"
|
||||
|
||||
content = f"Case: {case_dict['moderation_id']:,} ({str.title(case_dict['moderation_type'])})\nTarget: {target_name} ({target_user['id']})\nModerator: {moderator_name} ({moderator_user['id']})"
|
||||
|
||||
|
@ -419,17 +363,11 @@ async def overrides_embed(ctx: commands.Context) -> Embed:
|
|||
}
|
||||
|
||||
override_str = [
|
||||
"- "
|
||||
+ bold("Auto Evidence Format: ")
|
||||
+ get_bool_emoji(override_settings["auto_evidenceformat"]),
|
||||
"- " + bold("Auto Evidence Format: ") + get_bool_emoji(override_settings["auto_evidenceformat"]),
|
||||
"- " + bold("Ephemeral: ") + get_bool_emoji(override_settings["ephemeral"]),
|
||||
"- " + bold("History Inline: ") + get_bool_emoji(override_settings["inline"]),
|
||||
"- "
|
||||
+ bold("History Inline Pagesize: ")
|
||||
+ get_pagesize_str(override_settings["inline_pagesize"]),
|
||||
"- "
|
||||
+ bold("History Pagesize: ")
|
||||
+ get_pagesize_str(override_settings["pagesize"]),
|
||||
"- " + bold("History Inline Pagesize: ") + get_pagesize_str(override_settings["inline_pagesize"]),
|
||||
"- " + bold("History Pagesize: ") + get_pagesize_str(override_settings["pagesize"]),
|
||||
]
|
||||
override_str = "\n".join(override_str)
|
||||
|
||||
|
@ -451,7 +389,7 @@ async def guild_embed(ctx: commands.Context) -> Embed:
|
|||
guild_settings = {
|
||||
"show_moderator": await config.guild(ctx.guild).show_moderator(),
|
||||
"use_discord_permissions": await config.guild(
|
||||
ctx.guild
|
||||
ctx.guild,
|
||||
).use_discord_permissions(),
|
||||
"ignore_modlog": await config.guild(ctx.guild).ignore_modlog(),
|
||||
"ignore_other_bots": await config.guild(ctx.guild).ignore_other_bots(),
|
||||
|
@ -461,7 +399,7 @@ async def guild_embed(ctx: commands.Context) -> Embed:
|
|||
"history_inline": await config.guild(ctx.guild).history_inline(),
|
||||
"history_pagesize": await config.guild(ctx.guild).history_pagesize(),
|
||||
"history_inline_pagesize": await config.guild(
|
||||
ctx.guild
|
||||
ctx.guild,
|
||||
).history_inline_pagesize(),
|
||||
"auto_evidenceformat": await config.guild(ctx.guild).auto_evidenceformat(),
|
||||
"respect_hierarchy": await config.guild(ctx.guild).respect_hierarchy(),
|
||||
|
@ -474,37 +412,17 @@ async def guild_embed(ctx: commands.Context) -> Embed:
|
|||
channel = channel.mention
|
||||
|
||||
guild_str = [
|
||||
"- "
|
||||
+ bold("Show Moderator: ")
|
||||
+ get_bool_emoji(guild_settings["show_moderator"]),
|
||||
"- "
|
||||
+ bold("Use Discord Permissions: ")
|
||||
+ get_bool_emoji(guild_settings["use_discord_permissions"]),
|
||||
"- "
|
||||
+ bold("Respect Hierarchy: ")
|
||||
+ get_bool_emoji(guild_settings["respect_hierarchy"]),
|
||||
"- "
|
||||
+ bold("Ignore Modlog: ")
|
||||
+ get_bool_emoji(guild_settings["ignore_modlog"]),
|
||||
"- "
|
||||
+ bold("Ignore Other Bots: ")
|
||||
+ get_bool_emoji(guild_settings["ignore_other_bots"]),
|
||||
"- " + bold("Show Moderator: ") + get_bool_emoji(guild_settings["show_moderator"]),
|
||||
"- " + bold("Use Discord Permissions: ") + get_bool_emoji(guild_settings["use_discord_permissions"]),
|
||||
"- " + bold("Respect Hierarchy: ") + get_bool_emoji(guild_settings["respect_hierarchy"]),
|
||||
"- " + bold("Ignore Modlog: ") + get_bool_emoji(guild_settings["ignore_modlog"]),
|
||||
"- " + bold("Ignore Other Bots: ") + get_bool_emoji(guild_settings["ignore_other_bots"]),
|
||||
"- " + bold("DM Users: ") + get_bool_emoji(guild_settings["dm_users"]),
|
||||
"- "
|
||||
+ bold("Auto Evidence Format: ")
|
||||
+ get_bool_emoji(guild_settings["auto_evidenceformat"]),
|
||||
"- "
|
||||
+ bold("Ephemeral: ")
|
||||
+ get_bool_emoji(guild_settings["history_ephemeral"]),
|
||||
"- "
|
||||
+ bold("History Inline: ")
|
||||
+ get_bool_emoji(guild_settings["history_inline"]),
|
||||
"- "
|
||||
+ bold("History Pagesize: ")
|
||||
+ get_pagesize_str(guild_settings["history_pagesize"]),
|
||||
"- "
|
||||
+ bold("History Inline Pagesize: ")
|
||||
+ get_pagesize_str(guild_settings["history_inline_pagesize"]),
|
||||
"- " + bold("Auto Evidence Format: ") + get_bool_emoji(guild_settings["auto_evidenceformat"]),
|
||||
"- " + bold("Ephemeral: ") + get_bool_emoji(guild_settings["history_ephemeral"]),
|
||||
"- " + bold("History Inline: ") + get_bool_emoji(guild_settings["history_inline"]),
|
||||
"- " + bold("History Pagesize: ") + get_pagesize_str(guild_settings["history_pagesize"]),
|
||||
"- " + bold("History Inline Pagesize: ") + get_pagesize_str(guild_settings["history_inline_pagesize"]),
|
||||
"- " + bold("Log Channel: ") + channel,
|
||||
]
|
||||
guild_str = "\n".join(guild_str)
|
||||
|
@ -528,17 +446,21 @@ async def addrole_embed(ctx: commands.Context) -> Embed:
|
|||
for role in whitelist:
|
||||
evalulated_role = ctx.guild.get_role(role) or error(f"`{role}` (Not Found)")
|
||||
if isinstance(evalulated_role, Role):
|
||||
roles.append({
|
||||
roles.append(
|
||||
{
|
||||
"id": evalulated_role.id,
|
||||
"mention": evalulated_role.mention,
|
||||
"position": evalulated_role.position
|
||||
})
|
||||
"position": evalulated_role.position,
|
||||
}
|
||||
)
|
||||
else:
|
||||
roles.append({
|
||||
roles.append(
|
||||
{
|
||||
"id": role,
|
||||
"mention": error(f"`{role}` (Not Found)"),
|
||||
"position": 0
|
||||
})
|
||||
"position": 0,
|
||||
}
|
||||
)
|
||||
|
||||
if roles:
|
||||
roles = sorted(roles, key=lambda x: x["position"], reverse=True)
|
||||
|
@ -549,9 +471,7 @@ async def addrole_embed(ctx: commands.Context) -> Embed:
|
|||
|
||||
e = await _config(ctx)
|
||||
e.title += ": Addrole Whitelist"
|
||||
e.description = (
|
||||
"Use the select menu below to manage this guild's addrole whitelist."
|
||||
)
|
||||
e.description = "Use the select menu below to manage this guild's addrole whitelist."
|
||||
|
||||
if len(whitelist_str) > 4000 and len(whitelist_str) < 5000:
|
||||
lines = whitelist_str.split("\n")
|
||||
|
@ -581,17 +501,21 @@ async def immune_embed(ctx: commands.Context) -> Embed:
|
|||
for role in immune_roles:
|
||||
evalulated_role = ctx.guild.get_role(role) or error(f"`{role}` (Not Found)")
|
||||
if isinstance(evalulated_role, Role):
|
||||
roles.append({
|
||||
roles.append(
|
||||
{
|
||||
"id": evalulated_role.id,
|
||||
"mention": evalulated_role.mention,
|
||||
"position": evalulated_role.position
|
||||
})
|
||||
"position": evalulated_role.position,
|
||||
}
|
||||
)
|
||||
else:
|
||||
roles.append({
|
||||
roles.append(
|
||||
{
|
||||
"id": role,
|
||||
"mention": error(f"`{role}` (Not Found)"),
|
||||
"position": 0
|
||||
})
|
||||
"position": 0,
|
||||
}
|
||||
)
|
||||
|
||||
if roles:
|
||||
roles = sorted(roles, key=lambda x: x["position"], reverse=True)
|
||||
|
|
Loading…
Add table
Reference in a new issue