| Commit message (Collapse) | Author | Lines |
|
#### 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.
|
|
|
|
Switch around trying order (txt first, then rst)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Use a coroutine instead of a list.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* Rename all parameters to "duration" for consistency
* Add missing docs about duration parameter to the superstarify command
|
|
|
|
|
|
|
|
This helps enable broader detection of tokens being used in contexts beyond simple assignment
|
|
https://github.com/python-discord/bot/issues/489
Recently, we discovered that not all display name changes were logged
to the #user-log channel. This problem was caused by the `old_value`
or the `new_value` showing up as `None` when a user sets or removes a
guild-specific nickname. Since we ignore changes where one of the two
values is `None`, we did not log these `None->nick` or `nick->None`
events.
Since we are mainly interested in the display name of the user, and
the display name is equal to the user's guild-specific nickname if
they have set one and otherwise their username, I made the following
changes:
- Add logging of changes in the display names of members.
- Ignore nick-specific changes completely, since these changes are
already captured by the changes in the display name we now log.
This closes #489
|
|
|
|
https://github.com/python-discord/bot/issues/476
We recently decided to hide the reason in the confirmation message
the bot sends after applying an infraction. In most situations, this
makes sense, since the message containing the invocation command
already contains the reason.
However, if the infraction was triggered by the bot itself (e.g., an
antispam trigger), this means that we're missing information that
provides context to the infraction.
This commit adds the reason back to the confirmation message, but
only if the actor of the infraction was the bot itself.
Closes #476
|
|
|
|
Closes #334
|
|
As mentioned in #476, the bot currently sets the actor of infractions
applied due to an antispam rule trigger to the offending member. The
reason is that we get a `Context` object from the message that
triggered the antispam rule, which was sent by the offender.
I've changed it by patching both available author attributes,
`Context.author` and `Context.message.author` with the bot user.
|
|
|
|
Co-Authored-By: Sebastiaan Zeeff <[email protected]>
|
|
|
|
* Rename batch_reload() to batch_manage() and make it accept an
action as a parameter so that it can be a generic function.
* Switch parameter order for manage() to make it consistent with
batch_manage().
* Always call batch_manage() and make it defer to manage() when only 1
extension is given.
* Make batch_manage() a regular method instead of a coroutine.
|
|
|
|
|
|
|
|
- Lock the role if the message wait has timed out
- Sleep, lock role and send notification if mention by staff member found.
- Lock role and send notification if mention by non-staff member found.
|
|
Changed `PERIODIC_PING` from 2 f-string to one normal and one f-string.
The bot now checks in the lasts 5 messages (why 5? Admins/mods could have add some notes, and/or users could have wrong taped the command, which lead the bot to send a message) the time of his last ping. If there is not historic ping, will send one (initialization and make the command more robust). If there is one previous `PERIODIC_PING` message, checks if it older than one week.
I also set the countdown from 1 to 12 hours. Why not more? Because each time the bot is restarted the countdown is reset to 0, and I don't know how often it is restarted.
|
|
Created a new function named `periodic_ping` in `verification.py`, using `discord.ext.tasks` and `datetime` module. Every hour the function checks if the last message in the channel (ie last message of the bot) is older than a week. If so, it deletes this message and post a new one.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Mac OS), that stores custom attributes of its containing folder. New contributors on Mac OS won't have to bother anymore about this mysterious file that create when you fork the project.
|
|
|
|
* Document support for custom categories.
|
|
|
|
|