diff --git a/bot/exts/help_channels/_channel.py b/bot/exts/help_channels/_channel.py index 6a0c3264cf..4e65d93799 100644 --- a/bot/exts/help_channels/_channel.py +++ b/bot/exts/help_channels/_channel.py @@ -47,9 +47,6 @@ async def _close_help_post( scheduler: scheduling.Scheduler, ) -> None: """Close the help post and record stats.""" - # Get Thread with updated metadata (such as the title) - closed_post = await get_or_fetch_channel(bot.instance, closed_post.id) - embed = discord.Embed(description=CLOSED_POST_MSG) close_title = "Python help channel closed" if closing_reason == _stats.ClosingReason.CLEANUP: @@ -192,10 +189,11 @@ async def get_closing_time(post: discord.Thread) -> tuple[arrow.Arrow, _stats.Cl return time, _stats.ClosingReason.INACTIVE -async def maybe_archive_idle_post(post: discord.Thread, scheduler: scheduling.Scheduler) -> None: +async def maybe_archive_idle_post(post_id: int, scheduler: scheduling.Scheduler) -> None: """Archive the `post` if idle, or schedule the archive for later if still active.""" try: - await get_or_fetch_channel(bot.instance, post.id) + # Fetch the post again, to ensure we have the latest info + post = await get_or_fetch_channel(bot.instance, post_id) except discord.HTTPException: log.trace(f"Not closing missing post #{post} ({post.id}).") return @@ -223,4 +221,4 @@ async def maybe_archive_idle_post(post: discord.Thread, scheduler: scheduling.Sc delay = (closing_time - arrow.utcnow()).seconds log.info(f"#{post} ({post.id}) is still active; scheduling it to be archived after {delay} seconds.") - scheduler.schedule_later(delay, post.id, maybe_archive_idle_post(post, scheduler)) + scheduler.schedule_later(delay, post.id, maybe_archive_idle_post(post.id, scheduler)) diff --git a/bot/exts/help_channels/_cog.py b/bot/exts/help_channels/_cog.py index 9db66bb393..5e0b1799fd 100644 --- a/bot/exts/help_channels/_cog.py +++ b/bot/exts/help_channels/_cog.py @@ -47,7 +47,7 @@ async def check_all_open_posts_have_close_task(self) -> None: """Check that each open help post has a scheduled task to close, adding one if not.""" for post in self.help_forum_channel.threads: if post.id not in self.scheduler: - await _channel.maybe_archive_idle_post(post, self.scheduler) + await _channel.maybe_archive_idle_post(post.id, self.scheduler) async def close_check(self, ctx: commands.Context) -> bool: """Return True if the channel is a help post, and the user is the claimant or has a whitelisted role.""" @@ -116,7 +116,7 @@ async def new_post_listener(self, message: discord.Message) -> None: self.scheduler.schedule_later( delay, thread.id, - _channel.maybe_archive_idle_post(thread, self.scheduler) + _channel.maybe_archive_idle_post(thread.id, self.scheduler) ) @commands.Cog.listener()