Merge pull request #43 from strNophix/ensure-queue-size

fill_player_queue now recursively refetches until queue size is ensured
This commit is contained in:
2021-12-07 06:41:16 +01:00
committed by GitHub
3 changed files with 19 additions and 1 deletions
+6 -1
View File
@@ -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(
+4
View File
@@ -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
+9
View File
@@ -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",)