| Commit message (Collapse) | Author | Lines | 
 | 
* Read names from JSON instead of a module
* Move get_nick function inside the Superstarify cog
* Load Superstarify cog through the moderation extension
* Define __all__ for moderation module
 | 
 | 
* Rename Infractions cog to ModManagement
* Rename Moderation cog to Infractions
* Rename infractions.py to management.py
* Rename moderation.py to infractions.py
* Move moderation utils to sub-package and rename to utils.py
* Move Modlog, Infractions, and ModManagement to sub-package
* Use sub-package as an extension that loads aforementioned cogs
 | 
 | 
 | 
 | 
Commands defer to these functions, configuring them to be temporary
and/or shadow infractions by passing some kwargs. This reduces code
redundancy.
 | 
 | 
 | 
 | 
* Rename UserConverter to MemberConverter
* Rename UserObject to MemberObject
* Move MemberObject to moderation utils module
* Move proxy_user to moderation utils module
 | 
 | 
* Rename to apply_infraction
* Make messages more generic to simplify implementation
* Send the confirmation message inside the function; return nothing
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
* Add warning & note icons to the infraction icons dictionary
 | 
 | 
 | 
 | 
* Rename the UserTypes alias to UserConverter
* Create a new non-converter alias similar to UserConverter which has
  Object instead of the proxy_user converter in the Union.
* Use the new alias in the utility functions instead of just a Union of
  a Member and User.
 | 
 | 
These adjustments make it easier to call the function using values
directly from the infraction object as arguments.
* Set actual default values inside the function if values are None
* Accept only a string for expires_at
 | 
 | 
 | 
 | 
It may also be an Asset because when converted to a string the URL is
returned.
 | 
 | 
* Always return None from inner function
* Change annotation of self parameter to Cog
 | 
 | 
 | 
 | 
* Add some logging
 | 
 | 
* Move respect_role_hierarchy to the decorators modules
* Get the command name from the context instead of an argument
 | 
 | 
 | 
 | 
It looks silly
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
Co-Authored-By: Mark <[email protected]>
 | 
 | 
 | 
 | 
Anyone who is not a Rockstar, a Partner, or a member of staff
will still be redirected to #bot-commands.
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
The watchchannel ABC defined its own private utility function to
format ISO datetime strings to something more human-readable. I have
removed this private utility function and replaced the calls to it
with calls to the new `format_infraction` utility function defined in
bot.utils.time.
In addition, I've changed the utility function to use `dateutil` to
parse the datetime string, since `dateutil.parser.isoparse` supports
the strings our API generates out of the box. With the built-in
`datetime.datetime.fromisoformat`, we needed to prepare the string by
slicing of the `Z` timezone indicator.
 | 
 | 
The format used is %Y-%m-%d %H:%M.
 | 
 | 
 | 
 | 
 | 
 | 
Both the duration and the reason can be edited with the new command.
* Remove try-except; the default error handler is already adequate
* Remove the new reason from the confirmation message
* Simplify humanisation of the timestamp in the confirmation message
* Add a converter to support permanent durations
 | 
 | 
Discord.py's internals use the __func__ attribute of special methods
(cog_command_error, cog_check, cog_before_invoke, cog_after_invoke).
Therefore the methods must be bound methods rather than static so that
the attribute exists.
 | 
 | 
- For the sake of code style and consistency, the lambda has been swapped with operator.itemgetter
Signed-off-by: Daniel Brown <[email protected]>
 | 
 | 
- Moved the sorted function to its own line and instead passed the generated list for code clarity.
Signed-off-by: Daniel Brown <[email protected]>
 | 
 | 
- Fixed bug where if two channels had the same last message timestamp the command would error out.
Signed-off-by: Daniel Brown <[email protected]>
 | 
 | 
Closes #325
 | 
 | 
KAIZEN!
Closes #385
 | 
 | 
Closes #453
 | 
 | 
Add previous permanent mute invocations as aliases of their
respective mute commands.
Closes #318
 |