- utils/news.py: добавлен logger, логирование ошибок RSS - utils/cat.py: добавлен logger, логирование ошибок TheCatAPI - utils/pogoda.py: улучшены логи fallback/warning при ошибках API - utils/rate_limiter.py: debug-логи при ожидании токенов - commands/pg.py, news.py, cat.py, morning.py, status.py, stats.py: logger + логи ошибок и успешного выполнения команд - console_commands/pogoda.py, news.py, cat.py, morning.py, status.py, stats.py: logger + логи выполнения - bot.py: логи запуска/остановки, проверки конфигурации, маршрутизации консольных команд, f-строки -> %s формат - ISSUES.md: снят флаг задачи по логированию - все 243 теста пройдены
72 lines
2.9 KiB
Python
72 lines
2.9 KiB
Python
import logging
|
||
|
||
from utils.cat import fetch_cat
|
||
from utils.morning_runner import gather_morning
|
||
from utils.news import RSS_URL_ARTICLES, RSS_URL_POSTS, format_articles
|
||
from utils.pogoda import format_weather_data_for_console
|
||
|
||
logger = logging.getLogger(__name__)
|
||
|
||
|
||
async def morning(stop_event, bot):
|
||
"""Вывести погоду, лучшие статьи за сутки и котик"""
|
||
logger.info("Консольная команда: morning")
|
||
data = await gather_morning()
|
||
|
||
print("Доброе утро!\n")
|
||
|
||
# --- Котик ---
|
||
if data.cat_url:
|
||
print(f"Котик: {data.cat_url}\n")
|
||
else:
|
||
logger.warning("Консольная команда morning: не удалось получить котика")
|
||
print("Котика получить не удалось.\n")
|
||
|
||
# --- Погода ---
|
||
formatted = format_weather_data_for_console(data.weather)
|
||
if formatted:
|
||
print("**Погода в Магнитогорске:**")
|
||
for line in formatted:
|
||
print(line)
|
||
else:
|
||
logger.warning("Консольная команда morning: не удалось получить погоду")
|
||
print("Не удалось получить данные о погоде.")
|
||
|
||
print()
|
||
|
||
# --- Новости: статьи ---
|
||
if data.articles is not None:
|
||
if data.articles:
|
||
lines = format_articles(
|
||
data.articles,
|
||
"Лучшие статьи за сутки / Искусственный интеллект / Хабr",
|
||
"https://habr.com/ru/hubs/artificial_intelligence/articles/top/daily/",
|
||
)
|
||
print("\n".join(lines))
|
||
else:
|
||
logger.info("Консольная команда morning: статей нет в RSS")
|
||
print("Новостей пока нет.")
|
||
else:
|
||
logger.warning("Консольная команда morning: не удалось получить статьи")
|
||
print("Не удалось получить новости.")
|
||
|
||
print()
|
||
|
||
# --- Новости: посты ---
|
||
if data.posts is not None:
|
||
if data.posts:
|
||
lines = format_articles(
|
||
data.posts,
|
||
"Лучшие новости за сутки / Искусственный интеллект / Хабr",
|
||
"https://habr.com/ru/hubs/artificial_intelligence/news/top/daily/",
|
||
)
|
||
print("\n".join(lines))
|
||
else:
|
||
logger.info("Консольная команда morning: постов нет в RSS")
|
||
print("Новостей пока нет.")
|
||
else:
|
||
logger.warning("Консольная команда morning: не удалось получить посты")
|
||
print("Не удалось получить новости.")
|
||
|
||
logger.info("Консольная команда morning: завершен")
|