fix(commands/voice): handle edge case where player dies

This commit is contained in:
Ryan 2025-01-01 16:52:15 -05:00
parent 642d4aef81
commit 409373ee27
Signed by: ErrorNoInternet
GPG Key ID: 2486BFB7B1E6A4A3

View File

@ -1,11 +1,10 @@
import math
import arguments
import youtubedl
from state import client, players
import commands
import utils
import youtubedl
from state import client, players
async def queue_or_play(message):
@ -213,6 +212,11 @@ async def skip(message):
else:
message.guild.voice_client.stop()
await utils.add_check_reaction(message)
if (
not message.guild.voice_client.is_playing()
and not message.guild.voice_client.is_paused()
):
play_next(message)
async def join(message):
@ -303,9 +307,15 @@ def play_next(message, once=False):
message.guild.voice_client.stop()
if players[message.guild.id].queue:
queued = players[message.guild.id].queue_pop()
message.guild.voice_client.play(
queued.player, after=lambda e: play_after_callback(e, message, once)
)
try:
message.guild.voice_client.play(
queued.player, after=lambda e: play_after_callback(e, message, once)
)
except Exception as e:
client.loop.create_task(
message.channel.send(f"error while trying to play: `{e}`")
)
return
client.loop.create_task(message.channel.send(f"**0.** {queued.format()}"))