WIP: Refactor Aurora (3.0.0) #29

Draft
cswimr wants to merge 347 commits from aurora-pydantic into main
4 changed files with 52 additions and 68 deletions
Showing only changes of commit 49cf7c9005 - Show all commits

View file

@ -13,7 +13,7 @@ from datetime import datetime, timedelta, timezone
from math import ceil from math import ceil
import discord import discord
from dateparser import parse from dateutil.parser import ParserError, parse
from discord.ext import tasks from discord.ext import tasks
from redbot.core import app_commands, commands, data_manager from redbot.core import app_commands, commands, data_manager
from redbot.core.app_commands import Choice from redbot.core.app_commands import Choice
@ -521,6 +521,7 @@ class Aurora(commands.Cog):
moderator: discord.User | None = None, moderator: discord.User | None = None,
pagesize: app_commands.Range[int, 1, 20] | None = None, pagesize: app_commands.Range[int, 1, 20] | None = None,
page: int = 1, page: int = 1,
on: str | None = None,
before: str | None = None, before: str | None = None,
after: str | None = None, after: str | None = None,
ephemeral: bool | None = None, ephemeral: bool | None = None,
@ -539,6 +540,8 @@ class Aurora(commands.Cog):
Amount of infractions to list per page Amount of infractions to list per page
page: int page: int
Page to select Page to select
on: str
List infractions on a certain date
before: str before: str
List infractions before a certain date List infractions before a certain date
after: str after: str
@ -577,21 +580,53 @@ class Aurora(commands.Cog):
or 5 or 5
) )
if before: if before and not on:
before = parse(before) try:
if before is None: before = parse(before)
return await interaction.response.send_message( except (ParserError, OverflowError) as e:
content=error("Invalid date format for `before`."), ephemeral=True if e == ParserError:
) await interaction.response.send_message(
before = before.replace(tzinfo=timezone.utc) content=error("Invalid date format for `before` parameter!"), ephemeral=True
)
return
if e == OverflowError:
await interaction.response.send_message(
content=error("Date is too far in the future!"), ephemeral=True
)
return
if after: if after and not on:
after = parse(after) try:
if after is None: after = parse(after)
return await interaction.response.send_message( except (ParserError, OverflowError) as e:
content=error("Invalid date format for `after`."), ephemeral=True if e == ParserError:
) await interaction.response.send_message(
after = after.replace(tzinfo=timezone.utc) content=error("Invalid date format for `after` parameter!"), ephemeral=True
)
return
if e == OverflowError:
await interaction.response.send_message(
content=error("Date is too far in the future!"), ephemeral=True
)
return
if on:
try:
on = parse(on)
except (ParserError, OverflowError) as e:
if e == ParserError:
await interaction.response.send_message(
content=error("Invalid date format for `on` parameter!"), ephemeral=True
)
return
if e == OverflowError:
await interaction.response.send_message(
content=error("Date is too far in the future!"), ephemeral=True
)
return
before = on + timedelta(days=1)
after = on - timedelta(days=1)
await interaction.response.defer(ephemeral=ephemeral) await interaction.response.defer(ephemeral=ephemeral)

View file

@ -9,7 +9,7 @@
"disabled": false, "disabled": false,
"min_bot_version": "3.5.0", "min_bot_version": "3.5.0",
"min_python_version": [3, 10, 0], "min_python_version": [3, 10, 0],
"requirements": ["pydantic", "aiosqlite", "phx-class-registry", "dateparser"], "requirements": ["pydantic", "aiosqlite", "phx-class-registry"],
"tags": [ "tags": [
"mod", "mod",
"moderate", "moderate",

52
poetry.lock generated
View file

@ -668,28 +668,6 @@ webencodings = "*"
doc = ["sphinx", "sphinx_rtd_theme"] doc = ["sphinx", "sphinx_rtd_theme"]
test = ["flake8", "isort", "pytest"] test = ["flake8", "isort", "pytest"]
[[package]]
name = "dateparser"
version = "1.2.0"
description = "Date parsing library designed to parse dates from HTML pages"
optional = false
python-versions = ">=3.7"
files = [
{file = "dateparser-1.2.0-py2.py3-none-any.whl", hash = "sha256:0b21ad96534e562920a0083e97fd45fa959882d4162acc358705144520a35830"},
{file = "dateparser-1.2.0.tar.gz", hash = "sha256:7975b43a4222283e0ae15be7b4999d08c9a70e2d378ac87385b1ccf2cffbbb30"},
]
[package.dependencies]
python-dateutil = "*"
pytz = "*"
regex = "<2019.02.19 || >2019.02.19,<2021.8.27 || >2021.8.27"
tzlocal = "*"
[package.extras]
calendars = ["convertdate", "hijri-converter"]
fasttext = ["fasttext"]
langdetect = ["langdetect"]
[[package]] [[package]]
name = "defusedxml" name = "defusedxml"
version = "0.7.1" version = "0.7.1"
@ -2395,34 +2373,6 @@ files = [
{file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"}, {file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"},
] ]
[[package]]
name = "tzdata"
version = "2024.1"
description = "Provider of IANA time zone data"
optional = false
python-versions = ">=2"
files = [
{file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"},
{file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"},
]
[[package]]
name = "tzlocal"
version = "5.2"
description = "tzinfo object for the local timezone"
optional = false
python-versions = ">=3.8"
files = [
{file = "tzlocal-5.2-py3-none-any.whl", hash = "sha256:49816ef2fe65ea8ac19d19aa7a1ae0551c834303d5014c6d5a62e4cbda8047b8"},
{file = "tzlocal-5.2.tar.gz", hash = "sha256:8d399205578f1a9342816409cc1e46a93ebd5755e39ea2d85334bea911bf0e6e"},
]
[package.dependencies]
tzdata = {version = "*", markers = "platform_system == \"Windows\""}
[package.extras]
devenv = ["check-manifest", "pytest (>=4.3)", "pytest-cov", "pytest-mock (>=3.3)", "zest.releaser"]
[[package]] [[package]]
name = "urllib3" name = "urllib3"
version = "2.2.1" version = "2.2.1"
@ -2740,4 +2690,4 @@ multidict = ">=4.0"
[metadata] [metadata]
lock-version = "2.0" lock-version = "2.0"
python-versions = ">=3.11,<3.12" python-versions = ">=3.11,<3.12"
content-hash = "bc58f1f72ca73806c414042a78294e73c4119906b57fceb045ab48414928849e" content-hash = "6d09969e0ad7adff5aa105915c5c9e0354b4b7aceb80b9c2b3fb800bb08f21d4"

View file

@ -20,7 +20,6 @@ beautifulsoup4 = "^4.12.3"
markdownify = "^0.12.1" markdownify = "^0.12.1"
aiosqlite = "^0.20.0" aiosqlite = "^0.20.0"
phx-class-registry = "^4.1.0" phx-class-registry = "^4.1.0"
dateparser = "^1.2.0"
[tool.poetry.group.dev] [tool.poetry.group.dev]
optional = true optional = true