Change infraction methods to OOP based api and update output formatting.
This issue is to outline the changes that I'm working on regarding our infraction commands and the internal changes to how we'll be able to request and manipulate infraction data, hopefully in an update that will be more friendly for future maintenance and adjustments.
Infractions will have a proper Infraction class, with data we receive from the site API being converted into instances representing individual infractions. All standard actions we'd do to view, format and edit infraction data will be assisted by attributes and methods of this class.
In order to better organise the required class models for API objects, it'll be organised into its own package directory under bot.api and easily imported from anywhere in the project, rather than the current setup where helper methods are spread across multiple modules and extensions.
The API client will gain methods for retrieving these new objects, such as api_client.get_infraction which will fetch the required data from the api and return the already created model instances for us to use.
The formatting for our infraction search commands will be updated also, hopefully giving us an improvement in information density and general aesthetic appeal over the old layouts. Current in-progress example is:

Anything close by relating to user-facing formatting or general usability improvements will be attempted to be addressed also while touching this section of the bot.
I filed #1241 before noticing this, but that's something this should cover.
~~@scragly If you haven't thought about this already, a nickname (if it exists) should be included at the top of the embed.~~
Nevermind, the difference between the mention and the full name with discriminator does the job.
Are you currently still working on this new system?