fix (schedule): Bugfixes.

Fix ScheduleUI issue where clear button was not enabling.
Fix ScheduleUI menus showing soon entries.
Fix ScheduleUI time format being T instead of f.
Fix ScheduleUI cancel menu out of order.
Add special case format for `_format_until` with 0 distance.

Add `TimeSlot` repr.
Add `Sesson` repr.
Fix issue where noshow could potentially deadlock sessions.
Fix issue where `create_booking` could add garbage to cache.
Add `bot.idlock` for snowflake locking.
Remove valid channel check from clock off.
Changed implementation of batchrun.
Add `cog.nowid` for easier introspection.
Add more logging.
This commit is contained in:
2023-07-08 08:57:00 +03:00
parent 78fb398e03
commit 043f358f57
7 changed files with 309 additions and 173 deletions

View File

@@ -80,6 +80,26 @@ class ScheduledSession:
self._updater = None
self._status_task = None
def __repr__(self):
return ' '.join(
"<ScheduledSession"
f"slotid={self.slotid}",
f"guildid={self.guildid}",
f"lobbyid={ch.id if (ch := self.lobby_channel) else None}",
f"roomid={ch.id if (ch := self.room_channel) else None}",
f"members={len(self.members)}",
f"listening={self.listening}",
f"prepared={self.prepared}",
f"opened={self.opened}",
f"cancelled={self.cancelled}",
f"locked={self.lock.locked()}",
f"status_message={msg.id if (msg := self.status_message) else None}",
f"lobby_hook={hook.webhookid if (hook := self._hook) else None}",
f"last_update={self._last_update}",
f"updater_running={True if (self._updater and not self._updater.done()) else False}",
">"
)
# Setting shortcuts
@property
def room_channel(self) -> Optional[discord.VoiceChannel]:
@@ -185,7 +205,7 @@ class ScheduledSession:
self._hook = None
except discord.HTTPException:
logger.warning(
f"Exception occurred sending to webhooks for scheduled session {self.data!r}",
f"Exception occurred sending to webhooks for scheduled session {self!r}",
exc_info=True
)
@@ -221,14 +241,12 @@ class ScheduledSession:
await room.edit(overwrites=overwrites)
except discord.HTTPException:
logger.warning(
f"Unexpected discord exception received while preparing schedule session room <cid: {room.id}> "
f"in guild <gid: {self.guildid}> for timeslot <sid: {self.slotid}>.",
f"Unexpected discord exception received while preparing schedule session room {self!r}",
exc_info=True
)
else:
logger.debug(
f"Prepared schedule session room <cid: {room.id}> "
f"in guild <gid: {self.guildid}> for timeslot <sid: {self.slotid}>.",
f"Prepared schedule session room for session {self!r}"
)
else:
t = self.bot.translator.t
@@ -266,13 +284,11 @@ class ScheduledSession:
await room.edit(overwrites=overwrites)
except discord.HTTPException:
logger.exception(
f"Unhandled discord exception received while opening schedule session room <cid: {room.id}> "
f"in guild <gid: {self.guildid}> for timeslot <sid: {self.slotid}>."
f"Unhandled discord exception received while opening schedule session room {self!r}"
)
else:
logger.debug(
f"Opened schedule session room <cid: {room.id}> "
f"in guild <gid: {self.guildid}> for timeslot <sid: {self.slotid}>.",
f"Opened schedule session room for session {self!r}"
)
else:
t = self.bot.translator.t
@@ -485,7 +501,7 @@ class ScheduledSession:
except discord.HTTPException:
# Unexpected issue updating the message
logger.exception(
f"Exception occurred updating status for scheduled session {self.data!r}"
f"Exception occurred updating status for scheduled session {self!r}"
)
if repost and resend and self.members:
@@ -531,12 +547,11 @@ class ScheduledSession:
await self.update_status()
except asyncio.CancelledError:
logger.debug(
f"Cancelled scheduled session update loop <slotid: {self.slotid}> ,gid: {self.guildid}>"
f"Cancelled scheduled session update loop for session {self!r}"
)
except Exception:
logger.exception(
"Unknown exception encountered during session "
f"update loop <slotid: {self.slotid}> ,gid: {self.guildid}>"
"Unknown exception encountered during session update loop for session {self!r} "
)
def start_updating(self):