mirror of
https://github.com/RYGhub/royalnet.git
synced 2024-11-27 13:34:28 +00:00
Complete!
This commit is contained in:
parent
d40620c58a
commit
46e7ba6b2f
1 changed files with 48 additions and 69 deletions
117
discordbot.py
117
discordbot.py
|
@ -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!"
|
||||||
if len(self.video_queue) < 6:
|
else:
|
||||||
count = len(self.video_queue)
|
if len(self.video_queue) < 6:
|
||||||
while count < 10:
|
count = len(self.video_queue)
|
||||||
for index, video in enumerate(self.video_queue.list[:10]):
|
while count < 10:
|
||||||
msg += f"*️⃣ {str(video)}\n"
|
for index, video in enumerate(self.video_queue.list[:10]):
|
||||||
count += len(self.video_queue)
|
msg += f":asterisk: {str(video)}\n"
|
||||||
elif self.loop_mode == LoopMode.LOOP_SINGLE:
|
count += len(self.video_queue)
|
||||||
video = self.video_queue[0]
|
msg += "e avanti così!"
|
||||||
msg += f"1️⃣ {str(video)}\n"
|
elif self.video_queue.loop_mode == LoopMode.LOOP_SINGLE:
|
||||||
|
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!"
|
||||||
if len(self.video_queue) < 6:
|
else:
|
||||||
count = len(self.video_queue)
|
if len(self.video_queue) < 6:
|
||||||
while count < 10:
|
count = len(self.video_queue)
|
||||||
for index, video in enumerate(self.video_queue.list[:10]):
|
while count < 10:
|
||||||
msg += f"*️⃣ {str(video)}\n"
|
for index, video in enumerate(self.video_queue.list[:10]):
|
||||||
count += len(self.video_queue)
|
msg += f":asterisk: {str(video)}\n"
|
||||||
|
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**")
|
||||||
|
|
Loading…
Reference in a new issue