- utils/pogoda.py: добавлена API_URL_WEATHER, format_weather_for_embed(), проверка None в format_weather_data_for_console() - utils/morning_runner.py: вынесен MorningData (dataclass) и gather_morning(); run_morning() использует их вместо ручного asyncio.gather - utils/__init__.py: экспортирован публичный API (__all__) - commands/pg.py: убран ручной парсинг погоды, используется format_weather_data_for_console() - console_commands/morning.py: дубликат asyncio.gather заменён на gather_morning() - console_commands/pogoda.py: хардкод URL заменён на API_URL_WEATHER - console_commands/cat.py: заглушка заменена на рабочий вызов fetch_cat() - tests/test_commands_pg.py: обновлён тест fetch_returns_none (бот теперь отправляет сообщение об ошибке вместо молчаливого возврата)
24 lines
807 B
Python
24 lines
807 B
Python
from discord.ext import commands
|
||
from utils.pogoda import API_URL_WEATHER, fetch_weather, format_weather_data_for_console
|
||
|
||
|
||
class Pg(commands.Cog):
|
||
"""Команда !pg — прогноз погоды для Магнитогорска"""
|
||
|
||
def __init__(self):
|
||
self.api_url = API_URL_WEATHER
|
||
|
||
@commands.command(name="pg")
|
||
async def pg(self, ctx):
|
||
data = await fetch_weather(self.api_url)
|
||
if data is None:
|
||
await ctx.send("Не удалось получить данные о погоде.")
|
||
return
|
||
|
||
formatted = format_weather_data_for_console(data)
|
||
if not formatted:
|
||
await ctx.send("Не удалось получить данные о погоде.")
|
||
return
|
||
|
||
await ctx.send("\n".join(formatted))
|