feat(aurora): switch from dateparser to dateutil and add on parameter to history command
This commit is contained in:
parent
1a3af342df
commit
49cf7c9005
4 changed files with 52 additions and 68 deletions
|
@ -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)
|
||||
|
||||
|
|
|
@ -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",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue