diff --git a/discordbot.py b/discordbot.py index 8291a7e6..dc403463 100644 --- a/discordbot.py +++ b/discordbot.py @@ -308,6 +308,14 @@ async def on_message(message: discord.Message): await cmd_play(channel=message.channel, author=message.author, params=message.content.split(" ")) + elif message.content.startswith("!remove"): + await cmd_remove(channel=message.channel, + author=message.author, + params=message.content.split(" ")) + elif message.content.startswith("!queue"): + await cmd_queue(channel=message.channel, + author=message.author, + params=message.content.split(" ")) elif message.content.startswith("!cast"): try: spell = message.content.split(" ", 1)[1] @@ -332,6 +340,8 @@ async def update_users_pipe(users_connection): if msg == "/cv": discord_members = list(client.get_server(config["Discord"]["server_id"]).members) users_connection.send(discord_members) + if msg == "/uranium": + add_video_from_url("https://www.youtube.com/watch?v=iutuQbMAx04") def command(func): @@ -465,6 +475,51 @@ async def cmd_play(channel: discord.Channel, author: discord.Member, params: typ await client.send_message(channel, f"✅ Video aggiunto alla coda.") +@command +@requires_cv +async def cmd_skip(channel: discord.Channel, author: discord.Member, params: typing.List[str]): + global voice_player + voice_player.stop() + await client.send_message(channel, f"⏩ Video saltato.") + + +@command +@requires_cv +async def cmd_remove(channel: discord.Channel, author: discord.Member, params: typing.List[str]): + if len(voice_queue) == 0: + await client.send_message(channel, "⚠ Non c'è nessun video in coda.") + return + if len(params) < 2: + index = len(voice_queue) - 1 + else: + try: + index = int(params[1]) - 1 + except ValueError: + await client.send_message(channel, "⚠ Il numero inserito non è valido.\n" + "Sintassi: `!remove [numerovideo]`") + return + if abs(index) >= len(voice_queue): + await client.send_message(channel, "⚠ Il numero inserito non corrisponde a nessun video nella playlist.\n" + "Sintassi: `!remove [numerovideo]`") + return + video = voice_queue.pop(index) + await client.send_message(channel, f":regional_indicator_x: {str(video)} è stato rimosso dalla coda.") + + +@command +async def cmd_queue(channel: discord.Channel, author: discord.Member, params: typing.List[str]): + if len(voice_queue) == 0: + await client.send_message(channel, "**Video in coda:**\n" + "nessuno") + return + msg = "**Video in coda:**\n" + for index, video in enumerate(voice_queue[:10]): + msg += f"{queue_emojis[index]} {str(video)}\n" + if len(voice_queue) > 10: + msg += f"più altri {len(voice_queue) - 10} video!" + await client.send_message(channel, msg) + + async def queue_predownload_videos(): while True: for index, video in enumerate(voice_queue[:int(config["YouTube"]["predownload_videos"])].copy()): diff --git a/telegrambot.py b/telegrambot.py index 0c034e07..c70d24a1 100644 --- a/telegrambot.py +++ b/telegrambot.py @@ -351,6 +351,20 @@ def cmd_ban(bot: Bot, update: Update): session.close() +def cmd_eat(bot: Bot, update: Update): + try: + food: str = update.message.text.split(" ", 1)[1].capitalize() + except IndexError: + bot.send_message(update.message.chat.id, "⚠️ Non hai specificato cosa mangiare!\n" + "Sintassi corretta: `/food `") + return + if food == "Uranio" and discord_connection is not None: + bot.send_message(update.message.chat.id, f"☢️ Ti senti improvvisamente radioattivo.") + discord_connection.send("/uranium") + return + bot.send_message(update.message.chat.id, f"🍗 Hai mangiato {food}!") + + def process(arg_discord_connection): print("Telegrambot starting...") if arg_discord_connection is not None: @@ -369,6 +383,7 @@ def process(arg_discord_connection): u.dispatcher.add_handler(CommandHandler("diario", cmd_diario)) u.dispatcher.add_handler(CommandHandler("vote", cmd_vote)) u.dispatcher.add_handler(CommandHandler("ban", cmd_ban)) + u.dispatcher.add_handler(CommandHandler("eat", cmd_eat)) u.dispatcher.add_handler(CallbackQueryHandler(on_callback_query)) u.bot.send_message(config["Telegram"]["main_group"], f"ℹ Royal Bot avviato e pronto a ricevere comandi!\n"