fix: require voice connection to restore queue

This commit is contained in:
mmacierzanka committed 2026-08-21 21:14:01 +02:00
1 parent ca17c742c9
commit 80470c411e
5 files changed
+27 -3

No files matched your search

+2
View File
@@ -145,6 +145,8 @@ class MusicPlayer:
voice_client.stop()
async def restore_queue(self, guild_id: int) -> int:
if self.voice_client(guild_id) is None:
raise ValueError("Bot is not connected to a voice channel on this server")
if not self._queues:
return 0
+4 -1
View File
@@ -29,7 +29,10 @@ async def restore_queue(
player: MusicPlayer = Depends(get_player),
broadcaster: StatusBroadcaster = Depends(get_broadcaster),
) -> dict[str, int | str]:
count = await player.restore_queue(guild.id)
try:
count = await player.restore_queue(guild.id)
except ValueError as error:
raise HTTPException(status_code=400, detail=str(error)) from error
if count == 0:
raise HTTPException(status_code=404, detail="No saved queue for this server")
await broadcaster.broadcast()
+7 -1
View File
@@ -135,7 +135,13 @@ class PlayerView(discord.ui.View):
label="Przywróć kolejkę", emoji="↩️", style=discord.ButtonStyle.success, row=1
)
async def restore(self, interaction: discord.Interaction, _: discord.ui.Button) -> None:
count = await self.player.restore_queue(self.guild_id)
try:
count = await self.player.restore_queue(self.guild_id)
except ValueError as error:
await interaction.response.send_message(
embed=message_embed("Kolejka", str(error)), ephemeral=True
)
return
if not count:
await interaction.response.send_message(
embed=message_embed("Kolejka", "Nie ma zapisanej kolejki dla tego serwera."),
+7 -1
View File
@@ -78,7 +78,13 @@ class QueueCog(MusicCogBase, name="Queue"):
@app_commands.command(name="restorequeue", description="Przywróć ostatnią zapisaną kolejkę")
async def restore_queue(self, interaction: discord.Interaction) -> None:
count = await self.player.restore_queue(interaction.guild.id)
try:
count = await self.player.restore_queue(interaction.guild.id)
except ValueError as error:
await interaction.response.send_message(
embed=message_embed("Przywracanie kolejki", str(error)), ephemeral=True
)
return
if not count:
await interaction.response.send_message(
embed=message_embed(