diff options
| -rw-r--r-- | bot/exts/moderation/stream.py | 30 | 
1 files changed, 27 insertions, 3 deletions
| diff --git a/bot/exts/moderation/stream.py b/bot/exts/moderation/stream.py index 1dbb2a46b..fd856a7f4 100644 --- a/bot/exts/moderation/stream.py +++ b/bot/exts/moderation/stream.py @@ -70,6 +70,28 @@ class Stream(commands.Cog):                  self._revoke_streaming_permission(member)              ) +    async def _suspend_stream(self, ctx: commands.Context, member: discord.Member) -> None: +        """Suspend a member's stream.""" +        await self.bot.wait_until_guild_available() +        voice_state = member.voice + +        if not voice_state: +            return + +        # If the user is streaming. +        if voice_state.self_stream: +            # End user's stream by moving them to AFK voice channel and back. +            original_vc = voice_state.channel +            await member.move_to(ctx.guild.afk_channel) +            await member.move_to(original_vc) + +            # Notify. +            await ctx.send(f"{member.mention}'s stream has been suspended!") +            log.debug(f"Successfully suspended stream from {member} ({member.id}).") +            return + +        log.debug(f"No stream found to suspend from {member} ({member.id}).") +      @commands.command(aliases=("streaming",))      @commands.has_any_role(*MODERATION_ROLES)      async def stream(self, ctx: commands.Context, member: discord.Member, duration: Expiry = None) -> None: @@ -170,10 +192,12 @@ class Stream(commands.Cog):              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}).") -            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!") +        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!") + +        await self._suspend_stream(ctx, member)      @commands.command(aliases=('lstream',))      @commands.has_any_role(*MODERATION_ROLES) | 
