| Commit message (Collapse) | Author | Age | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
It was being done repeatedly outside the function so let's move it in
to reduce redundancy.
|
| | | | | | |
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
- Created function `embed_description_match`.
- Implemented this to `is_empty`
- Implemented this to `is_dormant_message`
|
| | | | | |
| | | | |
| | | | | |
Co-authored-by: Mark <[email protected]>
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
- Created function `is_empty` that check is there any message in channel
after bot own available message.
- `on_message_delete` that reschedule task when message is on correct
channel and is empty.
- In `move_idle_channel` function, implemented choosing right cooldown,
based on is channel empty or not.
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This show how much minutes should this wait before making channel
dormant when no messages in channel (original message deleted).
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Invalid invites won't have data available to put in the embeds.
Fixes #929
Fixes BOT-3Z
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Ensures that nested directories aren't used as the value for the role
name.
|
| | | | | |
| | | | |
| | | | | |
Co-Authored-By: Mark <[email protected]>
|
| | | | | |
| | | | |
| | | | | |
Co-Authored-By: Mark <[email protected]>
|
| | | | | |
| | | | |
| | | | |
| | | | | |
Instead of using string methods to split the file path at `/` which is not cross-platform, I am now entirely using pathlib methods to get the parent folder and restrict the tags.
|
| | | | | | |
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This just tests that the various RuntimeErrors are reachable - that
includes the error about not having a bot instance, the one about not
being a class attribute, and the one about not having instantiated the
class.
This test addresses a concern raised by @MarkKoz in a review.
I've decided not to test that actual contents of these RuntimeErrors,
because I believe that sort of testing is a bit too brittle. It
shouldn't break a test just to change the content of an error string.
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | | |
Thanks @MarkKoz!
|
| | | | | | |
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
If you passed a key for a value that was the same as your optional, it
would just return it but not delete it. This edge case isn't worth it,
so I'm just removing that condition and letting the extra API call fly.
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Also, refactor error messages to be consistent and DRY throughout the
file.
|