diff --git a/cogs/basic.py b/cogs/basic.py index 35f0444..29dc049 100644 --- a/cogs/basic.py +++ b/cogs/basic.py @@ -256,7 +256,7 @@ class Basic(commands.Cog): if player.is_paused: return await ctx.send(player.get_msg('pauseError')) - if not await player.is_privileged(ctx.author): + if not player.is_privileged(ctx.author): if ctx.author in player.pause_votes: return await ctx.send(player.get_msg('voted'), ephemeral=True) else: @@ -285,7 +285,7 @@ class Basic(commands.Cog): if not player.is_paused: return await ctx.send(player.get_msg('resumeError')) - if not await player.is_privileged(ctx.author): + if not player.is_privileged(ctx.author): if ctx.author in player.resume_votes: return await ctx.send(player.get_msg('voted'), ephemeral=True) else: @@ -315,7 +315,7 @@ class Basic(commands.Cog): if not player.is_playing: return await ctx.send(player.get_msg('skipError'), ephemeral=True) - if not await player.is_privileged(ctx.author): + if not player.is_privileged(ctx.author): if ctx.author == player.current.requester: pass elif ctx.author in player.skip_votes: @@ -352,7 +352,7 @@ class Basic(commands.Cog): if not ctx.author.guild_permissions.manage_guild: return await ctx.send(player.get_msg('notInChannel').format(ctx.author.mention, player.channel.mention), ephemeral=True) - if not await player.is_privileged(ctx.author): + if not player.is_privileged(ctx.author): if ctx.author in player.previous_votes: return await ctx.send(player.get_msg('voted'), ephemeral=True) else: @@ -392,7 +392,7 @@ class Basic(commands.Cog): if not player.current: return await ctx.send(player.get_msg('noTrackPlaying'), ephemeral=True) - if not await player.is_privileged(ctx.author): + if not player.is_privileged(ctx.author): return await ctx.send(player.get_msg('missingPerms_pos'), ephemeral=True) if player.position == 0: return await ctx.send(player.get_msg('noTrackPlaying'), ephemeral=True) @@ -453,7 +453,7 @@ class Basic(commands.Cog): if not ctx.author.guild_permissions.manage_guild: return await ctx.send(player.get_msg('notInChannel').format(ctx.author.mention, player.channel.mention), ephemeral=True) - if not await player.is_privileged(ctx.author): + if not player.is_privileged(ctx.author): if ctx.author in player.stop_votes: return await ctx.send(player.get_msg('voted'), ephemeral=True) else: @@ -498,7 +498,7 @@ class Basic(commands.Cog): if not ctx.author.guild_permissions.manage_guild: return await ctx.send(player.get_msg('notInChannel').format(ctx.author.mention, player.channel.mention), ephemeral=True) - if not await player.is_privileged(ctx.author): + if not player.is_privileged(ctx.author): return await ctx.send(player.get_msg('missingPerms_mode'), ephemeral=True) if mode.lower() not in ['off', 'track', 'queue']: @@ -523,7 +523,7 @@ class Basic(commands.Cog): if not ctx.author.guild_permissions.manage_guild: return await ctx.send(player.get_msg('notInChannel').format(ctx.author.mention, player.channel.mention), ephemeral=True) - if not await player.is_privileged(ctx.author): + if not player.is_privileged(ctx.author): return await ctx.send(player.get_msg('missingPerms_queue'), ephemeral=True) queue = queue.lower() @@ -552,7 +552,7 @@ class Basic(commands.Cog): if not ctx.author.guild_permissions.manage_guild: return await ctx.send(player.get_msg('notInChannel').format(ctx.author.mention, player.channel.mention), ephemeral=True) - if not await player.is_privileged(ctx.author): + if not player.is_privileged(ctx.author): return await ctx.send(player.get_msg('missingPerms_queue'), ephemeral=True) removedTrack = player.queue.remove(position1, position2, member) @@ -573,7 +573,7 @@ class Basic(commands.Cog): if not player.current: return await ctx.send(player.get_msg('noTrackPlaying'), ephemeral=True) - if not await player.is_privileged(ctx.author): + if not player.is_privileged(ctx.author): return await ctx.send(player.get_msg('missingPerms_pos'), ephemeral=True) num = formatTime(position) @@ -599,7 +599,7 @@ class Basic(commands.Cog): if not player.current: return await ctx.send(player.get_msg('noTrackPlaying'), ephemeral=True) - if not await player.is_privileged(ctx.author): + if not player.is_privileged(ctx.author): return await ctx.send(player.get_msg('missingPerms_pos'), ephemeral=True) num = formatTime(position) @@ -624,7 +624,7 @@ class Basic(commands.Cog): if not player.current: return await ctx.send(player.get_msg('noTrackPlaying'), ephemeral=True) - if not await player.is_privileged(ctx.author): + if not player.is_privileged(ctx.author): return await ctx.send(player.get_msg('missingPerms_pos'), ephemeral=True) await player.seek(0) @@ -642,7 +642,7 @@ class Basic(commands.Cog): if not ctx.author.guild_permissions.manage_guild: return await ctx.send(player.get_msg('notInChannel').format(ctx.author.mention, player.channel.mention), ephemeral=True) - if not await player.is_privileged(ctx.author): + if not player.is_privileged(ctx.author): if ctx.author in player.shuffle_votes: return await ctx.send(player.get_msg('voted'), ephemeral=True) else: @@ -675,7 +675,7 @@ class Basic(commands.Cog): if not ctx.author.guild_permissions.manage_guild: return await ctx.send(player.get_msg('notInChannel').format(ctx.author.mention, player.channel.mention), ephemeral=True) - if not await player.is_privileged(ctx.author): + if not player.is_privileged(ctx.author): return await ctx.send(player.get_msg('missingPerms_pos'), ephemeral=True) track1, track2 = player.queue.swap(position1, position2) @@ -697,7 +697,7 @@ class Basic(commands.Cog): if not ctx.author.guild_permissions.manage_guild: return await ctx.send(player.get_msg('notInChannel').format(ctx.author.mention, player.channel.mention), ephemeral=True) - if not await player.is_privileged(ctx.author): + if not player.is_privileged(ctx.author): return await ctx.send(player.get_msg('missingPerms_pos'), ephemeral=True) moved_track = player.queue.move(target, to) @@ -763,7 +763,7 @@ class Basic(commands.Cog): if not (track := player.current): return await ctx.send(player.get_msg('noTrackPlaying'), ephemeral=True) - if not await player.is_privileged(ctx.author): + if not player.is_privileged(ctx.author): return await ctx.send(player.get_msg('missingPerms_pos'), ephemeral=True) if track.source != 'youtube': @@ -798,7 +798,7 @@ class Basic(commands.Cog): if not player: return await ctx.send(get_lang(ctx.guild.id, 'noPlayer'), ephemeral=True) - if not await player.is_privileged(ctx.author): + if not player.is_privileged(ctx.author): return await ctx.send(player.get_msg('missingPerms_autoplay'), ephemeral=True) check = not player.settings.get("autoplay", False) diff --git a/views/controller.py b/views/controller.py index f3ee16c..a60e6b6 100644 --- a/views/controller.py +++ b/views/controller.py @@ -43,7 +43,7 @@ class Back(discord.ui.Button): super().__init__(emoji="âŽī¸", label=player.get_msg('buttonBack'), style=style, disabled=False if self.player.queue.history() or not self.player.current else True, row=row) async def callback(self, interaction: discord.Interaction): - if not await self.player.is_privileged(interaction.user): + if not self.player.is_privileged(interaction.user): if interaction.user in self.player.previous_votes: return await interaction.response.send_message(self.player.get_msg("voted"), ephemeral=True) else: @@ -72,7 +72,7 @@ class Resume(discord.ui.Button): async def callback(self, interaction: discord.Interaction): if self.player.is_paused: - if not await self.player.is_privileged(interaction.user): + if not self.player.is_privileged(interaction.user): if interaction.user in self.player.resume_votes: return await interaction.response.send_message(self.player.get_msg("voted"), ephemeral=True) else: @@ -88,7 +88,7 @@ class Resume(discord.ui.Button): await self.player.set_pause(False) else: - if not await self.player.is_privileged(interaction.user): + if not self.player.is_privileged(interaction.user): if interaction.user in self.player.pause_votes: return await interaction.response.send_message(self.player.get_msg("voted"), ephemeral=True) else: @@ -112,7 +112,7 @@ class Skip(discord.ui.Button): async def callback(self, interaction: discord.Interaction): if not self.player.is_playing: return - if not await self.player.is_privileged(interaction.user): + if not self.player.is_privileged(interaction.user): if interaction.user == self.player.current.requester: pass elif interaction.user in self.player.skip_votes: @@ -135,7 +135,7 @@ class Stop(discord.ui.Button): self.player = player super().__init__(emoji="âšī¸", label=player.get_msg('buttonLeave'), style=style, row=row) async def callback(self, interaction: discord.Interaction): - if not await self.player.is_privileged(interaction.user): + if not self.player.is_privileged(interaction.user): if interaction.user in self.player.stop_votes: return await interaction.response.send_message(self.player.get_msg("voted"), ephemeral=True) else: @@ -190,7 +190,7 @@ class Loop(discord.ui.Button): super().__init__(emoji="🔁", label=player.get_msg('buttonLoop'), style=style, row=row) async def callback(self, interaction: discord.Interaction): - if not await self.player.is_privileged(interaction.user): + if not self.player.is_privileged(interaction.user): return await interaction.response.send_message(self.player.get_msg('missingPerms_mode'), ephemeral=True) current_repeat = self.player.queue._repeat @@ -204,7 +204,7 @@ class VolumeUp(discord.ui.Button): super().__init__(emoji="🔊", label=player.get_msg('buttonVolumeUp'), style=style, row=row) async def callback(self, interaction: discord.Interaction): - if not await self.player.is_privileged(interaction.user): + if not self.player.is_privileged(interaction.user): return interaction.response.send_message(self.player.get_msg("missingPerms_function")) value = value if (value := self.player.volume + 20) <= 150 else 150 @@ -218,7 +218,7 @@ class VolumeDown(discord.ui.Button): super().__init__(emoji="🔉", label=player.get_msg('buttonVolumeDown'), style=style, row=row) async def callback(self, interaction: discord.Interaction): - if not await self.player.is_privileged(interaction.user): + if not self.player.is_privileged(interaction.user): return interaction.response.send_message(self.player.get_msg("missingPerms_function")) value = value if (value := self.player.volume - 20) >= 0 else 150 @@ -234,7 +234,7 @@ class VolumeMute(discord.ui.Button): style=style, row=row) async def callback(self, interaction: discord.Interaction): - if not await self.player.is_privileged(interaction.user): + if not self.player.is_privileged(interaction.user): return interaction.response.send_message(self.player.get_msg("missingPerms_function")) if self.player.volume != 0: @@ -269,7 +269,7 @@ class Tracks(discord.ui.Select): ) async def callback(self, interaction: discord.Interaction): - if not await self.player.is_privileged(interaction.user): + if not self.player.is_privileged(interaction.user): return await interaction.response.send_message(self.player.get_msg("missingPerms_function"), ephemeral=True) self.player.queue.skipto(int(self.values[0].split(". ")[0])) diff --git a/voicelink/player.py b/voicelink/player.py index c7710a4..bfdd933 100644 --- a/voicelink/player.py +++ b/voicelink/player.py @@ -208,6 +208,13 @@ class Player(VoiceProtocol): return required + def is_privileged(self, user: Member): + if user.id in func.bot_access_user: + return True + if 'dj' in self.settings and self.settings['dj']: + return user.guild_permissions.manage_guild or (self.settings['dj'] in [role.id for role in user.roles]) + return self.dj.id == user.id or user.guild_permissions.manage_guild + async def _update_state(self, data: dict): state: dict = data.get("state") self._last_update = time.time() * 1000 @@ -364,13 +371,6 @@ class Player(VoiceProtocol): await self.destroy() except: pass - - async def is_privileged(self, user: Member): - if user.id in func.bot_access_user: - return True - if 'dj' in self.settings and self.settings['dj']: - return user.guild_permissions.manage_guild or (self.settings['dj'] in [role.id for role in user.roles]) - return self.dj.id == user.id or user.guild_permissions.manage_guild async def get_tracks( self,