Изменения согласно требованиям AGENTS.md (отсутствие восклицательных знаков): • commands/news.py — переименование команды с 'news' на 'nw' * name=nw вместо name=news * async def news() → async def nw() * Обновление docstring классов • AGENTS.md — обновление документationen * → в таблице команд * RSS-ленты Habr (!news, !morning) → (!nw, !morning) Примечание: - Изменение прозрачно для пользователей (команда работает так же) - Тесты не требуют переименования (проверяют код логики, а не имена команд) - Все тесты проходят успешно
61 lines
2.2 KiB
Python
61 lines
2.2 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):
|
||
"""Команда !nw — свежие статьи по AI с Habr"""
|
||
|
||
@commands.command(name="nw")
|
||
async def nw(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
|
||
|
||
articles_text = format_articles(articles,
|
||
"Лучшие статьи за сутки / Искусственный интеллект / Хабr",
|
||
"https://habr.com/ru/hubs/artificial_intelligence/articles/top/daily/")
|
||
|
||
posts = await fetch_rss(RSS_URL_POSTS)
|
||
|
||
embed = discord.Embed(
|
||
title="Новости AI с Habr",
|
||
colour=discord.Color.orange(),
|
||
)
|
||
|
||
embed.add_field(
|
||
name="Статьи",
|
||
value="\n".join(articles_text),
|
||
inline=False,
|
||
)
|
||
|
||
if posts is None:
|
||
embed.add_field(
|
||
name="Новости",
|
||
value="Не удалось получить новости.",
|
||
inline=False,
|
||
)
|
||
elif posts:
|
||
posts_text = format_articles(posts,
|
||
"Лучшие новости за сутки / Искусственный интеллект / Хабr",
|
||
"https://habr.com/ru/hubs/artificial_intelligence/news/top/daily/")
|
||
embed.add_field(
|
||
name="Новости",
|
||
value="\n".join(posts_text),
|
||
inline=False,
|
||
)
|
||
else:
|
||
embed.add_field(
|
||
name="Новости",
|
||
value="Новостей пока нет.",
|
||
inline=False,
|
||
)
|
||
|
||
await ctx.send(embed=embed)
|