Fixed the pings on repeated loops

This commit is contained in:
Dan 2025-01-22 20:34:07 -05:00
parent f53f6a1173
commit 24bf918b9e

View File

@ -127,21 +127,19 @@ async def play_next(interaction: discord.Interaction):
if repeat_modes.get(guild_id) == "one" and current_tracks.get(guild_id): if repeat_modes.get(guild_id) == "one" and current_tracks.get(guild_id):
song_url, title = current_tracks[guild_id] song_url, title = current_tracks[guild_id]
music_queues[guild_id].insert(0, (song_url, title)) # Re-add the current song to the front of the queue music_queues[guild_id].insert(0, (song_url, title)) # Re-add the current song to the front of the queue
# Skip sending an alert for the repeated song
# Handle Repeat All voice_client = voice_clients[guild_id]
elif repeat_modes.get(guild_id) == "all" and not music_queues[guild_id]: elif repeat_modes.get(guild_id) == "all" and not music_queues[guild_id]:
# Move completed songs back to the queue # Recycle the current track into the queue
song_url, title = current_tracks.get(guild_id, (None, None)) if current_tracks.get(guild_id):
if song_url and title: music_queues[guild_id].append(current_tracks[guild_id])
music_queues[guild_id].append((song_url, title))
music_queues[guild_id].extend(current_tracks.values())
# Proceed to play the next song # If no songs are left in the queue
if not music_queues[guild_id]: if not music_queues[guild_id]:
await interaction.followup.send("❌ **No more songs in the queue.**") await interaction.followup.send("❌ **No more songs in the queue.**")
return return
voice_client = voice_clients[guild_id] # Get the next song from the queue
song_url, title = music_queues[guild_id].pop(0) song_url, title = music_queues[guild_id].pop(0)
current_tracks[guild_id] = (song_url, title) current_tracks[guild_id] = (song_url, title)
@ -152,6 +150,7 @@ async def play_next(interaction: discord.Interaction):
} }
try: try:
voice_client = voice_clients[guild_id]
source = discord.FFmpegPCMAudio(song_url, **ffmpeg_options) source = discord.FFmpegPCMAudio(song_url, **ffmpeg_options)
volume = volumes.get(guild_id, default_volume) volume = volumes.get(guild_id, default_volume)
source = discord.PCMVolumeTransformer(source, volume=volume) source = discord.PCMVolumeTransformer(source, volume=volume)
@ -164,9 +163,16 @@ async def play_next(interaction: discord.Interaction):
), ),
) )
await interaction.followup.send(f"🎵 **Now playing:** {title}") # Only alert if the song is new
if repeat_modes.get(guild_id) != "one":
embed = discord.Embed(
title="🎵 Now Playing",
description=f"**{title}**",
color=discord.Color.green()
)
await interaction.followup.send(embed=embed)
except Exception as e: except Exception as e:
await interaction.followup.send(f"Failed to play the next song. Error: {str(e)}") await interaction.followup.send(f"❌ **Error:** Failed to play the next song. {str(e)}")
async def stop_audio(interaction: discord.Interaction): async def stop_audio(interaction: discord.Interaction):