From 2eace2a405c3e17ff9972fb7a47931127f835159 Mon Sep 17 00:00:00 2001 From: zevaryx Date: Thu, 21 Apr 2022 10:01:55 -0600 Subject: [PATCH] Gracefully handle channel not found errors --- jarvis_tasks/tasks/reddit.py | 5 +++++ jarvis_tasks/tasks/twitter.py | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/jarvis_tasks/tasks/reddit.py b/jarvis_tasks/tasks/reddit.py index 9785a65..9dd4f91 100644 --- a/jarvis_tasks/tasks/reddit.py +++ b/jarvis_tasks/tasks/reddit.py @@ -9,6 +9,7 @@ from asyncpraw.models.reddit.submission import Submission from asyncpraw.models.reddit.submission import Subreddit as Sub from asyncprawcore.exceptions import Forbidden, NotFound from dis_snek import Snake +from dis_snek.client.errors import NotFound as DNotFound from dis_snek.models.discord.embed import Embed from jarvis_core.db import q from jarvis_core.db.models import Subreddit, SubredditFollow @@ -129,6 +130,10 @@ async def _stream(sub: Sub, bot: Snake) -> None: f"`r/{sub.display_name}` was posted to at ", embeds=embeds, ) + except DNotFound: + logger.warning(f"Follow {follow.id}'s channel no longer exists, deleting") + follows_to_delete.append(follow) + continue except Exception: logger.error( f"Failed to send message to {channel.id} in {channel.guild.name}", exc_info=True diff --git a/jarvis_tasks/tasks/twitter.py b/jarvis_tasks/tasks/twitter.py index 5fd3682..ab54e2e 100644 --- a/jarvis_tasks/tasks/twitter.py +++ b/jarvis_tasks/tasks/twitter.py @@ -5,6 +5,7 @@ from typing import List import tweepy.asynchronous from dis_snek import Snake +from dis_snek.client.errors import NotFound from dis_snek.models.discord.embed import Embed from jarvis_core.db import q from jarvis_core.db.models import TwitterAccount, TwitterFollow @@ -135,6 +136,11 @@ class JARVISTwitterStream(AsyncStream): f"`@{status.user.screen_name}` {mod}tweeted this at ", embeds=embeds, ) + except NotFound: + logger.warn(f"Follow {follow.id} invalid, deleting") + await follow.delete() + num_follows -= 1 + continue except Exception: logger.debug(f"Failed to send message to {channel.id} in {channel.guild.name}")