From 1c1844c535e82d675a26cdf0e62c09d2f628daec Mon Sep 17 00:00:00 2001 From: Markov Andrey Date: Tue, 30 Jun 2026 09:05:12 +0000 Subject: [PATCH] Add new file --- core/commands/help.py | 53 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 core/commands/help.py diff --git a/core/commands/help.py b/core/commands/help.py new file mode 100644 index 0000000..63602bf --- /dev/null +++ b/core/commands/help.py @@ -0,0 +1,53 @@ +# -*- 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: + logger.error("Не удалось отправить справку по команде") + else: + reply = msg.reply(f"❓ Команда '{cmd_name}' не найдена. Напишите `!help` для списка команд.") + if reply: + reply.send() # исправлено + else: + logger.error("Не удалось отправить сообщение о неизвестной команде") + 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() # исправлено + else: + logger.error("Не удалось отправить общий список команд") + + def get_help(self) -> str: + return "Показывает справку. Использование: `!help` или `!help команда`" \ No newline at end of file