feat: вывести список команд после загрузки бота
- Добавить bot_ready = threading.Event() для синхронизации - Переместить bot_ready.set() после цикла загрузки команд - Добавить bot_ready.wait() в console_input() - Меню появляется только после 'Бот вошёл' и 'Загружен: ...'
This commit is contained in:
parent
6fe8334311
commit
4db31e8b56
33
bot.py
33
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:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user