Skip to content

Commit

Permalink
tests: playlists
Browse files Browse the repository at this point in the history
  • Loading branch information
ooliver1 committed Feb 4, 2023
1 parent 4c96b70 commit e563889
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 7 deletions.
34 changes: 29 additions & 5 deletions test_bot/bot/__main__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
"""Very basic bot to test mafic."""

from __future__ import annotations

from asyncio import sleep
Expand All @@ -6,8 +8,9 @@

from botbase import BotBase
from nextcord import Intents, Interaction
from nextcord.abc import Connectable

from mafic import Group, NodePool, Player, Region
from mafic import Group, NodePool, Player, Playlist, Region, Track, TrackEndEvent

getLogger("mafic").setLevel(DEBUG)

Expand All @@ -25,6 +28,7 @@ async def on_ready(self):

# Account for docker still starting up.
await sleep(5)
# Excessively test pool balancing.
await self.pool.create_node(
host="127.0.0.1",
port=6962,
Expand Down Expand Up @@ -122,6 +126,14 @@ async def on_ready(self):
bot = TestBot(intents=intents, shard_ids=[0, 1], shard_count=2)


class MyPlayer(Player[TestBot]):
def __init__(self, client: TestBot, channel: Connectable) -> None:
super().__init__(client, channel)

# Mafic does not provide a queue system right now, low priority.
self.queue: list[Track] = []


@bot.slash_command()
async def join(inter: Interaction):
"""Join your voice channel."""
Expand All @@ -145,15 +157,27 @@ async def play(inter: Interaction, query: str):
if not inter.guild.voice_client:
await join(inter)

player: Player = inter.guild.voice_client
player: MyPlayer = inter.guild.voice_client

tracks = await player.fetch_tracks(query)

if not tracks:
return await inter.response.send_message("No tracks found.")
return await inter.send("No tracks found.")

if isinstance(tracks, Playlist):
tracks = tracks.tracks

track = tracks[0]
if len(tracks) > 1:
player.queue.extend(tracks[1:])

await player.play(track)


# TODO: handle playlists
await player.play(tracks[0])
@bot.listen()
async def on_track_end(event: TrackEndEvent):
if event.player.queue:
await event.player.play(event.player.queue.pop(0))


bot.run(getenv("TOKEN"))
2 changes: 1 addition & 1 deletion test_bot/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ services:
lavalink:
build: lavalink
volumes:
- ./logs/lava2:/opt/Lavalink/logs
- ./logs/lava:/opt/Lavalink/logs
deploy:
replicas: 8
ports:
Expand Down
2 changes: 1 addition & 1 deletion test_bot/lavalink/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM fredboat/lavalink:v3.6
FROM fredboat/lavalink:3.7.4

COPY application.yml entrypoint.sh ./

Expand Down

0 comments on commit e563889

Please sign in to comment.