feat(aurora): switch from dateparser to dateutil and add on parameter to history command
Some checks failed
Actions / Build Documentation (MkDocs) (pull_request) Failing after 27s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 42s

This commit is contained in:
Seaswimmer 2024-08-10 13:27:49 -04:00
parent 1a3af342df
commit 49cf7c9005
Signed by: cswimr
GPG key ID: 3813315477F26F82
4 changed files with 52 additions and 68 deletions

View file

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

View file

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