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: