diff --git a/jarvis_tasks/tasks/reddit.py b/jarvis_tasks/tasks/reddit.py index e31d167..4ff5f0c 100644 --- a/jarvis_tasks/tasks/reddit.py +++ b/jarvis_tasks/tasks/reddit.py @@ -106,21 +106,23 @@ async def _stream(sub: Sub, bot: Snake) -> None: continue logger.debug(f"Got new post in {sub.display_name}") follows = SubredditFollow.find(q(display_name=sub.display_name)) - follows_to_delete = [] num_follows = 0 async for follow in follows: num_follows += 1 + guild = await bot.fetch_guild(follow.guild) if not guild: logger.warning(f"Follow {follow.id}'s guild no longer exists, deleting") - follows_to_delete.append(follow) + await follow.delete() + num_follows -= 1 continue channel = await bot.fetch_channel(follow.channel) if not channel: logger.warning(f"Follow {follow.id}'s channel no longer exists, deleting") - follows_to_delete.append(follow) + await follow.delete() + num_follows -= 1 continue embeds = await post_embeds(sub, post) @@ -133,17 +135,14 @@ async def _stream(sub: Sub, bot: Snake) -> None: ) except DNotFound: logger.warning(f"Follow {follow.id}'s channel no longer exists, deleting") - follows_to_delete.append(follow) + await follow.delete() + num_follows -= 1 continue except Exception: logger.error( f"Failed to send message to {channel.id} in {channel.guild.name}", exc_info=True ) - # Delete invalid follows - for follow in follows_to_delete: - await follow.delete() - if num_follows == 0: s = await Subreddit.find_one(q(display_name=sub.display_name)) if s: