Add new file

This commit is contained in:
Markov Andrey
2026-06-30 09:05:12 +00:00
parent 0b9ef44469
commit 1c1844c535

53
core/commands/help.py Normal file
View File

@@ -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 команда`"