From aec4cb5c188a9d76c32d83f305db8d3bae4a35f4 Mon Sep 17 00:00:00 2001 From: deadzilla Date: Tue, 2 Jun 2026 22:45:22 +0500 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D1=83=20hel?= =?UTF-8?q?p=20!hp=20=D0=B4=D0=BB=D1=8F=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4?= =?UTF-8?q?=D0=B0=20=D1=81=D0=BF=D0=B8=D1=81=D0=BA=D0=B0=20=D0=B2=D1=81?= =?UTF-8?q?=D0=B5=D1=85=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 ++ commands/__init__.py | 3 ++- commands/help.py | 48 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 commands/help.py diff --git a/README.md b/README.md index 2c39310..039b170 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,7 @@ python bot.py |---------|----------| | `!pg` | Прогноз погоды для Магнитогорска | | `!nw` | Топ-5 свежих статей по AI с Habr | +| `!hp` | Список всех команд бота с описанием | | `!morning` | Погода + топ-5 статей + топ-5 новостей + котик (утренний дайджест) | | `!cat` | Случайный котик | | `!msg <текст>` | Повторить текст в чате | @@ -64,6 +65,7 @@ commands/ # Discord команды (cogs) news.py # !nw — новости с Habr cat.py # !cat — случайный котик morning.py # !morning — утренний дайджест + help.py # !hp — список команд console_commands/ # Консольные команды __init__.py # ALL_CONSOLE_COMMANDS — явные импорты stop.py # stop — остановка бота diff --git a/commands/__init__.py b/commands/__init__.py index d7ee136..f3cbbb7 100644 --- a/commands/__init__.py +++ b/commands/__init__.py @@ -2,5 +2,6 @@ from .pg import Pg from .news import News from .cat import Cat from .morning import Morning +from .help import Help -ALL_COMMANDS = [Pg, News, Cat, Morning] +ALL_COMMANDS = [Pg, News, Cat, Morning, Help] diff --git a/commands/help.py b/commands/help.py new file mode 100644 index 0000000..eff7463 --- /dev/null +++ b/commands/help.py @@ -0,0 +1,48 @@ +import discord +from discord.ext import commands + + +class Help(commands.Cog): + """Команда !hp — список всех команд бота""" + + @commands.command(name="hp") + async def hp(self, ctx): + """Показать список доступных команд""" + await self._show_help(ctx) + + async def _show_help(self, ctx: commands.Context): + """Вывести список команд в формате Embed.""" + embed = discord.Embed( + title="Discord Bot Help", + description="Доступные команды бота для Магнитогорска", + colour=discord.Color.blue(), + timestamp=ctx.message.timestamp, + ) + + # Список команд с описанием + commands_list = [ + ("!pg", "Прогноз погоды в Магнитогорске"), + ("!nw", "Топ-5 статей и топ-5 новостей AI с Habr"), + ("!morning", "Утренний дайджест: погода + новости + котик"), + ("!cat", "Случайный котик"), + ("!msg <текст>", "Повторить текст в чате"), + ] + + # Формирование текстового блока команд + value_lines = ["**Доступные команды:**"] + for cmd_name, description in commands_list: + value_lines.append(f"• `{cmd_name}` — {description}") + + full_text = "\n".join(value_lines) + + # Проверка длины текста (макс 1024 символа для поля embed) + if len(full_text) > 1024: + full_text = full_text[:1021] + "..." + + embed.add_field( + name="Описание", + value=full_text, + inline=False, + ) + + await ctx.send(embed=embed)