Compare commits

..

2 Commits

4 changed files with 56 additions and 1 deletions

View File

@ -23,6 +23,10 @@ model_requirements:
- **Никогда не используй эмодзи** в тексте или выводах - **Никогда не используй эмодзи** в тексте или выводах
- Будь вежливым и профессиональным - Будь вежливым и профессиональным
### Документация проекта
- В @AGENTS.md держим только договоренности по разработке и взаимодействию
- Вся техническая документация проекта ведётся в @README.md — технические детали, API, команды бота, структура проекта
### Работа с кодом и файлами ### Работа с кодом и файлами
- **До внесения любых изменений в код или файлы предоставь детальное описание всех планируемых изменений** - **До внесения любых изменений в код или файлы предоставь детальное описание всех планируемых изменений**
- **Получи явное согласие пользователя перед внесением изменений** - **Получи явное согласие пользователя перед внесением изменений**

View File

@ -40,6 +40,7 @@ python bot.py
|---------|----------| |---------|----------|
| `!pg` | Прогноз погоды для Магнитогорска | | `!pg` | Прогноз погоды для Магнитогорска |
| `!nw` | Топ-5 свежих статей по AI с Habr | | `!nw` | Топ-5 свежих статей по AI с Habr |
| `!hp` | Список всех команд бота с описанием |
| `!morning` | Погода + топ-5 статей + топ-5 новостей + котик (утренний дайджест) | | `!morning` | Погода + топ-5 статей + топ-5 новостей + котик (утренний дайджест) |
| `!cat` | Случайный котик | | `!cat` | Случайный котик |
| `!msg <текст>` | Повторить текст в чате | | `!msg <текст>` | Повторить текст в чате |
@ -64,6 +65,7 @@ commands/ # Discord команды (cogs)
news.py # !nw — новости с Habr news.py # !nw — новости с Habr
cat.py # !cat — случайный котик cat.py # !cat — случайный котик
morning.py # !morning — утренний дайджест morning.py # !morning — утренний дайджест
help.py # !hp — список команд
console_commands/ # Консольные команды console_commands/ # Консольные команды
__init__.py # ALL_CONSOLE_COMMANDS — явные импорты __init__.py # ALL_CONSOLE_COMMANDS — явные импорты
stop.py # stop — остановка бота stop.py # stop — остановка бота

View File

@ -2,5 +2,6 @@ from .pg import Pg
from .news import News from .news import News
from .cat import Cat from .cat import Cat
from .morning import Morning from .morning import Morning
from .help import Help
ALL_COMMANDS = [Pg, News, Cat, Morning] ALL_COMMANDS = [Pg, News, Cat, Morning, Help]

48
commands/help.py Normal file
View File

@ -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)