Try to DM the user with the export file, and fall back to posting it in the channel if forbidden.
Uses reactions to confirm whether the user wants to have it posted in the channel.
This also refactors a large portion of the DI toolchain, since
I discovered that you shouldn't be reusing IDbConnection objects.
Instead, most services and stores are now declared transient, and
the webhook cache has been moved to a database-independent storage
singleton by itself.
* bot: add member count to system card
* bot: fix potential crash on edge case
Fixes a potential crash if a user queries the system card of a system with no members
* bot: tidy up code
* bot: move member count to embed title/Member field
Displays the member count (between parentheses) in the embed title if the system is named, otherwise shows it in the Member field title (again between parentheses)
* bot: move member count to Member field title entirely
Removed the member count from the embed title and display it in the Member field title within parentheses in all cases
* bot: fix a typo in root help message
* bot: update help to reflect new avatar set method
Updates the root help message and the avatar-specific help messages to include the new set avatar by message attachment function
* Update member_commands.py
Add ability to get avatar image from an attachment
* Update system_commands.py
Adding ability to get avatar from an attachment
* Update __init__.py
Setting `do_query_message` to accept full payload
* Update proxy.py
Adding code to remove question mark reaction after sending the message card
* Update proxy.py
Fixing type declaration in recent changes
* Fixing message grab
Getting the channel the reaction was handled in and changing the `fetch_message` call to grab from the channel
* Adding back pronouns option
Not sure why it was removed, honestly
* Fixing issues caused by PK using an outdated version of the lib. Whoops :')