From d34b95771f551a7dc1e5b3d422df39f95ff800a0 Mon Sep 17 00:00:00 2001 From: Chris Date: Wed, 31 Mar 2021 23:54:41 +0100 Subject: Atempt to get member from cache first, and handle errors from API member call --- bot/exts/moderation/stream.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) 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, -- cgit v1.2.3