mirror of
https://github.com/UiO-Gaming/ShiteMusicBot.git
synced 2026-11-05 13:56:51 +01:00
Merge pull request #56 from r-Norge/hotfix/missing_player_in_on_voice_state_update
Don't propagate error in on_state_update if we don't have a player
This commit is contained in:
2 files changed
+17
-7
No files matched your search
@@ -26,7 +26,7 @@ from ...utils.userinteraction.paginators import QueuePaginator, TextPaginator
|
||||
from ...utils.userinteraction.scroller import ClearOn, Scroller
|
||||
from ...utils.userinteraction.selector import SelectMode, Selector, SelectorButton, SelectorItem
|
||||
from .decorators import require_playing, require_queue, require_voice_connection, voteable
|
||||
from .music_errors import MusicError, WrongTextChannelError
|
||||
from .music_errors import MusicError, PlayerNotAvailableError, WrongTextChannelError
|
||||
from .voice_client import BasicVoiceClient
|
||||
|
||||
time_rx = re.compile('[0-9]+')
|
||||
@@ -64,7 +64,7 @@ class Music(commands.Cog):
|
||||
player: Optional[MixPlayer] = self.lavalink.player_manager.get(guild.id)
|
||||
if player is None:
|
||||
self.logger.error(f"Tried to get player for guild {guild.id} but got None")
|
||||
raise MusicError(f"Tried to get player for guild {guild.id} but got None")
|
||||
raise PlayerNotAvailableError(f"Tried to get player for guild {guild.id} but got None")
|
||||
return player
|
||||
|
||||
async def enqueue(self, ctx, track, embed, silent=False, check_max_length=True) -> tuple[discord.Embed, bool]:
|
||||
@@ -850,17 +850,22 @@ class Music(commands.Cog):
|
||||
return # Bot not logged in
|
||||
if member.id == self.bot.user.id and after.channel is not None:
|
||||
voice_channel = after.channel
|
||||
player = self.get_player(member.guild)
|
||||
try:
|
||||
player = self.get_player(member.guild)
|
||||
except PlayerNotAvailableError: # This is expected if we have not created a player for the guild yet
|
||||
return
|
||||
player.clear_listeners()
|
||||
for member in voice_channel.members:
|
||||
if not member.bot:
|
||||
player.update_listeners(member, member.voice)
|
||||
|
||||
if not member.bot:
|
||||
player = self.get_player(member.guild)
|
||||
if player is not None:
|
||||
player.update_listeners(member, after)
|
||||
await self.check_leave_voice(member.guild)
|
||||
try:
|
||||
player = self.get_player(member.guild)
|
||||
except PlayerNotAvailableError: # This is expected if we have not created a player for the guild yet
|
||||
return
|
||||
player.update_listeners(member, after)
|
||||
await self.check_leave_voice(member.guild)
|
||||
|
||||
async def check_leave_voice(self, guild: discord.Guild):
|
||||
""" Checks if the bot should leave the voice channel """
|
||||
|
||||
@@ -10,6 +10,11 @@ class MusicError(CommandError):
|
||||
super().__init__(message)
|
||||
|
||||
|
||||
class PlayerNotAvailable(MusicError):
|
||||
def __init__(self, message: str, inner_error: Optional[Exception] = None):
|
||||
super().__init__(message, inner_error=inner_error)
|
||||
|
||||
|
||||
class MissingPermissionsError(MusicError):
|
||||
def __init__(self, message: str, inner_error: Optional[Exception] = None):
|
||||
super().__init__(message, inner_error=inner_error)
|
||||
|
||||
Reference in new issue
Block a user