aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar mbaruh <[email protected]>2022-10-01 09:25:27 +0300
committerGravatar mbaruh <[email protected]>2022-10-01 09:25:27 +0300
commitff25bd0af481b8113f468bc6a48d7374aa3a27d8 (patch)
tree8c9144bc37bb7a6ed36f10c7028a8ff7dc4f68e2
parentCorrectly handle DMs (diff)
Fix patching removed override
-rw-r--r--bot/exts/filtering/filtering.py12
1 files changed, 9 insertions, 3 deletions
diff --git a/bot/exts/filtering/filtering.py b/bot/exts/filtering/filtering.py
index 841ae4e99..925c40da5 100644
--- a/bot/exts/filtering/filtering.py
+++ b/bot/exts/filtering/filtering.py
@@ -380,7 +380,7 @@ class Filtering(Cog):
description = description or filter_.description
settings.update(new_settings)
filter_settings.update(new_filter_settings)
- patch_func = partial(self._patch_filter, filter_id)
+ patch_func = partial(self._patch_filter, filter_)
if noui:
await patch_func(
@@ -711,7 +711,7 @@ class Filtering(Cog):
@staticmethod
async def _patch_filter(
- filter_id: int,
+ filter_: Filter,
msg: Message,
filter_list: FilterList,
list_type: ListType,
@@ -726,13 +726,19 @@ class Filtering(Cog):
if not valid:
raise BadArgument(f"Error while validating filter-specific settings: {error_msg}")
+ # If the setting is not in `settings`, the override was either removed, or there wasn't one in the first place.
+ for current_settings in (filter_.actions, filter_.validations):
+ if current_settings:
+ for _, setting_entry in current_settings.items():
+ settings.update({setting: None for setting in setting_entry.dict() if setting not in settings})
+
list_id = filter_list.list_ids[list_type]
description = description or None
payload = {
"filter_list": list_id, "content": content, "description": description,
"additional_field": json.dumps(filter_settings), **settings
}
- response = await bot.instance.api_client.patch(f'bot/filter/filters/{filter_id}', json=payload)
+ response = await bot.instance.api_client.patch(f'bot/filter/filters/{filter_.id}', json=payload)
edited_filter = filter_list.add_filter(response, list_type)
await msg.reply(f"✅ Edited filter: {edited_filter}")