mirror of
https://github.com/Matthww/TuneBot.git
synced 2026-09-21 20:47:44 +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):
|
||||
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:
|
||||
result = await player.node.get_tracks(query)
|
||||
if not result or not result["tracks"]:
|
||||
failed_queries.append(query)
|
||||
continue
|
||||
|
||||
track = lavalink.models.AudioTrack(
|
||||
@@ -106,6 +107,10 @@ class Music(BaseCog):
|
||||
)
|
||||
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:
|
||||
embed_color = self.bot.colors["embed"]
|
||||
embed = discord.Embed(
|
||||
|
||||
@@ -32,6 +32,10 @@ class GlobalPlaylist(ABC):
|
||||
async def clear(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def remove_tracks(self, track_urls: list[str]):
|
||||
pass
|
||||
|
||||
|
||||
class GlobalAutoJoin(ABC):
|
||||
@abstractmethod
|
||||
|
||||
@@ -29,5 +29,14 @@ class GlobalRedisPlaylist(RedisBotEntity, GlobalPlaylist):
|
||||
"""
|
||||
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",)
|
||||
|
||||
Reference in New Issue
Block a user