aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bot/exts/moderation/stream.py20
1 files changed, 19 insertions, 1 deletions
diff --git a/bot/exts/moderation/stream.py b/bot/exts/moderation/stream.py
index 25e0f2c1b..66ca96339 100644
--- a/bot/exts/moderation/stream.py
+++ b/bot/exts/moderation/stream.py
@@ -1,4 +1,5 @@
import datetime
+import logging
import discord
from async_rediscache import RedisCache
@@ -10,6 +11,8 @@ from bot.converters import Expiry
from bot.utils.scheduling import Scheduler
from bot.utils.time import format_infraction_with_duration
+log = logging.getLogger(__name__)
+
class Stream(commands.Cog):
"""Grant and revoke streaming permissions from users."""
@@ -32,7 +35,22 @@ class Stream(commands.Cog):
await self.bot.wait_until_guild_available()
items = await self.task_cache.items()
for key, value in items:
- member = await self.bot.get_guild(Guild.id).fetch_member(key)
+ member = self.bot.get_guild(Guild.id).get_member(key)
+
+ if not member:
+ try:
+ member = await self.bot.get_guild(Guild.id).fetch_member(key)
+ except discord.errors.NotFound:
+ log.debug(
+ f"Member {key} left the guild before we could scheudle "
+ "the revoking of their streaming permissions."
+ )
+ await self.task_cache.delete(key)
+ continue
+ except discord.HTTPException as e:
+ log.exception(f"Exception while trying to retrieve member {key} from discord\n{e}")
+ continue
+
self.scheduler.schedule_at(
datetime.datetime.utcfromtimestamp(value),
key,