From 4db31e8b56bb591e6b2aa566698aec27a1ce6aab Mon Sep 17 00:00:00 2001 From: deadzilla Date: Mon, 25 May 2026 21:57:59 +0500 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=B2=D1=8B=D0=B2=D0=B5=D1=81=D1=82?= =?UTF-8?q?=D0=B8=20=D1=81=D0=BF=D0=B8=D1=81=D0=BE=D0=BA=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=BC=D0=B0=D0=BD=D0=B4=20=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B8=20=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Добавить bot_ready = threading.Event() для синхронизации - Переместить bot_ready.set() после цикла загрузки команд - Добавить bot_ready.wait() в console_input() - Меню появляется только после 'Бот вошёл' и 'Загружен: ...' --- bot.py | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/bot.py b/bot.py index f907ef8..66066d0 100644 --- a/bot.py +++ b/bot.py @@ -18,6 +18,7 @@ intents.message_content = True bot = commands.Bot(command_prefix="!", intents=intents) stop_event = threading.Event() +bot_ready = threading.Event() @bot.event @@ -28,6 +29,7 @@ async def on_ready(): await bot.add_cog(cog) for cog in bot.cogs: print(f" Загружен: {cog}") + bot_ready.set() @bot.event @@ -44,22 +46,29 @@ async def msg(ctx, *, text: str): def console_input(): + bot_ready.wait() + print("Доступные команды:") + available = {k: v for k, v in ALL_CONSOLE_COMMANDS.items() if k != "stop"} + for idx, (name, func) in enumerate(available.items(), 1): + print(f" {idx}. {name}") + print(" 0. stop") + while not stop_event.is_set(): try: - cmd = input().strip().lower() - if cmd.startswith("!"): - cmd_name = cmd[1:] - if cmd_name == "stop": - print("\nОстановка бота...") - if "stop" in ALL_CONSOLE_COMMANDS: - ALL_CONSOLE_COMMANDS["stop"](stop_event, bot) - break - elif cmd_name in ALL_CONSOLE_COMMANDS: + choice = input("\nВыберите команду (номер): ").strip() + if choice == "0": + print("\nОстановка бота...") + stop_event.set() + break + try: + idx = int(choice) + if 0 < idx <= len(available): + cmd_name = list(available.keys())[idx - 1] ALL_CONSOLE_COMMANDS[cmd_name](stop_event, bot) else: - print(f"Неизвестная команда: {cmd}") - elif cmd: - print(f"Неизвестная команда: {cmd}") + print(f"Неизвестная команда: {choice}") + except (ValueError, IndexError): + print(f"Неизвестная команда: {choice}") except (EOFError, KeyboardInterrupt): stop_event.set() try: