diff options
-rw-r--r-- | bot/exts/moderation/infraction/management.py | 44 |
1 files changed, 28 insertions, 16 deletions
diff --git a/bot/exts/moderation/infraction/management.py b/bot/exts/moderation/infraction/management.py index 8c1ef057c..64913831a 100644 --- a/bot/exts/moderation/infraction/management.py +++ b/bot/exts/moderation/infraction/management.py @@ -243,8 +243,9 @@ class ModManagement(commands.Cog): else: user_str = str(user.id) + formatted_infraction_count = self.format_infraction_count(len(infraction_list)) embed = discord.Embed( - title=f"Infractions for {user_str} ({len(infraction_list)} total)", + title=f"Infractions for {user_str} ({formatted_infraction_count} total)", colour=discord.Colour.orange() ) await self.send_infraction_list(ctx, embed, infraction_list) @@ -256,45 +257,44 @@ class ModManagement(commands.Cog): 'bot/infractions/expanded', params={'search': reason} ) + + formatted_infraction_count = self.format_infraction_count(len(infraction_list)) embed = discord.Embed( - title=f"Infractions matching `{reason}` ({len(infraction_list)} total)", + title=f"Infractions matching `{reason}` ({formatted_infraction_count} total)", colour=discord.Colour.orange() ) await self.send_infraction_list(ctx, embed, infraction_list) # endregion - # region: Search infractions by given user + # region: Search for infractions by given actor @infraction_group.command(name="by", aliases=("b",)) - async def search_by_user( + async def search_by_actor( self, ctx: Context, - user: t.Union[discord.Member, t.Literal["m", "me"]], + actor: t.Union[discord.Member, t.Literal["m", "me"]], oldest_first: bool = False ) -> None: """ - Search for infractions made by `user`. + Search for infractions made by `actor`. - Use "m" or "me" as the `user` to get infractions by author. + Use "m" or "me" as the `actor` to get infractions by author. Use "1" for `oldest_first` to send oldest infractions first. """ - if isinstance(user, discord.Member): - moderator_id = user.id - moderator_name_discrim = str(user) - else: - moderator_id = ctx.author.id - moderator_name_discrim = str(ctx.author) + if isinstance(actor, str): + actor = ctx.author infraction_list = await self.bot.api_client.get( 'bot/infractions/expanded', params={ - 'actor__id': str(moderator_id), - 'ordering': f'{["-", ""][oldest_first]}inserted_at' # `'inserted_at'` makes api return oldest first + 'actor__id': str(actor.id), + 'ordering': f'{"-"[oldest_first:]}inserted_at' # `'inserted_at'` makes api return oldest first } ) + formatted_infraction_count = self.format_infraction_count(len(infraction_list)) embed = discord.Embed( - title=f"Infractions by `{moderator_name_discrim}` (`{moderator_id}`)", + title=f"Infractions by `{actor}` ({formatted_infraction_count} total)", colour=discord.Colour.orange() ) @@ -303,6 +303,18 @@ class ModManagement(commands.Cog): # endregion # region: Utility functions + @staticmethod + def format_infraction_count(infraction_count: int) -> str: + """ + Returns a string-formatted infraction count. + + API limits returned infractions to a maximum of 100, so if `infraction_count` + is 100 then we return `"100+"`. Otherwise, return `str(infraction_count)`. + """ + if infraction_count == 100: + return "100+" + return str(infraction_count) + async def send_infraction_list( self, ctx: Context, |