aboutsummaryrefslogtreecommitdiffstats
path: root/bot/exts/moderation/modlog.py
diff options
context:
space:
mode:
Diffstat (limited to 'bot/exts/moderation/modlog.py')
-rw-r--r--bot/exts/moderation/modlog.py211
1 files changed, 104 insertions, 107 deletions
diff --git a/bot/exts/moderation/modlog.py b/bot/exts/moderation/modlog.py
index b349f4d5d..3c256396a 100644
--- a/bot/exts/moderation/modlog.py
+++ b/bot/exts/moderation/modlog.py
@@ -8,7 +8,7 @@ from dateutil.relativedelta import relativedelta
from deepdiff import DeepDiff
from discord import Colour, Message, Thread
from discord.abc import GuildChannel
-from discord.ext.commands import Cog, Context
+from discord.ext.commands import Cog
from discord.utils import escape_markdown, format_dt, snowflake_time
from bot.bot import Bot
@@ -16,6 +16,7 @@ from bot.constants import Channels, Colours, Emojis, Event, Guild as GuildConsta
from bot.log import get_logger
from bot.utils import time
from bot.utils.messages import format_user, upload_log
+from bot.utils.modlog import send_log_message
log = get_logger(__name__)
@@ -47,63 +48,6 @@ class ModLog(Cog, name="ModLog"):
if item not in self._ignored[event]:
self._ignored[event].append(item)
- async def send_log_message(
- self,
- icon_url: str | None,
- colour: discord.Colour | int,
- title: str | None,
- text: str,
- thumbnail: str | discord.Asset | None = None,
- channel_id: int = Channels.mod_log,
- ping_everyone: bool = False,
- files: list[discord.File] | None = None,
- content: str | None = None,
- additional_embeds: list[discord.Embed] | None = None,
- timestamp_override: datetime | None = None,
- footer: str | None = None,
- ) -> Context:
- """Generate log embed and send to logging channel."""
- await self.bot.wait_until_guild_available()
- # Truncate string directly here to avoid removing newlines
- embed = discord.Embed(
- description=text[:4093] + "..." if len(text) > 4096 else text
- )
-
- if title and icon_url:
- embed.set_author(name=title, icon_url=icon_url)
-
- embed.colour = colour
- embed.timestamp = timestamp_override or datetime.now(tz=UTC)
-
- if footer:
- embed.set_footer(text=footer)
-
- if thumbnail:
- embed.set_thumbnail(url=thumbnail)
-
- if ping_everyone:
- if content:
- content = f"<@&{Roles.moderators}> {content}"
- else:
- content = f"<@&{Roles.moderators}>"
-
- # Truncate content to 2000 characters and append an ellipsis.
- if content and len(content) > 2000:
- content = content[:2000 - 3] + "..."
-
- channel = self.bot.get_channel(channel_id)
- log_message = await channel.send(
- content=content,
- embed=embed,
- files=files
- )
-
- if additional_embeds:
- for additional_embed in additional_embeds:
- await channel.send(embed=additional_embed)
-
- return await self.bot.get_context(log_message) # Optionally return for use with antispam
-
@Cog.listener()
async def on_guild_channel_create(self, channel: GUILD_CHANNEL) -> None:
"""Log channel create event to mod log."""
@@ -128,7 +72,7 @@ class ModLog(Cog, name="ModLog"):
else:
message = f"{channel.name} (`{channel.id}`)"
- await self.send_log_message(Icons.hash_green, Colours.soft_green, title, message)
+ await send_log_message(self.bot, Icons.hash_green, Colours.soft_green, title, message)
@Cog.listener()
async def on_guild_channel_delete(self, channel: GUILD_CHANNEL) -> None:
@@ -148,9 +92,12 @@ class ModLog(Cog, name="ModLog"):
else:
message = f"{channel.name} (`{channel.id}`)"
- await self.send_log_message(
- Icons.hash_red, Colours.soft_red,
- title, message
+ await send_log_message(
+ self.bot,
+ Icons.hash_red,
+ Colours.soft_red,
+ title,
+ message
)
@Cog.listener()
@@ -211,9 +158,12 @@ class ModLog(Cog, name="ModLog"):
else:
message = f"**#{after.name}** (`{after.id}`)\n{message}"
- await self.send_log_message(
- Icons.hash_blurple, Colour.og_blurple(),
- "Channel updated", message
+ await send_log_message(
+ self.bot,
+ Icons.hash_blurple,
+ Colour.og_blurple(),
+ "Channel updated",
+ message
)
@Cog.listener()
@@ -222,9 +172,12 @@ class ModLog(Cog, name="ModLog"):
if role.guild.id != GuildConstant.id:
return
- await self.send_log_message(
- Icons.crown_green, Colours.soft_green,
- "Role created", f"`{role.id}`"
+ await send_log_message(
+ self.bot,
+ Icons.crown_green,
+ Colours.soft_green,
+ "Role created",
+ f"`{role.id}`"
)
@Cog.listener()
@@ -233,9 +186,12 @@ class ModLog(Cog, name="ModLog"):
if role.guild.id != GuildConstant.id:
return
- await self.send_log_message(
- Icons.crown_red, Colours.soft_red,
- "Role removed", f"{role.name} (`{role.id}`)"
+ await send_log_message(
+ self.bot,
+ Icons.crown_red,
+ Colours.soft_red,
+ "Role removed",
+ f"{role.name} (`{role.id}`)"
)
@Cog.listener()
@@ -286,9 +242,12 @@ class ModLog(Cog, name="ModLog"):
message = f"**{after.name}** (`{after.id}`)\n{message}"
- await self.send_log_message(
- Icons.crown_blurple, Colour.og_blurple(),
- "Role updated", message
+ await send_log_message(
+ self.bot,
+ Icons.crown_blurple,
+ Colour.og_blurple(),
+ "Role updated",
+ message
)
@Cog.listener()
@@ -336,9 +295,12 @@ class ModLog(Cog, name="ModLog"):
message = f"**{after.name}** (`{after.id}`)\n{message}"
- await self.send_log_message(
- Icons.guild_update, Colour.og_blurple(),
- "Guild updated", message,
+ await send_log_message(
+ self.bot,
+ Icons.guild_update,
+ Colour.og_blurple(),
+ "Guild updated",
+ message,
thumbnail=after.icon.with_static_format("png")
)
@@ -352,9 +314,12 @@ class ModLog(Cog, name="ModLog"):
self._ignored[Event.member_ban].remove(member.id)
return
- await self.send_log_message(
- Icons.user_ban, Colours.soft_red,
- "User banned", format_user(member),
+ await send_log_message(
+ self.bot,
+ Icons.user_ban,
+ Colours.soft_red,
+ "User banned",
+ format_user(member),
thumbnail=member.display_avatar.url,
channel_id=Channels.user_log
)
@@ -373,9 +338,12 @@ class ModLog(Cog, name="ModLog"):
if difference.days < 1 and difference.months < 1 and difference.years < 1: # New user account!
message = f"{Emojis.new} {message}"
- await self.send_log_message(
- Icons.sign_in, Colours.soft_green,
- "User joined", message,
+ await send_log_message(
+ self.bot,
+ Icons.sign_in,
+ Colours.soft_green,
+ "User joined",
+ message,
thumbnail=member.display_avatar.url,
channel_id=Channels.user_log
)
@@ -390,9 +358,12 @@ class ModLog(Cog, name="ModLog"):
self._ignored[Event.member_remove].remove(member.id)
return
- await self.send_log_message(
- Icons.sign_out, Colours.soft_red,
- "User left", format_user(member),
+ await send_log_message(
+ self.bot,
+ Icons.sign_out,
+ Colours.soft_red,
+ "User left",
+ format_user(member),
thumbnail=member.display_avatar.url,
channel_id=Channels.user_log
)
@@ -407,9 +378,12 @@ class ModLog(Cog, name="ModLog"):
self._ignored[Event.member_unban].remove(member.id)
return
- await self.send_log_message(
- Icons.user_unban, Colour.og_blurple(),
- "User unbanned", format_user(member),
+ await send_log_message(
+ self.bot,
+ Icons.user_unban,
+ Colour.og_blurple(),
+ "User unbanned",
+ format_user(member),
thumbnail=member.display_avatar.url,
channel_id=Channels.mod_log
)
@@ -471,7 +445,8 @@ class ModLog(Cog, name="ModLog"):
message = f"{format_user(after)}\n{message}"
- await self.send_log_message(
+ await send_log_message(
+ self.bot,
icon_url=Icons.user_update,
colour=Colour.og_blurple(),
title="Member updated",
@@ -565,8 +540,10 @@ class ModLog(Cog, name="ModLog"):
response += f"{content}"
- await self.send_log_message(
- Icons.message_delete, Colours.soft_red,
+ await send_log_message(
+ self.bot,
+ Icons.message_delete,
+ Colours.soft_red,
"Message deleted",
response,
channel_id=Channels.message_log
@@ -606,8 +583,10 @@ class ModLog(Cog, name="ModLog"):
"This message was not cached, so the message content cannot be displayed."
)
- await self.send_log_message(
- Icons.message_delete, Colours.soft_red,
+ await send_log_message(
+ self.bot,
+ Icons.message_delete,
+ Colours.soft_red,
"Message deleted",
response,
channel_id=Channels.message_log
@@ -687,9 +666,15 @@ class ModLog(Cog, name="ModLog"):
timestamp = msg_before.created_at
footer = None
- await self.send_log_message(
- Icons.message_edit, Colour.og_blurple(), "Message edited", response,
- channel_id=Channels.message_log, timestamp_override=timestamp, footer=footer
+ await send_log_message(
+ self.bot,
+ Icons.message_edit,
+ Colour.og_blurple(),
+ "Message edited",
+ response,
+ channel_id=Channels.message_log,
+ timestamp_override=timestamp,
+ footer=footer
)
@Cog.listener()
@@ -734,14 +719,22 @@ class ModLog(Cog, name="ModLog"):
f"{message.clean_content}"
)
- await self.send_log_message(
- Icons.message_edit, Colour.og_blurple(), "Message edited (Before)",
- before_response, channel_id=Channels.message_log
+ await send_log_message(
+ self.bot,
+ Icons.message_edit,
+ Colour.og_blurple(),
+ "Message edited (Before)",
+ before_response,
+ channel_id=Channels.message_log
)
- await self.send_log_message(
- Icons.message_edit, Colour.og_blurple(), "Message edited (After)",
- after_response, channel_id=Channels.message_log
+ await send_log_message(
+ self.bot,
+ Icons.message_edit,
+ Colour.og_blurple(),
+ "Message edited (After)",
+ after_response,
+ channel_id=Channels.message_log
)
@Cog.listener()
@@ -752,7 +745,8 @@ class ModLog(Cog, name="ModLog"):
return
if before.name != after.name:
- await self.send_log_message(
+ await send_log_message(
+ self.bot,
Icons.hash_blurple,
Colour.og_blurple(),
"Thread name edited",
@@ -774,7 +768,8 @@ class ModLog(Cog, name="ModLog"):
else:
return
- await self.send_log_message(
+ await send_log_message(
+ self.bot,
icon,
colour,
f"Thread {action}",
@@ -792,7 +787,8 @@ class ModLog(Cog, name="ModLog"):
log.trace("Ignoring deletion of thread %s (%d)", thread.mention, thread.id)
return
- await self.send_log_message(
+ await send_log_message(
+ self.bot,
Icons.hash_red,
Colours.soft_red,
"Thread deleted",
@@ -868,7 +864,8 @@ class ModLog(Cog, name="ModLog"):
message = "\n".join(f"{Emojis.bullet} {item}" for item in sorted(changes))
message = f"{format_user(member)}\n{message}"
- await self.send_log_message(
+ await send_log_message(
+ self.bot,
icon_url=icon,
colour=colour,
title="Voice state updated",