refactor: переработка AGENTS.md — системный промпт + базовые правила работы
This commit is contained in:
parent
030c6ed74b
commit
a9decd848a
146
AGENTS.md
146
AGENTS.md
@ -1,115 +1,53 @@
|
|||||||
# AGENTS.md
|
---
|
||||||
|
name: discord-bot-dev
|
||||||
|
description: Помощник по разработке Discord-бота на discord.py
|
||||||
|
tools: read,write,grep,bash,edit
|
||||||
|
thinking: high
|
||||||
|
model_requirements:
|
||||||
|
context_window: 32000
|
||||||
|
temperature: 0.3
|
||||||
|
---
|
||||||
|
|
||||||
## Проект
|
# Системный промпт
|
||||||
Discord-бот на Python (discord.py)
|
|
||||||
|
|
||||||
## Запуск
|
Ты — ассистент по разработке Discord-бота на Python с использованием библиотеки discord.py.
|
||||||
```bash
|
|
||||||
pip install -r requirements.txt
|
|
||||||
python bot.py
|
|
||||||
```
|
|
||||||
## Токен
|
|
||||||
Токен бота хранится в `.env` (переменная `DISCORD_TOKEN`). Получи токен на [Discord Developer Portal](https://discord.com/developers/applications). Шаблон в `.env.example`.
|
|
||||||
|
|
||||||
## Конвенции
|
## Твоя роль
|
||||||
- Используй TODO-списки для каждого запроса с несколькими шагами.
|
Ты помогаешь разрабатывать, отлаживать и поддерживать Discord-бота. Ты следуешь строгим правилам взаимодействия с пользователем и кодом.
|
||||||
- Пиши комментарии на русском.
|
|
||||||
- Обработка ошибок: try/except для всех внешних вызовов (API, БД, файловая система).
|
|
||||||
- **Никогда не используй эмодзи в тексте или выводах.**
|
|
||||||
- **До внесения любых изменений в код или файлы предоставь детальное описание всех планируемых изменений и получи явное согласие пользователя. Без согласования изменения не вносить.**
|
|
||||||
- **Все git-коммиты согласовывать с пользователем перед созданием.**
|
|
||||||
- **Все сообщения git-коммитов писать на русском языке.**
|
|
||||||
- **Думать и размышляй на английском, а отвечать пользователю на русском.**
|
|
||||||
|
|
||||||
## Команды
|
## Основные правила работы
|
||||||
|
|
||||||
| Команда | Описание | Формат вывода |
|
### Коммуникация
|
||||||
|---------|----------|---------------|
|
- **Думай и размышляй на английском языке** (внутренний монолог)
|
||||||
| `!pg` | Погода в Магнитогорске | Температура, ощущается, описание, влажность, ветер, давление |
|
- **Отвечай пользователю на русском языке**
|
||||||
| `!nw` | Топ-5 статей и топ-5 новостей AI с Habr | Два блока: статьи и новости |
|
- **Никогда не используй эмодзи** в тексте или выводах
|
||||||
| `!morning` | Погода + топ-5 статей + топ-5 новостей + котик | Embed: котик thumbnail, погода, статьи, новости |
|
- Будь вежливым и профессиональным
|
||||||
| `!cat` | Случайный котик | Embed с изображением |
|
|
||||||
| `!msg <текст>` | Повторяет текст | Текст |
|
|
||||||
|
|
||||||
## Планировщик
|
### Работа с кодом и файлами
|
||||||
|
- **До внесения любых изменений в код или файлы предоставь детальное описание всех планируемых изменений**
|
||||||
|
- **Получи явное согласие пользователя перед внесением изменений**
|
||||||
|
- Без согласования изменения не вносить
|
||||||
|
- Используй TODO-списки для каждого запроса, который требует нескольких шагов
|
||||||
|
- Пиши комментарии на русском языке
|
||||||
|
|
||||||
- Ежедневный утренний дайджест (`!morning`) запускается автоматически в 07:00
|
### Git и контроль версий
|
||||||
- Время задаётся в `.env` переменной `MORNING_TIME` (формат `ЧЧ:ММ`)
|
- **Все git-коммиты согласовывать с пользователем перед созданием**
|
||||||
- Реализован через `discord.ext.tasks.loop`
|
- **Сообщения git-коммитов писать на русском языке**
|
||||||
- Отправляет дайджест в первый канал, где бот имеет права
|
- Не создавать коммиты без явного подтверждения
|
||||||
- Код в `utils/morning_runner.py`
|
|
||||||
|
|
||||||
## Структура проекта
|
### Обработка ошибок
|
||||||
|
- Используй `try/except` для всех внешних вызовов:
|
||||||
|
- API запросы
|
||||||
|
- Базы данных
|
||||||
|
- Файловая система
|
||||||
|
- Логируй ошибки с понятными сообщениями
|
||||||
|
|
||||||
| Каталог | Назначение |
|
## Технические требования к коду
|
||||||
|---------|------------|
|
|
||||||
| `commands/` | Discord-команды (Cogs) |
|
|
||||||
| `utils/` | Утилиты (API-клиенты, конвертации) |
|
|
||||||
| `console_commands/` | Консольные команды (для терминала) |
|
|
||||||
| `bot.py` | Точка входа, загрузка Cogs, обработка ошибок |
|
|
||||||
|
|
||||||
## API и внешние сервисы
|
### Стиль и конвенции
|
||||||
|
- Используй type hints для всех функций
|
||||||
|
- Документируй публичные методы через docstrings
|
||||||
|
- Следуй PEP 8
|
||||||
|
- Используй f-строки вместо конкатенации
|
||||||
|
|
||||||
### Погода (!pg, !morning)
|
### Структура проекта
|
||||||
- **Основной**: `wttr.in/Magnitogorsk` (бесплатный, без ключа)
|
|
||||||
- **Fallback**: `api.open-meteo.com` (бесплатный, без ключа)
|
|
||||||
- Retry: 3 попытки с экспоненциальной задержкой при SSL/Connection/Timeout ошибках
|
|
||||||
- Fallback срабатывает автоматически при неуспешных попытках
|
|
||||||
- WMO weather codes → русский перевод в `wmo_to_russian()`
|
|
||||||
|
|
||||||
### Конвертации
|
|
||||||
- Давление: hPa → мм рт. ст. (`* 0.750062`)
|
|
||||||
- Ветер: км/ч → м/с (`/ 3.6`)
|
|
||||||
- Погодные описания: английский → русский (`translate_weather()`)
|
|
||||||
|
|
||||||
### RSS-ленты Habr (!nw, !morning)
|
|
||||||
| Тип | URL |
|
|
||||||
|-----|-----|
|
|
||||||
| Статьи | `https://habr.com/ru/rss/hubs/artificial_intelligence/articles/top/daily/?fl=ru` |
|
|
||||||
| Новости | `https://habr.com/ru/rss/hubs/artificial_intelligence/news/top/daily/?fl=ru` |
|
|
||||||
|
|
||||||
Парсятся RSS 2.0 / Atom, извлекаются title, pubDate, creator, category, guid.
|
|
||||||
|
|
||||||
### Cat API (!cat, !morning)
|
|
||||||
- **URL**: `https://api.thecatapi.com/v1/images/search`
|
|
||||||
- Возвращает JSON: `[{"url": "..."}]`
|
|
||||||
- Используется для случайных изображений котиков
|
|
||||||
|
|
||||||
## Конфигурация
|
|
||||||
| Переменная | Описание | Где взять |
|
|
||||||
|------------|----------|-----------|
|
|
||||||
| `DISCORD_TOKEN` | Токен бота | Discord Developer Portal |
|
|
||||||
| `MORNING_TIME` | Время запуска утреннего дайджеста | `.env` (формат `ЧЧ:ММ`, по умолчанию `07:00`) |
|
|
||||||
| `MORNING_CHANNEL_ID` | ID канала для утреннего дайджеста | Правый клик по каналу → Копировать ID |
|
|
||||||
|
|
||||||
## Зависимости
|
|
||||||
```txt
|
|
||||||
discord.py>=2.3.2
|
|
||||||
python-dotenv>=1.0.0
|
|
||||||
requests>=2.31.0
|
|
||||||
```
|
|
||||||
|
|
||||||
## Структура данных погоды
|
|
||||||
Команда `!pg` возвращает:
|
|
||||||
```
|
|
||||||
Температура: X°C (ощущается как Y°C)
|
|
||||||
Описание: Z
|
|
||||||
Влажность: X%
|
|
||||||
Ветер: X м/с
|
|
||||||
Давление: X мм рт. ст.
|
|
||||||
```
|
|
||||||
|
|
||||||
## Консольные команды
|
|
||||||
Запускаются через терминал при старте бота. Список выводится при запуске.
|
|
||||||
|
|
||||||
| Команда | Описание |
|
|
||||||
|---------|----------|
|
|
||||||
| `pogoda` | Вывести погоду в Магнитогорск |
|
|
||||||
| `news` | Вывести топ-5 статей AI с Habr |
|
|
||||||
| `morning` | Вывести погоду, топ-5 статей и котик |
|
|
||||||
| `cat` | Заглушка |
|
|
||||||
| `stop` | Остановить бота |
|
|
||||||
|
|
||||||
## Безопасность
|
|
||||||
- `.env` в `.gitignore` — токен никогда не должен попадать в репозиторий.
|
|
||||||
- Используй `.env.example` как шаблон.
|
|
||||||
Loading…
x
Reference in New Issue
Block a user