Compare commits

...

3 Commits

Author SHA1 Message Date
3a06464c29 General tracker.py improvements
Mostly speed-ups by awaiting multiple awaits where there's not a dependency on each other's results, and bounds checks
2024-12-08 16:48:05 -08:00
62c205aa35 correct return type in history_manager.py 2024-12-08 16:44:25 -08:00
c7c2589947 Use uvloop for faster performance 2024-12-08 16:44:06 -08:00
3 changed files with 21 additions and 6 deletions

View File

@ -21,4 +21,5 @@ six==1.16.0
sniffio==1.3.1
tomli==2.0.1
typing_extensions==4.12.2
uvloop==0.21.0
yarl==1.9.4

View File

@ -25,7 +25,7 @@ class HistoryManager:
high_fidelity_history = await self._tdb.history(flavor, region, self.HIGH_FIDELITY_PERIOD)
final_response = []
def _convert_to_datetime(data: Tuple[str, int]):
def _convert_to_datetime(data: Tuple[str, int]) -> Tuple[datetime.datetime, int]:
return datetime.datetime.fromisoformat(data[0]), data[1]
for data_point in all_history:

View File

@ -157,7 +157,7 @@ class Tracker(Extension):
@slash_command(
name="add-alert",
description="List all alerts you have signed up for"
description="Add an alert listener"
)
async def add_alert(self, ctx: SlashContext):
if not await self._users.exists(ctx.user.id):
@ -184,8 +184,10 @@ class Tracker(Extension):
else:
alert = Alert(alert_type, flavor, user.region)
if not await self._users.is_subscribed(user, alert):
await self._users.add_alert(user, alert)
await self._alerts.add_user(alert, user)
await asyncio.gather(
self._users.add_alert(user, alert),
self._alerts.add_user(alert, user)
)
await ctx.send("Successfully added alert", ephemeral=True)
else:
@ -197,14 +199,26 @@ class Tracker(Extension):
description="Remove an alert you have signed up for"
)
async def remove_alert(self, ctx: SlashContext):
if not await self._users.exists(ctx.user.id):
await ctx.send("You are not registered with any region\n"
"Please register with /register before adding alerts",
ephemeral=True)
return
user = await self._users.get(ctx.user.id)
alerts = await self._users.list_alerts(user)
if len(alerts) == 0:
await ctx.send("You do not have any alerts registered", ephemeral=True)
return
try:
alert = await self.remove_alert_select_menu(ctx, user)
except TimeoutError:
return
else:
await self._users.remove_alert(user, alert)
await self._alerts.remove_user(alert, user)
await asyncio.gather(
self._users.remove_alert(user, alert),
self._alerts.remove_user(alert, user)
)
await ctx.send("Successfully removed alert", ephemeral=True)