aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bot/exts/moderation/infraction/management.py44
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,