|  | Commit message (Collapse) | Author | Lines | 
|---|
|  | Before sending the attachments to API for logging, we now re-post them in the channel that have the id
stored in the constant Guild.attachment_repost (it needs to be configured). These new links will never expires. | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | The old method filtered only in #dev-test but this channel
no longer exists | 
|  | Avoid aving `Your reminder will arrive in 59 minutes and 59 seconds!`
instead of `Your reminder will arrive in 1 hour!` | 
|  |  | 
|  | - Update test cases for in_channel_check | 
|  |  | 
|  |  | 
|  | It is now truly backward compatible and use a more DRY method | 
|  |  | 
|  | - Change doc string for cog_check method | 
|  |  | 
|  | - Now it will only show the amount of days.
- Quality of Life: Also show `day` instead of `days` when it's just 1 day. | 
|  | - Update docstrings for `build_defcon_msg()` and `send_defcon_log()` - It is now taking in an `Action` directly instead of a string. | 
|  | - Remove the unneccessary `get_info()` method of Enum `Action`.
- Pass Enum `Action` directly to `build_defcon_msg()` and `send_defcon_log()` - Right now, only `_defcon_action()` is using them. | 
|  | - Renamed `DefconInfoLog` to `Action`
- Added `ActionInfo` namedtuple.
- Use `Action` consistently for `_defcon_action()` and `send_defcon_log()` | 
|  | - More informative docstrings for `Reddit.channel` and `get_top_posts`
- Add the `amount` parameter, defaulting to 5.
- Pin a max of 12 weeks worth of top posts. | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | - Further unify defcon actions in `_defcon_action` - Thanks to Mark's suggestions.
- Changed from a Dict to an Enum for defcon log info. | 
|  |  | 
|  |  | 
|  | #### Closes #539
This pull request fixes the issue for wrong status in the embed, as well as unifying certains if else to prevent similar future errors.
Most notable code is here:
```python
log_msg = f"**Staffer:** {actor} (`{actor.id}`)\n"
if change.lower() == "enabled":
    icon = Icons.defcon_enabled
    color = Colours.soft_green
    status_msg = "DEFCON enabled"
    log_msg += f"**Days:** {self.days.days}\n\n"
elif change.lower() == "disabled":
    icon = Icons.defcon_disabled
    color = Colours.soft_red
    status_msg = "DEFCON enabled"
elif change.lower() == "updated":
    icon = Icons.defcon_updated
    color = Colour.blurple()
    status_msg = "DEFCON updated"
    log_msg += f"**Days:** {self.days.days}\n\n"
```
To remedy this issue, the class will now have a private class variable
```py
_defcon_log_info: Dict[str, Tuple] = {
    'enabled': (Icons.defcon_enabled, Colours.soft_green, "**Days:** {days}\n\n"),
    'disabled': (Icons.defcon_disabled, Colours.soft_red, ""),
    'updated': (Icons.defcon_updated, Colour.blurple(), "**Days:** {days}\n\n"),
}
```
Another big change is the introduction of `_defcon_action` to unify the process all defcon actions has to go through:
- Try to do the action.
- Log error if there is any.
- Send log message. | 
|  |  | 
|  | Allow rule alias to take rule numbers, passes them to the `site rules`
command. Rules are now 1-indexed to conform with the representation on
the website. | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | This commit replaces the standard MagicMocks by our specialized mocks
for discord.py objects. It also adds the missing `channel` attribute
to the `tests.helpers.MockMessage` mock and moves the file to the
correct folder. | 
|  |  | 
|  |  | 
|  | This commit introduces some new Mock-types to the already existing
Mock-types for discord.py objects. The total list is now:
- MockGuild
- MockRole
- MockMember
- MockBot
- MockContext
- MockTextChannel
- MockMessage
In addition, I've added all coroutines in the documentation for these
discord.py objects as `AsyncMock` attributes to ease testing. Tests
ensure that the attributes set for the Mocks exist for the actual
discord.py objects as well. | 
|  |  |