| Commit message (Collapse) | Author | Lines | 
 | 
Co-Authored-By: Sebastiaan Zeeff <[email protected]>
 | 
 | 
 | 
 | 
 | 
 | 
Co-Authored-By: scragly <[email protected]>
 | 
 | 
Co-Authored-By: scragly <[email protected]>
 | 
 | 
Co-Authored-By: scragly <[email protected]>
 | 
 | 
https://github.com/python-discord/bot/issues/482
There was small bug in the `cog_unload` method of the WatchChannel
ABC in `bot.cogs.watchchannels.watchchannel`. The problem was that it
tries to check if the Task assigned to `self._consume_task` is done
by accessing its `done` method. However, if a watch channel has not
yet relayed messages after the bot has started, it will not have a
consumption task yet, meaning this `_consume_task` attribute will be
assigned to `None`.
The solution is to change the `if` condition to:
  `if self._consume_task and not self._consume_task.done():`
This commit closes #482
 | 
 | 
The two cogs will be listed under the same category in the help output.
 | 
 | 
* Rename already_has_active_infraction to has_active_infraction
* Fit some lines in utils to 100 columns
 | 
 | 
 | 
 | 
* Remove redundant discord.Colour() usage
* Fix type annotation of colour parameter for modlog.send_log_message()
* Use a cog check in superstarify to require moderation roles
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
* Cancel the task inside deactivate_infraction
 | 
 | 
* Shorten the mod log footer for pardons
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
* Use dateutil to parse expiration timestamp
 | 
 | 
 | 
 | 
 | 
 | 
* Display error in the confirmation message when the pardon fails
* Only attempt to remove the infraction from Discord once
 | 
 | 
* Rename to deactivate_infraction
* Send DM for unmute
* Log errors with logging module and to the mod log embed
* Return a dictionary representation of the mod log text
* Raise a ValueError for unsupported infraction types
 | 
 | 
 | 
 | 
 | 
 | 
The sub-package is now the extension instead of each module being a
separate extension. Thus, the setup methods are now useless.
 | 
 | 
 | 
 | 
 | 
 | 
* 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
 | 
 | 
 |