aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeLines
...
| | * Fix broken antimalware tests.Gravatar Leon Sandøy2020-07-29-1/+1
| | |
| | * We search for an invite instead of matching one.Gravatar Leon Sandøy2020-07-29-1/+1
| | | | | | | | | | | | | | | This means we can validate invites that start with https://, whereas before we could not.
| | * word_watchlist -> filter_token in filtering.py.Gravatar Leon Sandøy2020-07-29-2/+2
| | |
| | * Restructure bot.filter_list_cache.Gravatar Leon Sandøy2020-07-29-21/+20
| | | | | | | | | | | | | | | | | | | | | 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.
| | * Fix a bad type annotation.Gravatar Leon Sandøy2020-07-29-2/+2
| | |
| | * Fix imports in converters.pyGravatar Leon Sandøy2020-07-29-5/+6
| | |
| | * Refactor filtering: use non-compiled expressions.Gravatar Leon Sandøy2020-07-29-10/+6
| | |
| | * Make a helper for validating guild invites.Gravatar Leon Sandøy2020-07-29-16/+18
| | |
| | * Make a helper for inserting filter lists.Gravatar Leon Sandøy2020-07-29-21/+16
| | |
| | * Kaizen - group private methods together.Gravatar Leon Sandøy2020-07-29-43/+43
| | |
| | * Use a defaultdict(list) for filter_list_cache.Gravatar Leon Sandøy2020-07-29-6/+7
| | |
| | * Expect status 400 for duplicates.Gravatar Leon Sandøy2020-07-29-2/+2
| | |
| | * Bump flake8 version to 3.8Gravatar Leon Sandøy2020-07-27-173/+191
| | | | | | | | | | | | This is necessary to support walrus operators.
| | * Rename AllowDenyList to FilterListsGravatar Leon Sandøy2020-07-27-45/+45
| | |
| | * More explicit dict indexing Gravatar Leon Sandøy2020-07-24-3/+3
| | | | | | | | | | | | | | | Addresses reviews from MarkKoz Co-authored-by: Mark <[email protected]>
| | * Add sanity to partner and verification check in filtering.py.Gravatar Leon Sandøy2020-07-24-2/+2
| | |
| | * No need for all() in cog_check for AllowDenyLists.Gravatar Leon Sandøy2020-07-24-4/+1
| | |
| | * Put valid_types_list inside the conditional.Gravatar Leon Sandøy2020-07-24-1/+1
| | |
| | * Catch ResponseCodeError in the ValidAllowDenyListType converter.Gravatar Leon Sandøy2020-07-24-7/+7
| | |
| | * Implement new guild invite filtering logic.Gravatar Leon Sandøy2020-07-19-7/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| | * Validation of guild invites for delete.Gravatar Leon Sandøy2020-07-19-2/+14
| | | | | | | | | | | | | | | We want to support deletion of both IDs and guild invites, so we need a bit of special handling for that.
| | * Validation of guild invites.Gravatar Leon Sandøy2020-07-19-17/+78
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| | * Support the new AllowDenyList field, 'comment'.Gravatar Leon Sandøy2020-07-19-10/+46
| | |
| | * Include the guild ID in mod-log embed.Gravatar Leon Sandøy2020-07-19-3/+4
| | | | | | | | | | | | | | | This gives easier access to the Guild ID in the place where you're most likely to want to use the whitelist command.
| | * Fix an absolutely terrible comment.Gravatar Leon Sandøy2020-07-19-1/+1
| | |
| | * Remove AntiMalWare constants, use cache data.Gravatar Leon Sandøy2020-07-18-55/+30
| | | | | | | | | | | | Also updates the tests for this cog.
| | * Remove Filtering constants, use cache data.Gravatar Leon Sandøy2020-07-18-135/+32
| | | | | | | | | | | | | | | Instead of fetching the guild invite IDs from config-default.yml, we will now be using the AllowDenyList cache to check these.
| | * Add more logging to AllowDenyLists cog.Gravatar Leon Sandøy2020-07-18-2/+11
| | |
| | * Add AllowDenyLists cog.Gravatar Leon Sandøy2020-07-18-0/+145
| | | | | | | | | | | | | | | | | | | | | 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+.
| | * Make the cache more convenient to access.Gravatar Leon Sandøy2020-07-18-1/+13
| | | | | | | | | | | | | | | | | | 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.
| | * Bulletlist with valid file types in converter.Gravatar Leon Sandøy2020-07-18-2/+2
| | |
| | * Better BadArgument exception text.Gravatar Leon Sandøy2020-07-18-2/+3
| | |
| | * Kaizen: Make error_handler.py more embeddy.Gravatar Leon Sandøy2020-07-17-7/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| | * Add ValidAllowDenyListType converter.Gravatar Leon Sandøy2020-07-17-1/+27
| | | | | | | | | | | | | | | | | | | | | | | | 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.
| | * Cache AllowDenyList data at bot startup.Gravatar Leon Sandøy2020-07-17-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| | * Kaizen: Move OffTopicName to converters.py.Gravatar Leon Sandøy2020-07-17-29/+28
| | |
* | | Fix attribute docstring for LockedResourceErrorGravatar MarkKoz2020-09-09-1/+1
| | |
* | | Move lock decorators to utils/lock.pyGravatar MarkKoz2020-09-09-86/+94
| | | | | | | | | | | | | | | `LockGuard` was lonely and the decorators were cluttering up decorators.py.
* | | Decorators: rename mutually_exclusive decoratorsGravatar MarkKoz2020-09-09-14/+9
| | | | | | | | | | | | | | | A mutex is the same thing as a lock. The former is a relatively esoteric contraction, so the latter is preferred.
* | | Decorators: remove locked() decoratorGravatar MarkKoz2020-09-09-35/+2
| | | | | | | | | | | | It was not being used anywhere.
* | | Decorators: replace asyncio.Lock with a custom objectGravatar MarkKoz2020-08-22-4/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | Explicitly use kwarg with respect_role_hierarchyGravatar MarkKoz2020-08-01-5/+5
| | | | | | | | | | | | Clarify the significance of the argument being passed.
* | | Decorators: fix type annotations for checksGravatar MarkKoz2020-08-01-4/+4
| | | | | | | | | | | | | | | The annotation was previously changed on the basis of an incorrect return annotation PyCharm inferred for `check()`.
* | | Reminders: use singular form for mutually exclusive namespaceGravatar MarkKoz2020-07-31-1/+1
| | | | | | | | | | | | | | | The exception it raises reads better if the singular form of the word is used.
* | | Reminders: show error to users if reminder is in useGravatar MarkKoz2020-07-31-3/+3
| | | | | | | | | | | | | | | Silent failure is confusing to users. Showing an error message clears up why nothing happened with their command.
* | | Send users an error message if command raises LockedResourceErrorGravatar MarkKoz2020-07-31-0/+3
| | |
* | | Decorators: optionally raise an exception if resource is lockedGravatar MarkKoz2020-07-31-4/+35
| | | | | | | | | | | | | | | The exception will facilitate user feedback for commands which use the decorator.
* | | Decorators: add some trace loggingGravatar MarkKoz2020-07-31-0/+3
| | |
* | | Decorators: wrap mutually_exclusive to use get_arg_valueGravatar MarkKoz2020-07-31-7/+20
| | | | | | | | | | | | | | | Instead of taking a callable, this wrapper just takes a name or position to get the resource ID.
* | | Decorators: remove redundant word in docstringGravatar MarkKoz2020-07-31-1/+1
| | |