mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-11-06 03:08:55 -05:00
[Audio] _enqueue_tracks clarification/fix (#2822)
Resolves #2820. Added some comments to clear up a little of the mystery in a couple places.
This commit is contained in:
parent
142fb0ad08
commit
93391d028c
@ -1638,6 +1638,7 @@ class Audio(commands.Cog):
|
|||||||
async def _enqueue_tracks(self, ctx, query):
|
async def _enqueue_tracks(self, ctx, query):
|
||||||
player = lavalink.get_player(ctx.guild.id)
|
player = lavalink.get_player(ctx.guild.id)
|
||||||
guild_data = await self.config.guild(ctx.guild).all()
|
guild_data = await self.config.guild(ctx.guild).all()
|
||||||
|
first_track_only = False
|
||||||
if type(query) is not list:
|
if type(query) is not list:
|
||||||
if not (
|
if not (
|
||||||
query.startswith("http")
|
query.startswith("http")
|
||||||
@ -1645,6 +1646,8 @@ class Audio(commands.Cog):
|
|||||||
or query.startswith("ytsearch:")
|
or query.startswith("ytsearch:")
|
||||||
):
|
):
|
||||||
query = f"ytsearch:{query}"
|
query = f"ytsearch:{query}"
|
||||||
|
if query.startswith(("ytsearch", "localtracks")):
|
||||||
|
first_track_only = True
|
||||||
tracks = await player.get_tracks(query)
|
tracks = await player.get_tracks(query)
|
||||||
if not tracks:
|
if not tracks:
|
||||||
return await self._embed_msg(ctx, _("Nothing found."))
|
return await self._embed_msg(ctx, _("Nothing found."))
|
||||||
@ -1655,7 +1658,11 @@ class Audio(commands.Cog):
|
|||||||
queue_total_duration = lavalink.utils.format_time(queue_duration)
|
queue_total_duration = lavalink.utils.format_time(queue_duration)
|
||||||
before_queue_length = len(player.queue)
|
before_queue_length = len(player.queue)
|
||||||
|
|
||||||
if ("ytsearch:" or "localtrack") not in query and len(tracks) > 1:
|
if not first_track_only and len(tracks) > 1:
|
||||||
|
# a list of Tracks where all should be enqueued
|
||||||
|
# this is a Spotify playlist aleady made into a list of Tracks or a
|
||||||
|
# url where Lavalink handles providing all Track objects to use, like a
|
||||||
|
# YouTube or Soundcloud playlist
|
||||||
track_len = 0
|
track_len = 0
|
||||||
for track in tracks:
|
for track in tracks:
|
||||||
if guild_data["maxlength"] > 0:
|
if guild_data["maxlength"] > 0:
|
||||||
@ -1688,6 +1695,9 @@ class Audio(commands.Cog):
|
|||||||
if not player.current:
|
if not player.current:
|
||||||
await player.play()
|
await player.play()
|
||||||
else:
|
else:
|
||||||
|
# a ytsearch: prefixed item where we only need the first Track returned
|
||||||
|
# this is in the case of [p]play <query>, a single Spotify url/code
|
||||||
|
# or this is a localtrack item
|
||||||
try:
|
try:
|
||||||
single_track = tracks[0]
|
single_track = tracks[0]
|
||||||
if guild_data["maxlength"] > 0:
|
if guild_data["maxlength"] > 0:
|
||||||
@ -3077,14 +3087,17 @@ class Audio(commands.Cog):
|
|||||||
|
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
if command == "search":
|
if command == "search":
|
||||||
|
# [p]local search
|
||||||
return await ctx.invoke(self.play, query=("localtracks/{}".format(search_choice)))
|
return await ctx.invoke(self.play, query=("localtracks/{}".format(search_choice)))
|
||||||
search_choice = search_choice.replace("localtrack:", "")
|
search_choice = search_choice.replace("localtrack:", "")
|
||||||
local_path = await self.config.localpath()
|
local_path = await self.config.localpath()
|
||||||
if not search_choice.startswith(local_path):
|
if not search_choice.startswith(local_path):
|
||||||
|
# folder display for [p]local play
|
||||||
return await ctx.invoke(
|
return await ctx.invoke(
|
||||||
self.search, query=("localfolder:{}".format(search_choice))
|
self.search, query=("localfolder:{}".format(search_choice))
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
|
# file display for a chosen folder in the [p]local play menus
|
||||||
return await ctx.invoke(self.play, query=("localtrack:{}".format(search_choice)))
|
return await ctx.invoke(self.play, query=("localtrack:{}".format(search_choice)))
|
||||||
|
|
||||||
embed = discord.Embed(
|
embed = discord.Embed(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user