Fix some issues around names and diff contents
This commit is contained in:
parent
fef96fed32
commit
b7e0381b8a
1 changed files with 14 additions and 6 deletions
|
@ -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")
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue