Fix some issues around names and diff contents

This commit is contained in:
Zeva Rose 2022-10-03 18:49:17 -06:00
parent fef96fed32
commit b7e0381b8a

View file

@ -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")