| Commit message (Collapse) | Author | Age | Lines |
| ... | |
| | | | |
|
| | | |
| | |
| | |
| | |
| | | |
This means we can validate invites that start with https://, whereas
before we could not.
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | | |
This is an optimization designed to eliminate all the list
comprehensions we were doing inside antimalware and filtering. The cache
is now structured so that the content is the key and the metadata is the
value.
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | |
| | |
| | |
| | | |
This is necessary to support walrus operators.
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | | |
Addresses reviews from MarkKoz
Co-authored-by: Mark <[email protected]>
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We now filter guild invites the following way:
- Whitelisted invites are always permitted.
- Blacklisted invites are never permitted.
- If the invite is not blacklisted, it is permitted only if it is a
Verified or a Partnered server, otherwise not.
This strategy was decided on during the June 7th staff meeting, see
https://github.com/python-discord/organisation/issues/261
|
| | | |
| | |
| | |
| | |
| | | |
We want to support deletion of both IDs and guild invites, so we need a
bit of special handling for that.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We will now validate and convert any standard discord server invite to a
guild ID, and automatically add the name of the server as a comment.
This will ensure that the list of whitelisted guild IDs will be readable
and nice.
This also makes minor changes to list output aesthetics.
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | | |
This gives easier access to the Guild ID in the place where you're most
likely to want to use the whitelist command.
|
| | | | |
|
| | | |
| | |
| | |
| | | |
Also updates the tests for this cog.
|
| | | |
| | |
| | |
| | |
| | | |
Instead of fetching the guild invite IDs from config-default.yml, we
will now be using the AllowDenyList cache to check these.
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | | |
This includes commands to add, remove and show the items in the
whitelists and blacklists for the different list types.
Commands are limited to Moderators+.
|
| | | |
| | |
| | |
| | |
| | |
| | | |
Instead of just dumping the JSON response from the site, we'll build a
data structure that it will be convenient to access from our new cog,
and from the Filtering cog.
|
| | | | |
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Currently, some types of errors are returning plain strings that repeat
the input (which can be exploited to deliver stuff like mentions), and
others are returning generic messages that don't give any exception
information.
This commit unifies our approach around putting as much information as
we can (including the exception message), but always putting it inside
an embed, so that stuff like pings will not fire.
This, combined with the 1.4.0a `allowed_mentions` functionality, seems
like a reasonable compromise between security and usability.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We'll use this to ensure the input is valid when people try to whitelist
or blacklist stuff. It will fetch its data from an Enum maintained on
the site, so that the types of lists we support will only need to be
maintained in a single place, instead of duplicating that data in the
bot and the site.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We shouldn't be making an API call for every single message posted, so
what we're gonna do is cache the data in the Bot, and then update the
cache whenever we make changes to it via our new AllowDenyList cog.
Since this cog will be the only way to make changes to this, this level
of lazy caching should be enough to always keep the cache up to date.
|
| | | | |
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | | |
`LockGuard` was lonely and the decorators were cluttering up
decorators.py.
|
| | | |
| | |
| | |
| | |
| | | |
A mutex is the same thing as a lock. The former is a relatively esoteric
contraction, so the latter is preferred.
|
| | | |
| | |
| | |
| | | |
It was not being used anywhere.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Concerns were raised over possible race conditions due `asyncio.Lock`
internally awaiting coroutines. Does a mere `await` suspend the current
coroutine, or does it have to actually await something asynchronous,
like a future?
Avoid answering that question by doing away with the awaits, which
aren't necessary but are there as a consequence of using `asyncio.Lock`.
Instead, add a custom `LockGuard` object to replace the previous locks.
|
| | | |
| | |
| | |
| | | |
Clarify the significance of the argument being passed.
|
| | | |
| | |
| | |
| | |
| | | |
The annotation was previously changed on the basis of an incorrect
return annotation PyCharm inferred for `check()`.
|
| | | |
| | |
| | |
| | |
| | | |
The exception it raises reads better if the singular form of the word
is used.
|
| | | |
| | |
| | |
| | |
| | | |
Silent failure is confusing to users. Showing an error message clears up
why nothing happened with their command.
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | | |
The exception will facilitate user feedback for commands which use the
decorator.
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | | |
Instead of taking a callable, this wrapper just takes a name or position
to get the resource ID.
|
| | | | |
|