1
Fork 0
mirror of https://github.com/RYGhub/royalnet.git synced 2024-11-24 03:54:20 +00:00

Complete!

This commit is contained in:
Steffo 2018-12-04 17:55:43 +01:00
parent d40620c58a
commit 46e7ba6b2f

View file

@ -250,7 +250,7 @@ class LoopMode(enum.Enum):
LOOPING_SHUFFLE = enum.auto() LOOPING_SHUFFLE = enum.auto()
class VideoQueue(): class VideoQueue:
"""The queue of videos to be played.""" """The queue of videos to be played."""
def __init__(self): def __init__(self):
@ -291,7 +291,7 @@ class VideoQueue():
if self.now_playing is None: if self.now_playing is None:
self.now_playing = None self.now_playing = None
return return
self.now_playing = self.now_playing.suggestion() self.now_playing = self.now_playing.get_suggestion()
elif self.loop_mode == LoopMode.AUTO_SHUFFLE: elif self.loop_mode == LoopMode.AUTO_SHUFFLE:
self.shuffle() self.shuffle()
try: try:
@ -434,8 +434,6 @@ class RoyalDiscordBot(discord.Client):
"!shuffle": self.cmd_shuffle, "!shuffle": self.cmd_shuffle,
"!clear": self.cmd_clear, "!clear": self.cmd_clear,
"!register": self.cmd_register, "!register": self.cmd_register,
"!forceplay": self.cmd_forceplay,
"!fp": self.cmd_forceplay,
"!radiomessages": self.cmd_radiomessages, "!radiomessages": self.cmd_radiomessages,
"!yes": self.null, "!yes": self.null,
"!no": self.null, "!no": self.null,
@ -911,7 +909,7 @@ class RoyalDiscordBot(discord.Client):
await channel.send(f"📻 Aggiunto un messaggio radio, disattiva con `!radiomessages off`.") await channel.send(f"📻 Aggiunto un messaggio radio, disattiva con `!radiomessages off`.")
logger.info(f"Radio message added to the queue.") logger.info(f"Radio message added to the queue.")
# Parse the parameter as URL # Parse the parameter as URL
url = re.match(r"(?:https?://|ytsearch[0-9]*:).*", " ".join(params[1:]).strip("<>")) url = re.match(r"(?:https?://|ytsearch[0-9]*:|scsearch[0-9]*:).*", " ".join(params[1:]).strip("<>"))
if url is not None: if url is not None:
# This is a url # This is a url
await self.add_video_from_url(url.group(0), enqueuer=author) await self.add_video_from_url(url.group(0), enqueuer=author)
@ -994,60 +992,66 @@ class RoyalDiscordBot(discord.Client):
@command @command
async def cmd_queue(self, channel: discord.TextChannel, author: discord.Member, params: typing.List[str]): async def cmd_queue(self, channel: discord.TextChannel, author: discord.Member, params: typing.List[str]):
msg = "" msg = ""
if self.loop_mode == LoopMode.NORMAL: if self.video_queue.loop_mode == LoopMode.NORMAL:
msg += "Modalità attuale: ➡️ **Nessuna ripetizione**\n\n" msg += "Modalità attuale: :arrow_right: **Nessuna ripetizione**\n"
elif self.loop_mode == LoopMode.LOOP_QUEUE: elif self.video_queue.loop_mode == LoopMode.LOOP_QUEUE:
msg += "Modalità attuale: 🔁 **Ripeti intera coda**\n\n" msg += "Modalità attuale: :repeat: **Ripeti intera coda**\n"
elif self.loop_mode == LoopMode.LOOP_SINGLE: elif self.video_queue.loop_mode == LoopMode.LOOP_SINGLE:
msg += "Modalità attuale: 🔂 **Ripeti canzone singola**\n\n" msg += "Modalità attuale: :repeat_one: **Ripeti canzone singola**\n"
elif self.loop_mode == LoopMode.FOLLOW_SUGGESTIONS: elif self.video_queue.loop_mode == LoopMode.FOLLOW_SUGGESTIONS:
msg += "Modalità attuale: 🔃 **Continua con video suggeriti**\n\n" msg += "Modalità attuale: :arrows_clockwise: **Continua con video suggeriti**\n"
elif self.loop_mode == LoopMode.AUTO_SHUFFLE: elif self.video_queue.loop_mode == LoopMode.AUTO_SHUFFLE:
msg += "Modalità attuale: 🔀 **Video casuale dalla coda**\n\n" msg += "Modalità attuale: :twisted_rightwards_arrows: **Video casuale dalla coda**\n"
elif self.loop_mode == LoopMode.LOOPING_SHUFFLE: elif self.video_queue.loop_mode == LoopMode.LOOPING_SHUFFLE:
msg += "Modalità attuale: 🔄 **Ripeti casualmente dalla coda**\n\n" msg += "Modalità attuale: :arrows_counterclockwise: **Ripeti casualmente dalla coda**\n"
msg += "**Video in coda:**\n" msg += "**Video in coda:**\n"
if len(self.video_queue) == 0: if self.video_queue.now_playing is None:
msg += "☁️ _nessuno_" msg += ":cloud: _nessuno_"
if self.loop_mode == LoopMode.NORMAL: else:
msg += f":arrow_forward: {str(self.video_queue.now_playing)}\n"
if self.video_queue.loop_mode == LoopMode.NORMAL:
for index, video in enumerate(self.video_queue.list[:10]): for index, video in enumerate(self.video_queue.list[:10]):
msg += f"{queue_emojis[index]} {str(video)}\n" msg += f"{queue_emojis[index]} {str(video)}\n"
if len(self.video_queue) > 10: if len(self.video_queue) > 10:
msg += f"più altri {len(self.video_queue) - 10} video!" msg += f"più altri {len(self.video_queue) - 10} video!"
elif self.loop_mode == LoopMode.LOOP_QUEUE: elif self.video_queue.loop_mode == LoopMode.LOOP_QUEUE:
for index, video in enumerate(self.video_queue.list[:10]): for index, video in enumerate(self.video_queue.list[:10]):
msg += f"{queue_emojis[index]} {str(video)}\n" msg += f"{queue_emojis[index]} {str(video)}\n"
if len(self.video_queue) > 10: if len(self.video_queue) > 10:
msg += f"più altri {len(self.video_queue) - 10} video che si ripetono!" msg += f"più altri {len(self.video_queue) - 10} video che si ripetono!"
else:
if len(self.video_queue) < 6: if len(self.video_queue) < 6:
count = len(self.video_queue) count = len(self.video_queue)
while count < 10: while count < 10:
for index, video in enumerate(self.video_queue.list[:10]): for index, video in enumerate(self.video_queue.list[:10]):
msg += f"*️⃣ {str(video)}\n" msg += f":asterisk: {str(video)}\n"
count += len(self.video_queue) count += len(self.video_queue)
elif self.loop_mode == LoopMode.LOOP_SINGLE: msg += "e avanti così!"
video = self.video_queue[0] elif self.video_queue.loop_mode == LoopMode.LOOP_SINGLE:
msg += f"1{str(video)}\n" video = self.video_queue.now_playing
for index in range(9): for index in range(9):
msg += f"*️⃣ {str(video)}\n" msg += f":asterisk: {str(video)}\n"
elif self.loop_mode == LoopMode.FOLLOW_SUGGESTIONS: msg += "all'infinito!"
msg += "🌈" elif self.video_queue.loop_mode == LoopMode.FOLLOW_SUGGESTIONS:
elif self.loop_mode == LoopMode.AUTO_SHUFFLE: msg += ":rainbow:"
elif self.video_queue.loop_mode == LoopMode.AUTO_SHUFFLE:
for index, video in enumerate(self.video_queue.list[:10]): for index, video in enumerate(self.video_queue.list[:10]):
msg += f"#️⃣ {str(video)}\n" msg += f":hash: {str(video)}\n"
if len(self.video_queue) > 10: if len(self.video_queue) > 10:
msg += f"più altri {len(self.video_queue) - 10} video!" msg += f"più altri {len(self.video_queue) - 10} video!"
elif self.loop_mode == LoopMode.LOOPING_SHUFFLE: elif self.video_queue.loop_mode == LoopMode.LOOPING_SHUFFLE:
for index, video in enumerate(self.video_queue.list[:10]): for index, video in enumerate(self.video_queue.list[:10]):
msg += f"#️⃣ {str(video)}\n" msg += f":hash: {str(video)}\n"
if len(self.video_queue) > 10: if len(self.video_queue) > 10:
msg += f"più altri {len(self.video_queue) - 10} video che si ripetono!" msg += f"più altri {len(self.video_queue) - 10} video che si ripetono!"
else:
if len(self.video_queue) < 6: if len(self.video_queue) < 6:
count = len(self.video_queue) count = len(self.video_queue)
while count < 10: while count < 10:
for index, video in enumerate(self.video_queue.list[:10]): for index, video in enumerate(self.video_queue.list[:10]):
msg += f"*️⃣ {str(video)}\n" msg += f":asterisk: {str(video)}\n"
count += len(self.video_queue) count += len(self.video_queue)
msg += "a ripetizione casuale!"
await channel.send(msg) await channel.send(msg)
@command @command
@ -1070,32 +1074,6 @@ class RoyalDiscordBot(discord.Client):
self.video_queue.clear() self.video_queue.clear()
await channel.send(":regional_indicator_x: Tutti i video in coda rimossi.") await channel.send(":regional_indicator_x: Tutti i video in coda rimossi.")
@command
@requires_connected_voice_client
async def cmd_forceplay(self, channel: discord.TextChannel, author: discord.Member, params: typing.List[str]):
if len(params) < 2:
await channel.send("⚠ Non hai specificato una canzone da riprodurre!\n"
"Sintassi: `!forceplay <url|ricercayoutube|nomefile>`")
return
logger.info(f"Video play was forced by {author.name}#{author.discriminator}.")
# Parse the parameter as URL
url = re.match(r"(?:https?://|ytsearch[0-9]*:).*", " ".join(params[1:]).strip("<>"))
if url is not None:
# This is a url
await self.add_video_from_url(url.group(0), enqueuer=author)
await channel.send(f"✅ Video aggiunto alla coda.")
logger.debug(f"Forced {url} as URL.")
else:
# Search the parameter on youtube
search = " ".join(params[1:])
# This is a search
await self.add_video_from_url(url=f"ytsearch:{search}", enqueuer=author)
await channel.send(f"✅ Video aggiunto alla coda.")
logger.debug(f"Forced ytsearch:{search} as YouTube search.")
for voice_client in self.voice_clients:
if voice_client.is_playing():
voice_client.stop()
@command @command
async def cmd_radiomessages(self, channel: discord.TextChannel, author: discord.Member, params: typing.List[str]): async def cmd_radiomessages(self, channel: discord.TextChannel, author: discord.Member, params: typing.List[str]):
if not self.radio_messages_enabled: if not self.radio_messages_enabled:
@ -1142,6 +1120,7 @@ class RoyalDiscordBot(discord.Client):
if len(params) < 2: if len(params) < 2:
await channel.send("⚠ Sintassi del comando non valida.\n" await channel.send("⚠ Sintassi del comando non valida.\n"
"Sintassi: `!loop <off|loop1|loopall|suggest|shuffle|loopshuffle>`") "Sintassi: `!loop <off|loop1|loopall|suggest|shuffle|loopshuffle>`")
return
if params[1] == "off": if params[1] == "off":
self.video_queue.loop_mode = LoopMode.NORMAL self.video_queue.loop_mode = LoopMode.NORMAL
await channel.send("➡️ Modalità di coda impostata: **Nessuna ripetizione**") await channel.send("➡️ Modalità di coda impostata: **Nessuna ripetizione**")