add shuffle play

This commit is contained in:
insert 2024-07-18 07:44:41 -04:00
parent 0042deb1f3
commit ca886b1c71
Signed by: insert
GPG key ID: A70775C389ACF105

23
bot.py
View file

@ -4,6 +4,7 @@ from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By from selenium.webdriver.common.by import By
from time import sleep from time import sleep
import disnake import disnake
import random
from urllib.parse import urlparse from urllib.parse import urlparse
from disnake.ext import commands from disnake.ext import commands
from disnake import TextInputStyle from disnake import TextInputStyle
@ -19,6 +20,7 @@ handler.setFormatter(logging.Formatter('%(asctime)s:%(levelname)s:%(name)s: %(me
logger.addHandler(handler) logger.addHandler(handler)
queue = [] queue = []
shuffle = False
load_dotenv() load_dotenv()
options = Options() options = Options()
options.profile = webdriver.FirefoxProfile(os.getenv("PROFILE_PATH")) options.profile = webdriver.FirefoxProfile(os.getenv("PROFILE_PATH"))
@ -81,6 +83,23 @@ async def play(inter: disnake.AppCmdInter, link: str):
await inter.edit_original_response(f"This bot only accepts youtube links") await inter.edit_original_response(f"This bot only accepts youtube links")
return return
@bot.slash_command(
name="shuffle",
description="toggles shuffle on or off, the queue cannot be unshuffled once it is shuffled",
)
async def shuffleplay(inter: disnake.AppCmdInter, toggle: str = commands.Param(choices=["on", "off"])):
await inter.response.defer(ephemeral=True)
if toggle == "on":
global shuffle
shuffle = True
await inter.edit_original_response(f"shuffle enabled")
return
else:
global shuffle
shuffle = False
await inter.edit_original_response(f"shuffle disabled")
return
@bot.slash_command( @bot.slash_command(
name="queue", name="queue",
description="list the videos in queue", description="list the videos in queue",
@ -144,7 +163,11 @@ async def remove(inter: disnake.AppCmdInter, toremove: int):
async def queuehandler(): async def queuehandler():
loop = asyncio.get_running_loop() loop = asyncio.get_running_loop()
global queue
while queue: while queue:
if shuffle:
random.shuffle(queue)
print(queue)
driver.maximize_window() driver.maximize_window()
await loop.run_in_executor(None, play_video, queue[0]) await loop.run_in_executor(None, play_video, queue[0])
queue.pop(0) queue.pop(0)