| Commit message (Collapse) | Author | Lines |
|
|
|
|
|
|
|
This cog will listen for duck reactions on any message, and then:
- If the reaction was added by a staff member
- and the reaction was a duck
- and the message has not already been added to the #duck-pond
It will add the message to the #duck-pond and then add a green checkbox
to the original message to indicate that the message has been ponded.
Messages are added to the #duck-pond via webhook, so that they can
retain the appearance of having their original authors.
Once this checkmark has been added, the message will not be processed in
the future.
If the checkmark is removed and there are more than ducks_required ducks
on the message, the bot will automatically add the checkmark back.
However, if all reactions are removed, the bot does not have a
countermeasure for this. In order to implement a countermeasure, it
would be necessary to involve the API and the database.
|
|
This adds the emojis, the channel, and the configuration needed
for the duck-pond feature. This is added both to config-default.yml,
and to the constants.py file.
|
|
|
|
|
|
|
|
|
|
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.
|
|
|