Fix some issues around names and diff contents
This commit is contained in:
parent
d343ea6086
commit
10615c6c58
1 changed files with 14 additions and 6 deletions
|
@ -1,6 +1,7 @@
|
||||||
"""Filters cog."""
|
"""Filters cog."""
|
||||||
import asyncio
|
import asyncio
|
||||||
import difflib
|
import difflib
|
||||||
|
import re
|
||||||
from typing import Dict, List
|
from typing import Dict, List
|
||||||
|
|
||||||
from jarvis_core.db import q
|
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)):
|
if f := await Filter.find_one(q(name=name, guild=ctx.guild.id)):
|
||||||
content = "\n".join(f.filters)
|
content = "\n".join(f.filters)
|
||||||
|
|
||||||
|
kw = "Updating" if search else "Creating"
|
||||||
|
|
||||||
modal = Modal(
|
modal = Modal(
|
||||||
title=f"Creating filter `{name}`",
|
title=f'{kw} filter "{name}"',
|
||||||
components=[
|
components=[
|
||||||
InputText(
|
InputText(
|
||||||
label="Filter (one statement per line)",
|
label="Filter (one statement per line)",
|
||||||
|
@ -51,10 +54,13 @@ class FilterCog(Extension):
|
||||||
filters = data.responses.get("filters").split("\n")
|
filters = data.responses.get("filters").split("\n")
|
||||||
except asyncio.TimeoutError:
|
except asyncio.TimeoutError:
|
||||||
return
|
return
|
||||||
|
# Thanks, Glitter
|
||||||
|
new_name = re.sub(r"[^\w-]", "", name)
|
||||||
try:
|
try:
|
||||||
if not f:
|
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:
|
else:
|
||||||
|
f.name = new_name
|
||||||
f.filters = filters
|
f.filters = filters
|
||||||
await f.commit()
|
await f.commit()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
@ -62,14 +68,16 @@ class FilterCog(Extension):
|
||||||
return
|
return
|
||||||
|
|
||||||
content = content.splitlines()
|
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:
|
if ctx.guild.id not in self.cache:
|
||||||
self.cache[ctx.guild.id] = []
|
self.cache[ctx.guild.id] = []
|
||||||
if name not in self.cache[ctx.guild.id]:
|
if new_name not in self.cache[ctx.guild.id]:
|
||||||
self.cache[ctx.guild.id].append(name)
|
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")
|
filter_ = SlashCommand(name="filter", description="Manage keyword filters")
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue