aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bot/exts/moderation/stream.py31
1 files changed, 20 insertions, 11 deletions
diff --git a/bot/exts/moderation/stream.py b/bot/exts/moderation/stream.py
index 4c86219f5..304b92293 100644
--- a/bot/exts/moderation/stream.py
+++ b/bot/exts/moderation/stream.py
@@ -87,7 +87,7 @@ class Stream(commands.Cog):
log.trace(f"Attempting to give temporary streaming permission to {member} ({member.id}).")
# If duration is none then calculate default duration
if duration is None:
- duration = arrow.utcnow().naive + timedelta(
+ duration = arrow.utcnow() + timedelta(
minutes=VideoPermission.default_permission_duration
)
@@ -99,9 +99,12 @@ class Stream(commands.Cog):
return
# Schedule task to remove streaming permission from Member and add it to task cache
- self.scheduler.schedule_at(duration, member.id, self._revoke_streaming_permission(member))
+ self.scheduler.schedule_at(duration.naive, member.id, self._revoke_streaming_permission(member))
await self.task_cache.set(member.id, Arrow.fromdatetime(duration).timestamp())
+
await member.add_roles(discord.Object(Roles.video), reason="Temporary streaming access granted")
+
+ # Convert here for nicer logging and output
revoke_time = format_infraction_with_duration(str(duration))
await ctx.send(f"{Emojis.check_mark} {member.mention} can now stream until {revoke_time}.")
log.debug(f"Successfully given {member} ({member.id}) permission to stream until {revoke_time}.")
@@ -111,17 +114,20 @@ class Stream(commands.Cog):
async def permanentstream(self, ctx: commands.Context, member: discord.Member) -> None:
"""Permanently grants the given member the permission to stream."""
log.trace(f"Attempting to give permanent streaming permission to {member} ({member.id}).")
+
# Check if the member already has streaming permission
- already_allowed = any(Roles.video == role.id for role in member.roles)
- if already_allowed:
+ if any(Roles.video == role.id for role in member.roles):
if member.id in self.scheduler:
+ # Member has temp permission, so cancel the task to revoke later and delete from cache
self.scheduler.cancel(member.id)
await self.task_cache.delete(member.id)
+
await ctx.send(f"{Emojis.check_mark} Changed temporary permission to permanent.")
log.debug(
f"Successfully upgraded temporary streaming permission for {member} ({member.id}) to permanent."
)
return
+
await ctx.send(f"{Emojis.cross_mark} This member can already stream.")
log.debug(f"{member} ({member.id}) already had permanent streaming permission.")
return
@@ -135,18 +141,21 @@ class Stream(commands.Cog):
async def revokestream(self, ctx: commands.Context, member: discord.Member) -> None:
"""Revoke the permission to stream from the given member."""
log.trace(f"Attempting to remove streaming permission from {member} ({member.id}).")
- # Check if the memeber has the streaming permission to begin with
- allowed = any(Roles.video == role.id for role in member.roles)
- if allowed:
- # Cancel scheduled task to take away streaming permission to avoid errors
+
+ # Check if the member already has streaming permission
+ if any(Roles.video == role.id for role in member.roles):
if member.id in self.scheduler:
+ # Member has temp permission, so cancel the task to revoke later and delete from cache
self.scheduler.cancel(member.id)
+ await self.task_cache.delete(member.id)
await self._revoke_streaming_permission(member)
+
await ctx.send(f"{Emojis.check_mark} Revoked the permission to stream from {member.mention}.")
log.debug(f"Successfully revoked streaming permission from {member} ({member.id}).")
- else:
- await ctx.send(f"{Emojis.cross_mark} This member doesn't have video permissions to remove!")
- log.debug(f"{member} ({member.id}) didn't have the streaming permission to remove!")
+ return
+
+ await ctx.send(f"{Emojis.cross_mark} This member doesn't have video permissions to remove!")
+ log.debug(f"{member} ({member.id}) didn't have the streaming permission to remove!")
def setup(bot: Bot) -> None: