From deba3ababa6ddaf8c2adc9e6144a61a70183750f Mon Sep 17 00:00:00 2001 From: Stijn De Clercq Date: Thu, 16 Feb 2023 23:57:56 +0100 Subject: [PATCH] Typing --- didier/cogs/discord.py | 19 ++++++++++++------- didier/utils/timer.py | 5 +++-- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/didier/cogs/discord.py b/didier/cogs/discord.py index 38787bc..ab00717 100644 --- a/didier/cogs/discord.py +++ b/didier/cogs/discord.py @@ -59,6 +59,9 @@ class Discord(commands.Cog): async with self.client.postgres_session as session: event = await events.get_event_by_id(session, event_id) + if event is None: + return await self.client.log_error(f"Unable to find event with id {event_id}", log_to_discord=True) + channel = self.client.get_channel(event.notification_channel) embed = discord.Embed(title="Upcoming Events", colour=discord.Colour.blue()) @@ -259,20 +262,22 @@ class Discord(commands.Cog): embed.description = "\n".join(description_items) return await ctx.reply(embed=embed, mention_author=False) else: - event = await events.get_event_by_id(session, event_id) - if event is None: + result_event = await events.get_event_by_id(session, event_id) + if result_event is None: return await ctx.reply(f"Found no event with id `{event_id}`.", mention_author=False) embed = discord.Embed(title="Upcoming Events", colour=discord.Colour.blue()) - embed.add_field(name="Name", value=event.name, inline=True) - embed.add_field(name="Id", value=event.event_id, inline=True) + embed.add_field(name="Name", value=result_event.name, inline=True) + embed.add_field(name="Id", value=result_event.event_id, inline=True) embed.add_field( - name="Timer", value=discord.utils.format_dt(event.timestamp, style="R"), inline=True + name="Timer", value=discord.utils.format_dt(result_event.timestamp, style="R"), inline=True ) embed.add_field( - name="Channel", value=self.client.get_channel(event.notification_channel).mention, inline=False + name="Channel", + value=self.client.get_channel(result_event.notification_channel).mention, + inline=False, ) - embed.description = event.description + embed.description = result_event.description return await ctx.reply(embed=embed, mention_author=False) @commands.group(name="github", aliases=["gh", "git"], case_insensitive=True, invoke_without_command=True) diff --git a/didier/utils/timer.py b/didier/utils/timer.py index 306c073..e5b216b 100644 --- a/didier/utils/timer.py +++ b/didier/utils/timer.py @@ -45,15 +45,16 @@ class Timer: # If there is a current (pending) task, and the new timer is sooner than the # pending one, cancel it if self._task is not None and not self._task.done(): - if self.upcoming_timer > event.timestamp: + # The upcoming timer will never be None at this point, but Mypy is mad + if self.upcoming_timer is not None and self.upcoming_timer > event.timestamp: self._task.cancel() else: # The new task happens after the existing task, it has to wait for its turn return - self._task = self.client.loop.create_task(self.end_timer(endtime=event.timestamp, event_id=event.event_id)) self.upcoming_timer = event.timestamp self.upcoming_event_id = event.event_id + self._task = self.client.loop.create_task(self.end_timer(endtime=event.timestamp, event_id=event.event_id)) async def end_timer(self, *, endtime: datetime, event_id: int): """Wait until a timer runs out, and then trigger an event to send the message"""