# -*- coding: utf-8 -*- """ Команда !help – показывает справку по всем командам или конкретной команде. Алиасы: !справка, /help, /справка. """ import logging from core.commands.base import Command logger = logging.getLogger(__name__) class HelpCommand(Command): name = "!help" aliases = ["!справка", "/help", "/справка"] async def execute(self, msg, args: str, user_jid: str, room_jid: str = None): """ Если указано имя команды – показывает справку по ней. Иначе – список всех доступных команд. """ _, flags, pos = self.parse_args(args) if pos: cmd_name = pos[0].lower() cmd_obj = self.bot.commands.get(cmd_name) if cmd_obj: help_text = cmd_obj.get_help() reply = msg.reply(help_text) if reply: reply.send() else: reply = msg.reply(f"❓ Команда '{cmd_name}' не найдена. Напишите `!help` для списка команд.") if reply: reply.send() else: # Общая справка lines = ["**Доступные команды:**"] for name, cmd in sorted(self.bot.commands.items()): if name == cmd.name: # только основные имена (без алиасов) lines.append(f" • {cmd.name} – {cmd.get_help().splitlines()[0]}") reply = msg.reply("\n".join(lines)) if reply: reply.send() def get_help(self) -> str: return "Показывает справку. Использование: `!help` или `!help команда`"