| Commit message (Collapse) | Author | Age | Lines |
| | |
|
| |
|
| |
Co-authored-by: Joseph Banks <[email protected]>
|
| |
|
| |
Co-authored-by: Joseph Banks <[email protected]>
|
| | |
|
| |
|
|
|
|
| |
When cogs reload, it would consider their namespace as a conflict with
the original namespace. This feature will be removed as a fix until we
come up with a better solution.
|
| | |
|
| | |
|
| |
|
|
| |
- Use UTC from timestamp
- Rename name bad words checking function
|
| |
|
| |
Co-authored-by: Mark <[email protected]>
|
| |\ |
|
| | |
| |
| | |
Move lock creation from `bad_words_in_name` to `__init__`
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| |/ |
|
| |
|
|
|
|
|
| |
- Make `bad_words_in_name` and attach it to current `on_message`.
- Implement `asyncio.Lock` to avoid race conditions.
- Made that this first check is there matches and when there is,
check for alert.
|
| | |
|
| |\
| |
| | |
RedisCache - Data Persistence
|
| | | |
|
| | |
| |
| |
| | |
This addresses a review comment by @aeros.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The bot can get into trouble in three distinct ways:
- It has no Bot instance
- It has no namespace
- It has no parent instance.
These happen only if you're using it wrong. To make the test more
precise, and to add a little bit more readability (RuntimeError could be
anything!), we'll introduce some custom exceptions for these three
states.
This addresses a review comment by @aeros.
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| | |
- Refactor error messages in _to_typestring and _from_typestring to just
print the prefix tuples instead of that custom error string.
- Create a RedisKeyOrValue type to simplify some annotations.
- Simplify partialmethod calls.
- Make the signatures for _to_typestring and _from_typestring one-liners
- Fix a typo in the errors.
|
| | |\
| |/
|/| |
|
| |\ \
| | |
| | |
| | |
| | | |
python-discord/moderation_commands_in_modmail_category
Permit moderation commands in ModMail category
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | | |
This check was no longer being used anywhere, having been replaced by
in_whitelist_check.
|
| | |\ \
| |/ /
|/| | |
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | | |
For example, we don't want the mod commands to produce any kind of error
message when run by ordinary users in regular channels - these should
have the perception of being invisible and unavailable.
|
| | | | |
|
| | | | |
|
| | | | |
|
| |/ /
| |
| |
| |
| |
| |
| |
| |
| | |
We're moving the actual predicate into the `utils.checks` folder, just
like we're doing with most of the other decorators. This is to allow us
the flexibility to use it as a pure check, not only as a decorator.
This commit doesn't actually change any functionality, just moves it
around.
|
| | |
| |
| |
| | |
I should be shot.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| | |
We're using functools.partialmethod to make the code a little cleaner
and more readable here.
Read more about them here:
https://docs.python.org/3/library/functools.html#functools.partial
https://docs.python.org/3/library/functools.html#functools.partialmethod
|
| | |
| |
| |
| |
| |
| |
| | |
Also added a test for this.
This is the DRYest approach I could find. It's a little ugly, but I
think it's probably good enough.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The way we were doing the asyncio.Lock() stuff for increment was
slightly problematic. @aeros has adviced us that it's better to just
initialize the lock as None in __init__, and then initialize it inside
the first coroutine that uses it instead. This ensures that the correct
loop gets attached to the lock, so we don't end up getting errors like
this one:
RuntimeError: got Future <Future pending> attached to a different loop
This happens because the lock and the actual calling coroutines aren't
on the same loop. When creating a new test, test_increment_lock, we
discovered that we needed a small refactor here and also in the test
class to make this new test pass.
So, now we're creating a DummyCog for every test method, and this will
ensure the loop streams never cross. Cause we all know we must never
cross the streams.
|
| | | |
|
| | |\
| |/
|/| |
|
| |\ \
| | |
| | | |
feature to restrict tags to specific role(s)
|
| | |\ \
| |/ /
|/| | |
|
| | | | |
|
| |\ \ \
| | | |
| | | | |
Filtering: don't attempt to send additional embeds for invalid invites
|
| | |\ \ \
| |/ / /
|/| | | |
|
| | | | | |
|
| |\ \ \ \
| | | | |
| | | | | |
Help System: Move dormant faster if help channel is empty
|
| | |\ \ \ \
| |/ / / /
|/| | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
At this point, it's just a thin wrapper to call another function. It's
redundant.
|