diff options
| author | 2021-08-31 22:54:22 +0100 | |
|---|---|---|
| committer | 2021-09-01 00:54:22 +0300 | |
| commit | 75fa14d75e357d91a36666f60ac75c2f6f7e1f96 (patch) | |
| tree | 5c78412af809ae9d8dabe7a9df1ab0da479e0147 | |
| parent | Rewording botvars.md tag (#1786) (diff) | |
Add support for searching infractions by infraction id (#1787)
* Add support for searching infractions by infraction id
Can now search by infraction id via `!infraction {id}`.
| -rw-r--r-- | bot/exts/moderation/infraction/management.py | 25 | 
1 files changed, 21 insertions, 4 deletions
diff --git a/bot/exts/moderation/infraction/management.py b/bot/exts/moderation/infraction/management.py index 7f27896d7..223a124d8 100644 --- a/bot/exts/moderation/infraction/management.py +++ b/bot/exts/moderation/infraction/management.py @@ -11,6 +11,7 @@ from discord.ext.commands import Context  from discord.utils import escape_markdown  from bot import constants +from bot.api import ResponseCodeError  from bot.bot import Bot  from bot.converters import Expiry, Infraction, MemberOrUser, Snowflake, UnambiguousUser, allowed_strings  from bot.exts.moderation.infraction.infractions import Infractions @@ -44,9 +45,25 @@ class ModManagement(commands.Cog):      # region: Edit infraction commands      @commands.group(name='infraction', aliases=('infr', 'infractions', 'inf', 'i'), invoke_without_command=True) -    async def infraction_group(self, ctx: Context) -> None: -        """Infraction manipulation commands.""" -        await ctx.send_help(ctx.command) +    async def infraction_group(self, ctx: Context, infr_id: int = None) -> None: +        """Infraction manipulation commands. If `infr_id` is passed then this command fetches that infraction.""" +        if infr_id is None: +            await ctx.send_help(ctx.command) +            return + +        try: +            infraction_list = [await self.bot.api_client.get(f"bot/infractions/{infr_id}/expanded")] +        except ResponseCodeError as e: +            if e.status == 404: +                await ctx.send(f":x: No infraction with ID `{infr_id}` could be found.") +                return +            raise e + +        embed = discord.Embed( +            title=f"Infraction #{infr_id}", +            colour=discord.Colour.orange() +        ) +        await self.send_infraction_list(ctx, embed, infraction_list)      @infraction_group.command(name="append", aliases=("amend", "add", "a"))      async def infraction_append( @@ -210,7 +227,7 @@ class ModManagement(commands.Cog):          else:              await self.search_user(ctx, query) -    @infraction_search_group.command(name="user", aliases=("member", "id")) +    @infraction_search_group.command(name="user", aliases=("member", "userid"))      async def search_user(self, ctx: Context, user: t.Union[MemberOrUser, discord.Object]) -> None:          """Search for infractions by member."""          infraction_list = await self.bot.api_client.get(  |