From e7aa431ae297221d1c01e504f08ed02260f38db6 Mon Sep 17 00:00:00 2001 From: Choco Date: Mon, 11 Aug 2025 17:44:46 +0800 Subject: [PATCH] Handle Playlist type in track search results Added a check to handle cases where the returned tracks are a Playlist object, ensuring the correct list of tracks is used for app command choices. --- cogs/basic.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/cogs/basic.py b/cogs/basic.py index ce6242c..0a10f96 100644 --- a/cogs/basic.py +++ b/cogs/basic.py @@ -93,8 +93,15 @@ class Basic(commands.Cog): node = voicelink.NodePool.get_node() if not node: return [] + tracks: list[voicelink.Track] = await node.get_tracks(current, requester=interaction.user) - return [app_commands.Choice(name=truncate_string(f"🎵 {track.author} - {track.title}", 100), value=truncate_string(f"{track.author} - {track.title}", 100)) for track in tracks] if tracks else [] + if not tracks: + return [] + + if isinstance(tracks, voicelink.Playlist): + tracks = tracks.tracks + + return [app_commands.Choice(name=truncate_string(f"🎵 {track.author} - {track.title}", 100), value=truncate_string(f"{track.author} - {track.title}", 100)) for track in tracks] history = {track["identifier"]: track for track_id in reversed(await get_user(interaction.user.id, "history")) if (track := voicelink.decode(track_id))["uri"]} return [app_commands.Choice(name=truncate_string(f"🕒 {track['author']} - {track['title']}", 100), value=track['uri']) for track in history.values() if len(track['uri']) <= 100][:25]