62 lines
2.8 KiB
Markdown
62 lines
2.8 KiB
Markdown
# AGENTS.md
|
||
|
||
## Проект
|
||
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-списки для каждого запроса с несколькими шагами.
|
||
- Пиши комментарии на русском.
|
||
- Обработка ошибок: try/except для всех внешних вызовов (API, БД, файловая система).
|
||
- **Никогда не используй эмодзи в тексте или выводах.**
|
||
- **До внесения любых изменений в код или файлы предоставь детальное описание всех планируемых изменений и получи явное согласие пользователя. Без согласования изменения не вносить.**
|
||
- **Все git-коммиты согласовывать с пользователем перед созданием.**
|
||
- **Все сообщения git-коммитов писать на русском языке.**
|
||
|
||
## API и внешние сервисы
|
||
|
||
### Погода (!pogoda)
|
||
- **Основной**: `wttr.in` (бесплатный, без ключа)
|
||
- **Fallback**: `api.open-meteo.com` (бесплатный, без ключа)
|
||
- Retry: 3 попытки с экспоненциальной задержкой при SSL/Connection/Timeout ошибках
|
||
- Fallback срабатывает автоматически при неуспешных попытках
|
||
- WMO weather codes → русский перевод в `_wmo_to_russian()`
|
||
|
||
### Конвертации
|
||
- Давление: hPa → мм рт. ст. (`* 0.750062`)
|
||
- Ветер: км/ч → м/с (`/ 3.6`)
|
||
- Погодные описания: английский → русский (`_translate_weather()`)
|
||
|
||
## Конфигурация
|
||
| Переменная | Описание | Где взять |
|
||
|------------|----------|-----------|
|
||
| `DISCORD_TOKEN` | Токен бота | Discord Developer Portal |
|
||
|
||
## Зависимости
|
||
```txt
|
||
discord.py>=2.3.2
|
||
python-dotenv>=1.0.0
|
||
requests>=2.31.0
|
||
```
|
||
|
||
## Структура данных погоды
|
||
Команда `!pogoda` возвращает:
|
||
```
|
||
Температура: X°C (ощущается как Y°C)
|
||
Описание: Z
|
||
Влажность: X%
|
||
Ветер: X м/с
|
||
Давление: X мм рт. ст.
|
||
```
|
||
|
||
## Безопасность
|
||
- `.env` в `.gitignore` — токен никогда не должен попадать в репозиторий.
|
||
- Используй `.env.example` как шаблон.
|