aboutsummaryrefslogtreecommitdiffstats
path: root/tests (unfollow)
Commit message (Collapse)AuthorLines
2022-11-05Add message edit filteringGravatar mbaruh-28/+87
This edit handler takes into account filters already triggered for the message and ignores them (as long as it's a denied type) To that end the message cache can now hold metadata to accompany each message in the cache.
2022-11-05Handle threads in channel_scopeGravatar mbaruh-0/+2
2022-11-05Bring back auto-infraction reportingGravatar mbaruh-5/+122
- When a filter is set to infract, it will send a message in #filter-log (See PR #1893) - Once a week the cog will send a message of all auto-infractions sent in the last 7 days, with a way to trigger it manually (See PR #2267)
2022-11-04Edit description on filter add/edit, bug fixesGravatar mbaruh-29/+45
`process_content` was changed to `process_input` to also edit the description when necessary. Fixes unhandled filter_type being None on filter add/edit. Moves the missing filter type warning to a more appropriate location to not trigger during filter add/edit.
2022-11-04Filter match now shows all triggers instead of messagesGravatar mbaruh-41/+67
The purpose of this command is to be able to find any relevant filters. It was not possible to find whitelist filters in the previous method, as there are no alerts for whitelist triggers. Instead, each filterlist now additionally returns what filters were triggered while processing the context. Additionally, a `no_user` argument was added to `filter match` to allow checking for triggers on one's own messages (otherwise there's almost no filtering on a mod's messages).
2022-11-04Stop using None as a valid setting valueGravatar mbaruh-36/+29
A None value signifies that there's no override, and it shouldn't be used for anything else. Doing so is confusing and bug-prone.
2022-11-01Remove old filtering constantsGravatar mbaruh-133/+0
2022-11-01Prettify f and fl describe outputGravatar mbaruh-6/+8
2022-11-01Fix argument completion for al and blGravatar mbaruh-8/+10
2022-11-01Add the rest of the antispam rulesGravatar mbaruh-35/+468
This is mostly a copy-paste of the implementations in the old system into the new system's structure. The mentions rule required changing the `triggers_on` method to async.
2022-10-31Add antispam filter list and duplicates filterGravatar mbaruh-141/+479
Adds the antispam filterlist, which dispatches a set of messages sent in the last X seconds to its filters. Unlike other filter lists, it doesn't just return the actions to be taken, but rather splits them in two: any actions unrelated to alerting mods are returned as usual, while actions related to alerting are used in a delayed coroutine, from which the alert is sent. - Fixes `infraction_channel` not using the context channel when it's None. - Moves the `upload_log` function outside the ModLog cog, as it only needed it for the bot instance. - Any auto-deleted message with attachments will now have its attachments logged.
2022-10-28Handle context message possibly being NoneGravatar mbaruh-18/+19
2022-10-27Use command prefix instead of hardcoded !Gravatar mbaruh-3/+7
2022-10-27Convert redundant filter setting group to commandGravatar mbaruh-14/+9
2022-10-27Suppress exceptions while actioning filtersGravatar mbaruh-7/+20
Filtering should not stop even if one type of action raised an exception. For example, if deleting the message raised somehow, it should still try to infract the user. Exceptions raised in actions are logged instead. Additionally adds a fix to the way actions are merged.
2022-10-26Add Discord token filterGravatar mbaruh-35/+255
Also fix a bug with the cog trying to serialize a set when trying to modify the DB with no UI. Also fix a bug with the domain setting description having a mismatching name.
2022-10-23Add rich embed filterGravatar mbaruh-19/+62
2022-10-23Add webhook filterGravatar mbaruh-5/+76
This adds a way to add custom coroutines to the context, to execute when the filtering result is actioned.
2022-10-22Move Security cog to backend extensionGravatar mbaruh-1/+1
2022-10-22Add everyone filter, fix invite filteringGravatar mbaruh-110/+285
- Add the everyone filter, from a new class of filters - UniqueFilter. These filters should only be run once per context. These filters can modify any part of their behavior, including which events they respond to. - The invite filtering had a bug where it could exit early when the context wasn't a valid whitelisting context (which usually means that any unkown filters are allowed), despite there possibly being blocked filters which require addressing.
2022-10-20remove int from search_value's type unionGravatar Amrou Bellalouna-6/+6
2022-10-20apply style guidelines to signatureGravatar Amrou Bellalouna-2/+7
2022-10-20update doc strings to reflect the usage of the new paramGravatar Amrou Bellalouna-2/+2
2022-10-20change the signature to include a "zen_rule_index"Gravatar Amrou Bellalouna-7/+9
2022-10-19Calculate 'now' once to ensure it is constant for scoring nominationsGravatar wookie184-4/+5
2022-10-18Resolve a serious grammatical problem in a commentGravatar Leon Sandøy-1/+1
A controversial comment, to be sure. I have solved this with a compromise I know in my heart we can all agree on, wholeassedly.
2022-10-17Add a command to query filters by settingsGravatar mbaruh-55/+563
2022-10-17Support the new SequenceProxy type in d.pyGravatar Chris Lovering-1/+2
This type is usd for a few attributes, including Guild.threads and guild.Channels. This type does not implement any of the add dunder methods, so we use itertools.chain to get a single iterator for both sequences. Fixes BOT-398 Fixees #2292
2022-10-16Change override handlingGravatar mbaruh-114/+143
The Settings class is now a subclass of dict as well. SettingsEntry's now store which fields are overrides in case the entry is not empty. If there is a overridden value and a non-overridden value in the same entry, the non-overridden value will now correctly be the default instead of staying empty. Additionally fixes bugs with free list input parsing.
2022-10-15More improvements to FilterListGravatar mbaruh-89/+54
Methods that work with only a specific list type are moved to AtomicList. FilterList is now a subclass of dict, since that's what it is.
2022-10-14enhancement(filters): use a stricter bot token regex (#2006)Gravatar arl-5/+5
Use a stricter bot token regex Co-authored-by: wookie184 <[email protected]> Co-authored-by: Hassan Abouelela <[email protected]>
2022-10-13`REPO_TOKEN` is no more. (#2289)Gravatar Xithrius-1/+0
2022-10-11Add filter matching commandGravatar mbaruh-51/+83
2022-10-11Better API error handlingGravatar mbaruh-13/+27
2022-10-11Add confirmation before filter deletionGravatar mbaruh-35/+39
2022-10-11Rearrange FilterList classGravatar mbaruh-99/+153
2022-10-11Filter list add commandGravatar mbaruh-25/+189
2022-10-10Use explicit mock channels in tests to remove warningGravatar Chris Lovering-2/+11
This is need due to the new behaviour of discord.utils.get supporting both iterables and async iterables by checking for the presence of the __aiter__ attr on the iterable. GuildChannelConverter._resolve_channel uses this get util under the hood which grabs the voice channels on the guild, which were previously Mocked by the MagicMock, meaning the __aiter__ attr was present, causing the util to think it should be ran asynchronously.
2022-10-10noqa an abstract class with no abstract methodsGravatar Chris Lovering-1/+1
This warning was added in the latest version of flake8-bugbear, but can be ignored in this instance.
2022-10-10Bump all deps to latestGravatar Chris Lovering-498/+426
2022-10-10Bump bot-core to 8.2.1Gravatar Chris Lovering-152/+1340
From the release notes on d.py [here](https://canary.discord.com/channels/336642139381301249/381965829857738772/1006359073610010664) and [here](https://canary.discord.com/channels/336642139381301249/381965829857738772/1008772795179737230) none of the breaking changes for the commit we were on to 2.0.1 affect us.
2022-10-10Add filter list edit commandGravatar mbaruh-144/+393
The UI is a simplified version of the filter UI. In fact the two views now use the same base class. Also fixes a bug in filters with displaying the correct value in the embed for filter settings.
2022-10-10Rearrange UI into several modulesGravatar mbaruh-326/+344
2022-10-10Added filter list deletion command.Gravatar mbaruh-3/+84
2022-10-09Make changes requested in reviewGravatar wookie184-3/+5
2022-10-09Use scoring system that weights age and number of entriesGravatar wookie184-128/+1375
Added new tests for this behaviour, and added pytest-subtests dev dependency
2022-10-09Move tests out of moderation/ directoryGravatar wookie184-0/+0
I didn't mean to put them there in the first place
2022-10-09Add filter template optionGravatar mbaruh-26/+100
An option is added to filter add and edit to copy the overrides over from another filter.
2022-10-08Ignore overrides that are equal to their defaultsGravatar mbaruh-23/+90
If an override is added that is equal to the default, it is ignored instead. If an override is read from a Filter object that is equal to its default, it is ignored instead. This is done because otherwise when a setting shares an entry with an overriden setting (e.g infraction_type with infraction_duration), there's no way of knowing whether it was truly overridden, since None values are not preserved for filters on loading (that is because the same pydantic models are used for both the filter and filter-list settings). This seems like an acceptable trade-off since overrides which are equal to their defaults don't have a practical use. Addiotionally, this commit fixes not being able to set an empty string as an override to a non-empty default.
2022-10-08Fix pings validationGravatar mbaruh-3/+3