From 13d74fb538ae272376db0264cf314ea4a22dd8d1 Mon Sep 17 00:00:00 2001 From: Atmois Date: Mon, 16 Sep 2024 18:21:04 +0100 Subject: [PATCH 1/8] Update line about DM success --- tux/cogs/moderation/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tux/cogs/moderation/__init__.py b/tux/cogs/moderation/__init__.py index c2e10800..327a27a2 100644 --- a/tux/cogs/moderation/__init__.py +++ b/tux/cogs/moderation/__init__.py @@ -246,7 +246,7 @@ async def handle_case_response( if dm_sent: embed.description = "A DM has been sent to the user." else: - embed.description = "DMs are disabled for this user." + embed.description = "DMs are disabled for this user or the silent flag was used." await self.send_embed(ctx, embed, log_type="mod") await ctx.send(embed=embed, delete_after=30, ephemeral=True) From 82d3a0c21e4c43c8b40e98153e03025720c11f2d Mon Sep 17 00:00:00 2001 From: Atmois Date: Wed, 18 Sep 2024 20:50:45 +0100 Subject: [PATCH 2/8] Add flag as case type --- prisma/schema.prisma | 2 ++ 1 file changed, 2 insertions(+) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 777a9cc3..01a5f040 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -169,4 +169,6 @@ enum CaseType { UNJAIL SNIPPETUNBAN UNTEMPBAN + FLAG + UNFLAG } From 1742ab6c63daa3d3881420ea840bf0be94d02f86 Mon Sep 17 00:00:00 2001 From: Atmois Date: Wed, 18 Sep 2024 20:51:25 +0100 Subject: [PATCH 3/8] Add flags for flag and unflag --- tux/utils/flags.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tux/utils/flags.py b/tux/utils/flags.py index 176b6163..45f7162a 100644 --- a/tux/utils/flags.py +++ b/tux/utils/flags.py @@ -309,3 +309,21 @@ class SnippetUnbanFlags(commands.FlagConverter, case_insensitive=True, delimiter aliases=["s", "quiet"], default=False, ) + + +class FlagFlags(commands.FlagConverter, case_insensitive=True, delimiter=" ", prefix="-"): + reason: str = commands.flag( + name="reason", + description="Reason for the user flag.", + aliases=["r"], + default=MISSING, + ) + + +class UnFlagFlags(commands.FlagConverter, case_insensitive=True, delimiter=" ", prefix="-"): + reason: str = commands.flag( + name="reason", + description="Reason for the user unflag.", + aliases=["r"], + default=MISSING, + ) From 599452eb62c49f04f6d00b5d111e6b253405bb76 Mon Sep 17 00:00:00 2001 From: Atmois Date: Wed, 18 Sep 2024 20:51:48 +0100 Subject: [PATCH 4/8] Create flag command --- tux/cogs/moderation/flag.py | 93 +++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 tux/cogs/moderation/flag.py diff --git a/tux/cogs/moderation/flag.py b/tux/cogs/moderation/flag.py new file mode 100644 index 00000000..84c04c78 --- /dev/null +++ b/tux/cogs/moderation/flag.py @@ -0,0 +1,93 @@ +import discord +from discord.ext import commands + +from prisma.enums import CaseType +from tux.bot import Tux +from tux.database.controllers.case import CaseController +from tux.utils import checks +from tux.utils.flags import FlagFlags, generate_usage + +from . import ModerationCogBase + + +class Flag(ModerationCogBase): + def __init__(self, bot: Tux) -> None: + super().__init__(bot) + self.case_controller = CaseController() + self.flag.usage = generate_usage(self.flag, FlagFlags) + + @commands.hybrid_command( + name="flag", + aliases=["fl"], + ) + @commands.guild_only() + @checks.has_pl(2) + async def flag( + self, + ctx: commands.Context[Tux], + member: discord.Member, + *, + flags: FlagFlags, + ) -> None: + """ + Flag a member from the server. + + Parameters + ---------- + ctx : commands.Context[Tux] + The context in which the command is being invoked. + member : discord.Member + The member to flag. + flags : FlagFlags + The flags for the command. (reason: str, silent: bool) + """ + + assert ctx.guild + + if await self.is_flagged(ctx.guild.id, member.id): + await ctx.send("User is already flagged.", delete_after=30, ephemeral=True) + return + + moderator = ctx.author + + if not await self.check_conditions(ctx, member, moderator, "flag"): + return + + case = await self.db.case.insert_case( + case_user_id=member.id, + case_moderator_id=ctx.author.id, + case_type=CaseType.FLAG, + case_reason=flags.reason, + guild_id=ctx.guild.id, + ) + + await self.handle_case_response(ctx, CaseType.FLAG, case.case_number, flags.reason, member, False) + + async def is_flagged(self, guild_id: int, user_id: int) -> bool: + """ + Check if a user is flagged. + + Parameters + ---------- + guild_id : int + The ID of the guild to check in. + user_id : int + The ID of the user to check. + + Returns + ------- + bool + True if the user is flagged, False otherwise. + """ + + flag_cases = await self.case_controller.get_all_cases_by_type(guild_id, CaseType.FLAG) + unflag_cases = await self.case_controller.get_all_cases_by_type(guild_id, CaseType.UNFLAG) + + flag_count = sum(case.case_user_id == user_id for case in flag_cases) + unflag_count = sum(case.case_user_id == user_id for case in unflag_cases) + + return flag_count > unflag_count + + +async def setup(bot: Tux) -> None: + await bot.add_cog(Flag(bot)) From efd1174f3278fff7a4461b04f9e5611d949c7160 Mon Sep 17 00:00:00 2001 From: Atmois Date: Wed, 18 Sep 2024 20:52:01 +0100 Subject: [PATCH 5/8] Create unflag command --- tux/cogs/moderation/unflag.py | 93 +++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 tux/cogs/moderation/unflag.py diff --git a/tux/cogs/moderation/unflag.py b/tux/cogs/moderation/unflag.py new file mode 100644 index 00000000..9628a0e0 --- /dev/null +++ b/tux/cogs/moderation/unflag.py @@ -0,0 +1,93 @@ +import discord +from discord.ext import commands + +from prisma.enums import CaseType +from tux.bot import Tux +from tux.database.controllers.case import CaseController +from tux.utils import checks +from tux.utils.flags import UnFlagFlags, generate_usage + +from . import ModerationCogBase + + +class Flag(ModerationCogBase): + def __init__(self, bot: Tux) -> None: + super().__init__(bot) + self.case_controller = CaseController() + self.unflag.usage = generate_usage(self.unflag, UnFlagFlags) + + @commands.hybrid_command( + name="unflag", + aliases=["ufl"], + ) + @commands.guild_only() + @checks.has_pl(2) + async def unflag( + self, + ctx: commands.Context[Tux], + member: discord.Member, + *, + flags: UnFlagFlags, + ) -> None: + """ + Unflag a member from the server. + + Parameters + ---------- + ctx : commands.Context[Tux] + The context in which the command is being invoked. + member : discord.Member + The member to unflag. + flags : UnFlagFlags + The flags for the command. (reason: str, silent: bool) + """ + + assert ctx.guild + + if not await self.is_flagged(ctx.guild.id, member.id): + await ctx.send("User is not flagged.", delete_after=30, ephemeral=True) + return + + moderator = ctx.author + + if not await self.check_conditions(ctx, member, moderator, "unflag"): + return + + case = await self.db.case.insert_case( + case_user_id=member.id, + case_moderator_id=ctx.author.id, + case_type=CaseType.UNFLAG, + case_reason=flags.reason, + guild_id=ctx.guild.id, + ) + + await self.handle_case_response(ctx, CaseType.UNFLAG, case.case_number, flags.reason, member, False) + + async def is_flagged(self, guild_id: int, user_id: int) -> bool: + """ + Check if a user is flagged. + + Parameters + ---------- + guild_id : int + The ID of the guild to check in. + user_id : int + The ID of the user to check. + + Returns + ------- + bool + True if the user is flagged, False otherwise. + """ + + flag_cases = await self.case_controller.get_all_cases_by_type(guild_id, CaseType.FLAG) + unflag_cases = await self.case_controller.get_all_cases_by_type(guild_id, CaseType.UNFLAG) + + flag_count = sum(case.case_user_id == user_id for case in flag_cases) + unflag_count = sum(case.case_user_id == user_id for case in unflag_cases) + + return flag_count > unflag_count + + +async def setup(bot: Tux) -> None: + await bot.add_cog(Flag(bot)) From 53a6588004d506ddfe514d2c9cb4382ad618ac23 Mon Sep 17 00:00:00 2001 From: Atmois Date: Wed, 18 Sep 2024 21:13:29 +0100 Subject: [PATCH 6/8] Added silent_action flag for private moderator actions --- tux/cogs/moderation/__init__.py | 5 ++++- tux/cogs/moderation/ban.py | 2 +- tux/cogs/moderation/flag.py | 6 +++--- tux/cogs/moderation/jail.py | 2 +- tux/cogs/moderation/kick.py | 2 +- tux/cogs/moderation/snippetban.py | 10 +++++++++- tux/cogs/moderation/snippetunban.py | 10 +++++++++- tux/cogs/moderation/tempban.py | 2 +- tux/cogs/moderation/timeout.py | 1 + tux/cogs/moderation/unban.py | 10 +++++++++- tux/cogs/moderation/unflag.py | 10 +++++++++- tux/cogs/moderation/unjail.py | 10 +++++++++- tux/cogs/moderation/untimeout.py | 10 +++++++++- tux/cogs/moderation/warn.py | 10 +++++++++- 14 files changed, 75 insertions(+), 15 deletions(-) diff --git a/tux/cogs/moderation/__init__.py b/tux/cogs/moderation/__init__.py index 327a27a2..4127f0fc 100644 --- a/tux/cogs/moderation/__init__.py +++ b/tux/cogs/moderation/__init__.py @@ -212,6 +212,7 @@ async def handle_case_response( reason: str, user: discord.Member | discord.User, dm_sent: bool, + silent_action: bool, duration: str | None = None, ): moderator = ctx.author @@ -248,5 +249,7 @@ async def handle_case_response( else: embed.description = "DMs are disabled for this user or the silent flag was used." - await self.send_embed(ctx, embed, log_type="mod") + if not silent_action: + await self.send_embed(ctx, embed, log_type="mod") + await ctx.send(embed=embed, delete_after=30, ephemeral=True) diff --git a/tux/cogs/moderation/ban.py b/tux/cogs/moderation/ban.py index 7fefd79b..75322f23 100644 --- a/tux/cogs/moderation/ban.py +++ b/tux/cogs/moderation/ban.py @@ -69,7 +69,7 @@ async def ban( guild_id=ctx.guild.id, ) - await self.handle_case_response(ctx, CaseType.BAN, case.case_number, flags.reason, member, dm_sent) + await self.handle_case_response(ctx, CaseType.BAN, case.case_number, flags.reason, member, dm_sent, False) async def setup(bot: Tux) -> None: diff --git a/tux/cogs/moderation/flag.py b/tux/cogs/moderation/flag.py index 84c04c78..c5024a07 100644 --- a/tux/cogs/moderation/flag.py +++ b/tux/cogs/moderation/flag.py @@ -10,7 +10,7 @@ from . import ModerationCogBase -class Flag(ModerationCogBase): +class Unflag(ModerationCogBase): def __init__(self, bot: Tux) -> None: super().__init__(bot) self.case_controller = CaseController() @@ -61,7 +61,7 @@ async def flag( guild_id=ctx.guild.id, ) - await self.handle_case_response(ctx, CaseType.FLAG, case.case_number, flags.reason, member, False) + await self.handle_case_response(ctx, CaseType.FLAG, case.case_number, flags.reason, member, False, True) async def is_flagged(self, guild_id: int, user_id: int) -> bool: """ @@ -90,4 +90,4 @@ async def is_flagged(self, guild_id: int, user_id: int) -> bool: async def setup(bot: Tux) -> None: - await bot.add_cog(Flag(bot)) + await bot.add_cog(Unflag(bot)) diff --git a/tux/cogs/moderation/jail.py b/tux/cogs/moderation/jail.py index 5a51bcbd..eb834de1 100644 --- a/tux/cogs/moderation/jail.py +++ b/tux/cogs/moderation/jail.py @@ -103,7 +103,7 @@ async def jail( # noqa: PLR0911 return dm_sent = await self.send_dm(ctx, flags.silent, member, flags.reason, "jailed") - await self.handle_case_response(ctx, CaseType.JAIL, case.case_number, flags.reason, member, dm_sent) + await self.handle_case_response(ctx, CaseType.JAIL, case.case_number, flags.reason, member, dm_sent, False) def _get_manageable_roles( self, diff --git a/tux/cogs/moderation/kick.py b/tux/cogs/moderation/kick.py index 737bbeba..500da38f 100644 --- a/tux/cogs/moderation/kick.py +++ b/tux/cogs/moderation/kick.py @@ -73,7 +73,7 @@ async def kick( guild_id=ctx.guild.id, ) - await self.handle_case_response(ctx, CaseType.KICK, case.case_number, flags.reason, member, dm_sent) + await self.handle_case_response(ctx, CaseType.KICK, case.case_number, flags.reason, member, dm_sent, False) async def setup(bot: Tux) -> None: diff --git a/tux/cogs/moderation/snippetban.py b/tux/cogs/moderation/snippetban.py index 80cd3ef8..9d04eddd 100644 --- a/tux/cogs/moderation/snippetban.py +++ b/tux/cogs/moderation/snippetban.py @@ -64,7 +64,15 @@ async def snippet_ban( return dm_sent = await self.send_dm(ctx, flags.silent, member, flags.reason, "snippet banned") - await self.handle_case_response(ctx, CaseType.SNIPPETBAN, case.case_number, flags.reason, member, dm_sent) + await self.handle_case_response( + ctx, + CaseType.SNIPPETBAN, + case.case_number, + flags.reason, + member, + dm_sent, + False, + ) async def is_snippetbanned(self, guild_id: int, user_id: int) -> bool: """ diff --git a/tux/cogs/moderation/snippetunban.py b/tux/cogs/moderation/snippetunban.py index d9fea55f..5ccc0fb8 100644 --- a/tux/cogs/moderation/snippetunban.py +++ b/tux/cogs/moderation/snippetunban.py @@ -64,7 +64,15 @@ async def snippet_unban( return dm_sent = await self.send_dm(ctx, flags.silent, member, flags.reason, "snippet unbanned") - await self.handle_case_response(ctx, CaseType.SNIPPETUNBAN, case.case_number, flags.reason, member, dm_sent) + await self.handle_case_response( + ctx, + CaseType.SNIPPETUNBAN, + case.case_number, + flags.reason, + member, + dm_sent, + False, + ) async def is_snippetbanned(self, guild_id: int, user_id: int) -> bool: """ diff --git a/tux/cogs/moderation/tempban.py b/tux/cogs/moderation/tempban.py index 3033c061..c681eb45 100644 --- a/tux/cogs/moderation/tempban.py +++ b/tux/cogs/moderation/tempban.py @@ -76,7 +76,7 @@ async def tempban( case_tempban_expired=False, ) - await self.handle_case_response(ctx, CaseType.TEMPBAN, case.case_number, flags.reason, member, dm_sent) + await self.handle_case_response(ctx, CaseType.TEMPBAN, case.case_number, flags.reason, member, dm_sent, False) @tasks.loop(hours=1) async def tempban_check(self) -> None: diff --git a/tux/cogs/moderation/timeout.py b/tux/cogs/moderation/timeout.py index e908ada2..16fd92a2 100644 --- a/tux/cogs/moderation/timeout.py +++ b/tux/cogs/moderation/timeout.py @@ -86,6 +86,7 @@ async def timeout( flags.reason, member, dm_sent, + False, flags.duration, ) diff --git a/tux/cogs/moderation/unban.py b/tux/cogs/moderation/unban.py index b6a7b2de..4d5c1d95 100644 --- a/tux/cogs/moderation/unban.py +++ b/tux/cogs/moderation/unban.py @@ -74,7 +74,15 @@ async def unban( case_reason=flags.reason, ) - await self.handle_case_response(ctx, CaseType.UNBAN, case.case_number, flags.reason, user, dm_sent=False) + await self.handle_case_response( + ctx, + CaseType.UNBAN, + case.case_number, + flags.reason, + user, + dm_sent=False, + silent_action=False, + ) async def setup(bot: Tux) -> None: diff --git a/tux/cogs/moderation/unflag.py b/tux/cogs/moderation/unflag.py index 9628a0e0..1aba35d1 100644 --- a/tux/cogs/moderation/unflag.py +++ b/tux/cogs/moderation/unflag.py @@ -61,7 +61,15 @@ async def unflag( guild_id=ctx.guild.id, ) - await self.handle_case_response(ctx, CaseType.UNFLAG, case.case_number, flags.reason, member, False) + await self.handle_case_response( + ctx, + CaseType.UNFLAG, + case.case_number, + flags.reason, + member, + False, + silent_action=True, + ) async def is_flagged(self, guild_id: int, user_id: int) -> bool: """ diff --git a/tux/cogs/moderation/unjail.py b/tux/cogs/moderation/unjail.py index 2c3df2cb..a866f504 100644 --- a/tux/cogs/moderation/unjail.py +++ b/tux/cogs/moderation/unjail.py @@ -88,7 +88,15 @@ async def unjail( dm_sent = await self.send_dm(ctx, flags.silent, member, flags.reason, "unjailed") - await self.handle_case_response(ctx, CaseType.UNJAIL, unjail_case.case_number, flags.reason, member, dm_sent) + await self.handle_case_response( + ctx, + CaseType.UNJAIL, + unjail_case.case_number, + flags.reason, + member, + dm_sent, + silent_action=False, + ) async def setup(bot: Tux) -> None: diff --git a/tux/cogs/moderation/untimeout.py b/tux/cogs/moderation/untimeout.py index 27b3adbe..9b1da072 100644 --- a/tux/cogs/moderation/untimeout.py +++ b/tux/cogs/moderation/untimeout.py @@ -72,7 +72,15 @@ async def untimeout( ) dm_sent = await self.send_dm(ctx, flags.silent, member, flags.reason, "untimed out") - await self.handle_case_response(ctx, CaseType.UNTIMEOUT, case.case_number, flags.reason, member, dm_sent) + await self.handle_case_response( + ctx, + CaseType.UNTIMEOUT, + case.case_number, + flags.reason, + member, + dm_sent, + silent_action=False, + ) async def setup(bot: Tux) -> None: diff --git a/tux/cogs/moderation/warn.py b/tux/cogs/moderation/warn.py index d72ddb7b..2ae14265 100644 --- a/tux/cogs/moderation/warn.py +++ b/tux/cogs/moderation/warn.py @@ -56,7 +56,15 @@ async def warn( ) dm_sent = await self.send_dm(ctx, flags.silent, member, flags.reason, "warn") - await self.handle_case_response(ctx, CaseType.WARN, case.case_number, flags.reason, member, dm_sent) + await self.handle_case_response( + ctx, + CaseType.WARN, + case.case_number, + flags.reason, + member, + dm_sent, + silent_action=False, + ) async def setup(bot: Tux) -> None: From 5db51cbb992b3ea85eae18261f50b8ee6fd58772 Mon Sep 17 00:00:00 2001 From: Atmois Date: Wed, 18 Sep 2024 21:24:25 +0100 Subject: [PATCH 7/8] Improve maintainabilty by adding info about parameters for handle_case response --- tux/cogs/moderation/ban.py | 10 +++++++++- tux/cogs/moderation/flag.py | 10 +++++++++- tux/cogs/moderation/jail.py | 10 +++++++++- tux/cogs/moderation/kick.py | 10 +++++++++- tux/cogs/moderation/snippetban.py | 2 +- tux/cogs/moderation/snippetunban.py | 2 +- tux/cogs/moderation/tempban.py | 10 +++++++++- tux/cogs/moderation/unflag.py | 2 +- 8 files changed, 48 insertions(+), 8 deletions(-) diff --git a/tux/cogs/moderation/ban.py b/tux/cogs/moderation/ban.py index 75322f23..4195366f 100644 --- a/tux/cogs/moderation/ban.py +++ b/tux/cogs/moderation/ban.py @@ -69,7 +69,15 @@ async def ban( guild_id=ctx.guild.id, ) - await self.handle_case_response(ctx, CaseType.BAN, case.case_number, flags.reason, member, dm_sent, False) + await self.handle_case_response( + ctx, + CaseType.BAN, + case.case_number, + flags.reason, + member, + dm_sent, + silent_action=False, + ) async def setup(bot: Tux) -> None: diff --git a/tux/cogs/moderation/flag.py b/tux/cogs/moderation/flag.py index c5024a07..8fc4e289 100644 --- a/tux/cogs/moderation/flag.py +++ b/tux/cogs/moderation/flag.py @@ -61,7 +61,15 @@ async def flag( guild_id=ctx.guild.id, ) - await self.handle_case_response(ctx, CaseType.FLAG, case.case_number, flags.reason, member, False, True) + await self.handle_case_response( + ctx, + CaseType.FLAG, + case.case_number, + flags.reason, + member, + dm_sent=False, + silent_action=True, + ) async def is_flagged(self, guild_id: int, user_id: int) -> bool: """ diff --git a/tux/cogs/moderation/jail.py b/tux/cogs/moderation/jail.py index eb834de1..d0d8a225 100644 --- a/tux/cogs/moderation/jail.py +++ b/tux/cogs/moderation/jail.py @@ -103,7 +103,15 @@ async def jail( # noqa: PLR0911 return dm_sent = await self.send_dm(ctx, flags.silent, member, flags.reason, "jailed") - await self.handle_case_response(ctx, CaseType.JAIL, case.case_number, flags.reason, member, dm_sent, False) + await self.handle_case_response( + ctx, + CaseType.JAIL, + case.case_number, + flags.reason, + member, + dm_sent, + silent_action=False, + ) def _get_manageable_roles( self, diff --git a/tux/cogs/moderation/kick.py b/tux/cogs/moderation/kick.py index 500da38f..ae07f3d1 100644 --- a/tux/cogs/moderation/kick.py +++ b/tux/cogs/moderation/kick.py @@ -73,7 +73,15 @@ async def kick( guild_id=ctx.guild.id, ) - await self.handle_case_response(ctx, CaseType.KICK, case.case_number, flags.reason, member, dm_sent, False) + await self.handle_case_response( + ctx, + CaseType.KICK, + case.case_number, + flags.reason, + member, + dm_sent, + silent_action=False, + ) async def setup(bot: Tux) -> None: diff --git a/tux/cogs/moderation/snippetban.py b/tux/cogs/moderation/snippetban.py index 9d04eddd..b3ec5221 100644 --- a/tux/cogs/moderation/snippetban.py +++ b/tux/cogs/moderation/snippetban.py @@ -71,7 +71,7 @@ async def snippet_ban( flags.reason, member, dm_sent, - False, + silent_action=False, ) async def is_snippetbanned(self, guild_id: int, user_id: int) -> bool: diff --git a/tux/cogs/moderation/snippetunban.py b/tux/cogs/moderation/snippetunban.py index 5ccc0fb8..afe3b0ec 100644 --- a/tux/cogs/moderation/snippetunban.py +++ b/tux/cogs/moderation/snippetunban.py @@ -71,7 +71,7 @@ async def snippet_unban( flags.reason, member, dm_sent, - False, + silent_action=False, ) async def is_snippetbanned(self, guild_id: int, user_id: int) -> bool: diff --git a/tux/cogs/moderation/tempban.py b/tux/cogs/moderation/tempban.py index c681eb45..de50c18e 100644 --- a/tux/cogs/moderation/tempban.py +++ b/tux/cogs/moderation/tempban.py @@ -76,7 +76,15 @@ async def tempban( case_tempban_expired=False, ) - await self.handle_case_response(ctx, CaseType.TEMPBAN, case.case_number, flags.reason, member, dm_sent, False) + await self.handle_case_response( + ctx, + CaseType.TEMPBAN, + case.case_number, + flags.reason, + member, + dm_sent, + silent_action=False, + ) @tasks.loop(hours=1) async def tempban_check(self) -> None: diff --git a/tux/cogs/moderation/unflag.py b/tux/cogs/moderation/unflag.py index 1aba35d1..6a6d9498 100644 --- a/tux/cogs/moderation/unflag.py +++ b/tux/cogs/moderation/unflag.py @@ -67,7 +67,7 @@ async def unflag( case.case_number, flags.reason, member, - False, + dm_sent=False, silent_action=True, ) From 58fa186e9a8d493ef1baecf0fd6460375fad8908 Mon Sep 17 00:00:00 2001 From: Atmois Date: Wed, 18 Sep 2024 21:27:34 +0100 Subject: [PATCH 8/8] add placeholder emojis for flag and unflag --- tux/cogs/moderation/cases.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tux/cogs/moderation/cases.py b/tux/cogs/moderation/cases.py index a80e0b7a..bf88f803 100644 --- a/tux/cogs/moderation/cases.py +++ b/tux/cogs/moderation/cases.py @@ -25,6 +25,8 @@ "jail": 1268115750392954880, "snippetban": 1277174953950576681, "snippetunban": 1277174953292337222, + "flag": 1275782294363312172, + "unflag": 1275782294363312172, } @@ -381,6 +383,8 @@ def _get_case_type_emoji(self, case_type: CaseType) -> discord.Emoji | None: CaseType.UNJAIL: "jail", CaseType.SNIPPETBAN: "snippetban", CaseType.SNIPPETUNBAN: "snippetunban", + CaseType.FLAG: "flag", + CaseType.UNFLAG: "unflag", } emoji_name = emoji_map.get(case_type) if emoji_name is not None: