discordBot/AGENTS.md
deadzilla e1a0f6d2b6 refactor: вынести логику погоды в utils/pogoda.py (проблема 3)
- Создать utils/pogoda.py с общими функциями:
  - fetch_weather, fetch_open_meteo, wmo_to_russian, translate_weather, pressure_to_mmhg
- Обновить commands/pogoda.py: убрать дубликаты, импортировать из utils
- Обновить console_commands/pogoda.py: убрать дубликаты, импортировать из utils
- Сделать console_commands/pogoda.py async (требует fetch_weather)
- Обновить AGENTS.md и ISSUES.md (проблема 7 решена)
2026-05-26 12:32:15 +05:00

4.0 KiB
Raw Blame History

AGENTS.md

Проект

Discord-бот на Python (discord.py) для Магнитогорска.

  • Команды Discord: !msg (повтор текста), !pogoda (прогноз погоды)
  • Консольные команды: stop (остановка бота)

Запуск

pip install -r requirements.txt
python bot.py

Введите stop в терминал для остановки бота.

Токен

Токен бота хранится в .env (переменная DISCORD_TOKEN). Получи токен на Discord Developer Portal. Шаблон в .env.example.

Конвенции

  • Используй TODO-списки для каждого запроса с несколькими шагами.
  • Пиши комментарии на русском.
  • Обработка ошибок: try/except для всех внешних вызовов (API, БД, файловая система).
  • Никогда не используй эмодзи в тексте или выводах.
  • До внесения любых изменений в код или файлы предоставь детальное описание всех планируемых изменений и получи явное согласие пользователя. Без согласования изменения не вносить.

Архитектура

bot.py                  # Точка входа, инициализация бота, console_input()
commands/               # Discord команды (cogs)
  __init__.py           # ALL_COMMANDS — явные импорты
  pogoda.py             # !pogoda — погода с retry + fallback (wttr.in → Open-Meteo)
console_commands/       # Консольные команды
  __init__.py           # ALL_CONSOLE_COMMANDS — явные импорты
  stop.py               # stop — остановка бота

Добавление Discord команды

  1. Создать файл commands/имя.py с классом, наследующим commands.Cog
  2. Добавить импорт в commands/__init__.py
  3. Добавить класс в ALL_COMMANDS

Добавление консольной команды

  1. Создать файл console_commands/имя.py с функцией func(stop_event, bot)
  2. Добавить импорт в console_commands/__init__.py
  3. Добавить функцию в ALL_CONSOLE_COMMANDS

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

Зависимости

discord.py>=2.3.2
python-dotenv>=1.0.0
requests>=2.31.0

Структура данных погоды

Команда !pogoda возвращает:

[TEMP]   Температура: X°C (ощущается как Y°C)
[DESC]   Описание: Z
[HUMID]  Влажность: X%
[WIND]   Ветер: X м/с
[PRESS]  Давление: X мм рт. ст.

Безопасность

  • .env в .gitignore — токен никогда не должен попадать в репозиторий.
  • Используй .env.example как шаблон.