- Create utils/news.py with shared RSS parsing and formatting logic - Refactor commands/news.py and console_commands/news.py to use utils/news.py - Fix bot.py to handle async console commands (news, pogoda) - Fix utils/pogoda.py to fall back to Open-Meteo on requests.RequestException - Mark issue #3 as resolved in ISSUES.md
32 lines
1.4 KiB
Python
32 lines
1.4 KiB
Python
import discord
|
||
from discord.ext import commands
|
||
from utils.news import fetch_rss, format_articles, RSS_URL_ARTICLES, RSS_URL_POSTS
|
||
|
||
|
||
class News(commands.Cog):
|
||
"""Команда !news — свежие статьи по AI с Habr"""
|
||
|
||
@commands.command(name="news")
|
||
async def news(self, ctx):
|
||
"""Топ-5 свежих статей по AI с Habr"""
|
||
articles = await fetch_rss(RSS_URL_ARTICLES)
|
||
if articles is None:
|
||
await ctx.send("Не удалось получить новости. Попробуйте позже.")
|
||
return
|
||
|
||
if not articles:
|
||
await ctx.send("Новостей пока нет.")
|
||
return
|
||
|
||
lines = format_articles(articles, "Лучшие статьи за сутки / Искусственный интеллект / Хабr",
|
||
"https://habr.com/ru/hubs/artificial_intelligence/articles/top/daily/")
|
||
|
||
posts = await fetch_rss(RSS_URL_POSTS)
|
||
if posts:
|
||
lines.append("")
|
||
lines.extend(format_articles(posts, "Лучшие новости за сутки / Искусственный интеллект / Хабr",
|
||
"https://habr.com/ru/hubs/artificial_intelligence/news/top/daily/"))
|
||
|
||
message = "\n".join(lines).rstrip()
|
||
await ctx.send(message, allowed_mentions=discord.AllowedMentions.none())
|