From 10615c6c581cc8b454fdc94468d501001e2e046e Mon Sep 17 00:00:00 2001 From: Zevaryx Date: Mon, 3 Oct 2022 18:49:17 -0600 Subject: [PATCH] Fix some issues around names and diff contents --- jarvis/cogs/admin/filters.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/jarvis/cogs/admin/filters.py b/jarvis/cogs/admin/filters.py index 02b6c52..96b55a9 100644 --- a/jarvis/cogs/admin/filters.py +++ b/jarvis/cogs/admin/filters.py @@ -1,6 +1,7 @@ """Filters cog.""" import asyncio import difflib +import re from typing import Dict, List from jarvis_core.db import q @@ -32,8 +33,10 @@ class FilterCog(Extension): if f := await Filter.find_one(q(name=name, guild=ctx.guild.id)): content = "\n".join(f.filters) + kw = "Updating" if search else "Creating" + modal = Modal( - title=f"Creating filter `{name}`", + title=f'{kw} filter "{name}"', components=[ InputText( label="Filter (one statement per line)", @@ -51,10 +54,13 @@ class FilterCog(Extension): filters = data.responses.get("filters").split("\n") except asyncio.TimeoutError: return + # Thanks, Glitter + new_name = re.sub(r"[^\w-]", "", name) try: if not f: - f = Filter(name=name, guild=ctx.guild.id, filters=filters) + f = Filter(name=new_name, guild=ctx.guild.id, filters=filters) else: + f.name = new_name f.filters = filters await f.commit() except Exception as e: @@ -62,14 +68,16 @@ class FilterCog(Extension): return content = content.splitlines() - diff = "\n".join(difflib.ndiff(content, filters)) + diff = "\n".join(difflib.ndiff(content, filters)).replace("`", "\u200b`") - await data.send(f"Filter `{name}` has been updated:\n\n```diff\n{diff}\n```") + await data.send(f"Filter `{new_name}` has been updated:\n\n```diff\n{diff}\n```") if ctx.guild.id not in self.cache: self.cache[ctx.guild.id] = [] - if name not in self.cache[ctx.guild.id]: - self.cache[ctx.guild.id].append(name) + if new_name not in self.cache[ctx.guild.id]: + self.cache[ctx.guild.id].append(new_name) + if name != new_name: + self.cache[ctx.guild.id].remove(name) filter_ = SlashCommand(name="filter", description="Manage keyword filters")