aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Chris <[email protected]>2021-03-31 23:54:41 +0100
committerGravatar Chris <[email protected]>2021-03-31 23:54:41 +0100
commitd34b95771f551a7dc1e5b3d422df39f95ff800a0 (patch)
tree7e5bf555a67b1c970e293adcd46f9e25444c0973
parentRefactor 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.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,