From 05753b878581dd80451022d5ac55f5be61c8c339 Mon Sep 17 00:00:00 2001 From: Ev-1 <33662061+Ev-1@users.noreply.github.com> Date: Tue, 18 May 2021 17:48:55 +0200 Subject: [PATCH 1/6] Make setting default to help --- cogs/settings.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cogs/settings.py b/cogs/settings.py index 5c10453..382288e 100644 --- a/cogs/settings.py +++ b/cogs/settings.py @@ -1,4 +1,6 @@ # Discord Packages +from cogs.helpformatter import commandhelper +from cogs.utils.paginator import Scroller import discord from discord.ext import commands @@ -22,7 +24,10 @@ class Settings(commands.Cog): @commands.group(name='settings', hidden=True) async def _set(self, ctx): if ctx.invoked_subcommand is None: - await self.current_settings.invoke(ctx) + ctx.localizer.prefix = 'help' # Ensure the bot looks for locales in the context of help, not cogmanager. + paginator = commandhelper(ctx, ctx.command, ctx.invoker, include_subcmd=True) + scroller = Scroller(ctx, paginator) + await scroller.start_scrolling() @checks.is_admin() @commands.guild_only() From dd08ae4bc3a032ea92ba5f4120f8f9207c752753 Mon Sep 17 00:00:00 2001 From: Ev-1 <33662061+Ev-1@users.noreply.github.com> Date: Tue, 18 May 2021 18:14:06 +0200 Subject: [PATCH 2/6] Make the bot say which voice channel it is currently being used in. --- cogs/errors.py | 29 +++++++++++++++-------------- cogs/music/decorators.py | 4 +++- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/cogs/errors.py b/cogs/errors.py index d538c8e..5f69570 100644 --- a/cogs/errors.py +++ b/cogs/errors.py @@ -55,9 +55,6 @@ class Errors(commands.Cog): elif (err.original == 'I need the `CONNECT` and `SPEAK` permissions.'): return await send_error_embed('{errors.need_permission}') - elif (err.original == 'You need to be in my voicechannel.'): - return await send_error_embed('{errors.my_channel}') - elif (err.original == 'Not playing'): return await send_error_embed('{not_playing}') @@ -68,17 +65,21 @@ class Errors(commands.Cog): return await send_error_embed('{errors.full_channel}') if isinstance(err, WrongVoiceChannelError): - changed = False - response = ctx.localizer.format_str('{settings_check.voicechannel}') - for channel_id in err.channels: - channel = ctx.guild.get_channel(channel_id) - if channel is not None: - response += f'{channel.name}, ' - changed = True - if changed: - return await send_error_embed(response[:-2], title='{errors.right_channel}') - else: - return await send_error_embed('{errors.right_channel}') + if(err.original.startswith("You need to be in my voice channel")): + return await send_error_embed(err.channels[0].name, title='{errors.my_channel}') + + elif (err.original.startswith('You need to be in the right voice channel')): + changed = False + response = ctx.localizer.format_str('{settings_check.voicechannel}') + for channel_id in err.channels: + channel = ctx.guild.get_channel(channel_id) + if channel is not None: + response += f'{channel.name}, ' + changed = True + if changed: + return await send_error_embed(response[:-2], title='{errors.right_channel}') + else: + return await send_error_embed('{errors.right_channel}') if isinstance(err, WrongTextChannelError): try: diff --git a/cogs/music/decorators.py b/cogs/music/decorators.py index 6db999d..0b503ba 100644 --- a/cogs/music/decorators.py +++ b/cogs/music/decorators.py @@ -49,7 +49,9 @@ def require_voice_connection(should_connect=False): await self.connect_to(ctx.guild.id, str(ctx.author.voice.channel.id)) elif int(player.channel_id) != ctx.author.voice.channel.id: - raise commands.CommandInvokeError('You need to be in my voicechannel.') + bot_channel = self.bot.get_channel(int(player.channel_id)) + raise WrongVoiceChannelError( + 'You need to be in my voice channel', channels=[bot_channel]) await func(self, ctx, *command_args, **kwargs) From b68eb43883fcc554ba6a9f2f91a2200b88948706 Mon Sep 17 00:00:00 2001 From: Ev-1 <33662061+Ev-1@users.noreply.github.com> Date: Tue, 18 May 2021 18:22:37 +0200 Subject: [PATCH 3/6] Add force disconnect without voice checks. --- cogs/music/basic_commands.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/cogs/music/basic_commands.py b/cogs/music/basic_commands.py index 4507c20..e890b53 100644 --- a/cogs/music/basic_commands.py +++ b/cogs/music/basic_commands.py @@ -439,3 +439,19 @@ async def _forceplay(self, ctx, *, query: str): if not player.is_playing: await player.play() + + +@commands.command(name='forcedisconnect') +@checks.dj_or(alone=True) +async def _forcedisconnect(self, ctx, *, query: str): + """ Searches and plays a song from a given query. """ + try: + player = self.bot.lavalink.player_manager.get(ctx.guild.id) + player.queue.clear() + await player.stop() + except Exception: + self.logger.exception("Error forcedisconnecting") + await self.connect_to(ctx.guild.id, None) + embed = discord.Embed(description='{disconnect.disconnected}', color=ctx.me.color) + embed = ctx.localizer.format_embed(embed) + await ctx.send(embed=embed) From 4c82569f606ac43c5234f942a51e84e6130431ac Mon Sep 17 00:00:00 2001 From: Ev-1 <33662061+Ev-1@users.noreply.github.com> Date: Tue, 18 May 2021 18:31:05 +0200 Subject: [PATCH 4/6] Fix forcedisconnect --- cogs/music/__init__.py | 2 +- cogs/music/basic_commands.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cogs/music/__init__.py b/cogs/music/__init__.py index 7e3bf7f..bf86208 100644 --- a/cogs/music/__init__.py +++ b/cogs/music/__init__.py @@ -121,7 +121,7 @@ class Music(commands.Cog): # commands from .basic_commands import ( _disconnect, _djremove, _forceplay, _move, _myqueue, _now, _pause, _play, _queue, _reconnect, _remove, _search, - _seek, _shuffle, _skip, _skip_to, _stop, _user_queue_remove, _volume) + _seek, _shuffle, _skip, _skip_to, _stop, _user_queue_remove, _volume, _forcedisconnect) # events from .events import check_leave_voice, cog_unload, leave_check, leave_timer, on_voice_state_update, track_hook # commands diff --git a/cogs/music/basic_commands.py b/cogs/music/basic_commands.py index e890b53..4f5a425 100644 --- a/cogs/music/basic_commands.py +++ b/cogs/music/basic_commands.py @@ -443,7 +443,7 @@ async def _forceplay(self, ctx, *, query: str): @commands.command(name='forcedisconnect') @checks.dj_or(alone=True) -async def _forcedisconnect(self, ctx, *, query: str): +async def _forcedisconnect(self, ctx): """ Searches and plays a song from a given query. """ try: player = self.bot.lavalink.player_manager.get(ctx.guild.id) From 072b1ee85f7d4f76c701286c16af84e05ae2ddcf Mon Sep 17 00:00:00 2001 From: Ev-1 <33662061+Ev-1@users.noreply.github.com> Date: Tue, 18 May 2021 18:33:08 +0200 Subject: [PATCH 5/6] isort --- cogs/music/__init__.py | 4 ++-- cogs/settings.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cogs/music/__init__.py b/cogs/music/__init__.py index bf86208..4bd0ba4 100644 --- a/cogs/music/__init__.py +++ b/cogs/music/__init__.py @@ -120,8 +120,8 @@ class Music(commands.Cog): # commands from .basic_commands import ( - _disconnect, _djremove, _forceplay, _move, _myqueue, _now, _pause, _play, _queue, _reconnect, _remove, _search, - _seek, _shuffle, _skip, _skip_to, _stop, _user_queue_remove, _volume, _forcedisconnect) + _disconnect, _djremove, _forcedisconnect, _forceplay, _move, _myqueue, _now, _pause, _play, _queue, _reconnect, + _remove, _search, _seek, _shuffle, _skip, _skip_to, _stop, _user_queue_remove, _volume) # events from .events import check_leave_voice, cog_unload, leave_check, leave_timer, on_voice_state_update, track_hook # commands diff --git a/cogs/settings.py b/cogs/settings.py index 382288e..6e87c66 100644 --- a/cogs/settings.py +++ b/cogs/settings.py @@ -1,11 +1,11 @@ # Discord Packages -from cogs.helpformatter import commandhelper -from cogs.utils.paginator import Scroller import discord from discord.ext import commands # Bot Utilities +from cogs.helpformatter import commandhelper from cogs.utils import checks +from cogs.utils.paginator import Scroller class Settings(commands.Cog): From 2e1164b46fb345958fbf20621723a0359d492f32 Mon Sep 17 00:00:00 2001 From: Ev-1 <33662061+Ev-1@users.noreply.github.com> Date: Tue, 18 May 2021 19:30:01 +0200 Subject: [PATCH 6/6] PR feedback. --- cogs/music/basic_commands.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cogs/music/basic_commands.py b/cogs/music/basic_commands.py index 4f5a425..ff5761a 100644 --- a/cogs/music/basic_commands.py +++ b/cogs/music/basic_commands.py @@ -444,7 +444,7 @@ async def _forceplay(self, ctx, *, query: str): @commands.command(name='forcedisconnect') @checks.dj_or(alone=True) async def _forcedisconnect(self, ctx): - """ Searches and plays a song from a given query. """ + """ Attempts to force disconnect the bot without checking if it is connected initially. """ try: player = self.bot.lavalink.player_manager.get(ctx.guild.id) player.queue.clear()