mirror of
https://github.com/Matthww/TuneBot.git
synced 2026-09-21 22:07:48 +00:00
fill_player_queue now recursively refetches until queue size is ensured
This commit is contained in:
+6
-1
@@ -95,10 +95,11 @@ class Music(BaseCog):
|
|||||||
|
|
||||||
async def fill_player_queue(self, player: DefaultPlayer, buffer: Optional[int] = 1):
|
async def fill_player_queue(self, player: DefaultPlayer, buffer: Optional[int] = 1):
|
||||||
queries = await self.bot.global_playlist.pick_random(buffer)
|
queries = await self.bot.global_playlist.pick_random(buffer)
|
||||||
# Get the results for the query from Lavalink.
|
failed_queries: list[str] = []
|
||||||
for query in queries:
|
for query in queries:
|
||||||
result = await player.node.get_tracks(query)
|
result = await player.node.get_tracks(query)
|
||||||
if not result or not result["tracks"]:
|
if not result or not result["tracks"]:
|
||||||
|
failed_queries.append(query)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
track = lavalink.models.AudioTrack(
|
track = lavalink.models.AudioTrack(
|
||||||
@@ -106,6 +107,10 @@ class Music(BaseCog):
|
|||||||
)
|
)
|
||||||
player.add(requester=self.bot.user.id, track=track)
|
player.add(requester=self.bot.user.id, track=track)
|
||||||
|
|
||||||
|
if len(failed_queries) > 0:
|
||||||
|
await self.bot.global_playlist.remove_tracks(failed_queries)
|
||||||
|
await self.fill_player_queue(player, len(failed_queries))
|
||||||
|
|
||||||
async def create_track_embed(self, track: AudioTrack) -> Embed:
|
async def create_track_embed(self, track: AudioTrack) -> Embed:
|
||||||
embed_color = self.bot.colors["embed"]
|
embed_color = self.bot.colors["embed"]
|
||||||
embed = discord.Embed(
|
embed = discord.Embed(
|
||||||
|
|||||||
@@ -32,6 +32,10 @@ class GlobalPlaylist(ABC):
|
|||||||
async def clear(self):
|
async def clear(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
async def remove_tracks(self, track_urls: list[str]):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class GlobalAutoJoin(ABC):
|
class GlobalAutoJoin(ABC):
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
|
|||||||
@@ -29,5 +29,14 @@ class GlobalRedisPlaylist(RedisBotEntity, GlobalPlaylist):
|
|||||||
"""
|
"""
|
||||||
await self.redis.delete(self.key("playlist"))
|
await self.redis.delete(self.key("playlist"))
|
||||||
|
|
||||||
|
async def remove_tracks(self, track_urls: list[str]):
|
||||||
|
"""
|
||||||
|
Removes a single track from the playlist
|
||||||
|
|
||||||
|
Args:
|
||||||
|
track_url (str): [description]
|
||||||
|
"""
|
||||||
|
await self.redis.srem(self.key("playlist"), *track_urls)
|
||||||
|
|
||||||
|
|
||||||
__all__ = ("GlobalRedisPlaylist",)
|
__all__ = ("GlobalRedisPlaylist",)
|
||||||
|
|||||||
Reference in New Issue
Block a user