diff options
| author | 2021-03-31 23:54:41 +0100 | |
|---|---|---|
| committer | 2021-03-31 23:54:41 +0100 | |
| commit | d34b95771f551a7dc1e5b3d422df39f95ff800a0 (patch) | |
| tree | 7e5bf555a67b1c970e293adcd46f9e25444c0973 | |
| parent | Refactor code to match prevailing style, and reword some output in streaming cog (diff) | |
Atempt to get member from cache first, and handle errors from API member call
| -rw-r--r-- | bot/exts/moderation/stream.py | 20 |
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, |