From 07af9286541b41d216cdd855f3f811ef7a39f30e Mon Sep 17 00:00:00 2001 From: deadzilla Date: Tue, 7 Jul 2026 22:47:56 +0500 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5:=20=D0=BE=D0=B1=D1=80=D0=B5=D0=B7?= =?UTF-8?q?=D0=BA=D0=B0=20embed-=D0=BF=D0=BE=D0=BB=D0=B5=D0=B9=20=D0=B4?= =?UTF-8?q?=D0=BE=20=D0=BB=D0=B8=D0=BC=D0=B8=D1=82=D0=BE=D0=B2=20Discord?= =?UTF-8?q?=20(description=204096,=20field=201024)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- commands/news.py | 12 +++++++++--- utils/morning_runner.py | 11 +++++++++-- utils/news.py | 14 ++++++++++++++ 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/commands/news.py b/commands/news.py index f442c51..ff673fd 100644 --- a/commands/news.py +++ b/commands/news.py @@ -1,7 +1,13 @@ import logging import discord from discord.ext import commands -from utils.news import fetch_rss, format_articles, RSS_URL_ARTICLES, RSS_URL_POSTS +from utils.news import ( + fetch_rss, + format_articles, + RSS_URL_ARTICLES, + RSS_URL_POSTS, + truncate_embed_field, +) logger = logging.getLogger(__name__) @@ -36,7 +42,7 @@ class News(commands.Cog): embed.add_field( name="Статьи", - value="\n".join(articles_text), + value=truncate_embed_field("\n".join(articles_text)), inline=False, ) @@ -53,7 +59,7 @@ class News(commands.Cog): "https://habr.com/ru/hubs/artificial_intelligence/news/top/daily/") embed.add_field( name="Новости", - value="\n".join(posts_text), + value=truncate_embed_field("\n".join(posts_text)), inline=False, ) else: diff --git a/utils/morning_runner.py b/utils/morning_runner.py index b0ff353..ae3fe4c 100644 --- a/utils/morning_runner.py +++ b/utils/morning_runner.py @@ -15,7 +15,13 @@ from utils.pogoda import ( fetch_weather, format_weather_for_embed, ) -from utils.news import fetch_rss, format_articles, RSS_URL_ARTICLES, RSS_URL_POSTS +from utils.news import ( + fetch_rss, + format_articles, + RSS_URL_ARTICLES, + RSS_URL_POSTS, + truncate_embed_text, +) from utils.cat import fetch_cat logger = logging.getLogger(__name__) @@ -106,7 +112,8 @@ async def run_morning(bot: "commands.Bot", channel: discord.TextChannel): "Проверьте доступность API и повторите попытку позже." ] - embed.description = "\n".join(description_lines) + description = "\n".join(description_lines) + embed.description = truncate_embed_text(description) await channel.send(embed=embed) logger.info("✅ Утренний дайджест отправлен в #%s", channel.name) diff --git a/utils/news.py b/utils/news.py index 75665f5..e510a6f 100644 --- a/utils/news.py +++ b/utils/news.py @@ -93,6 +93,20 @@ def truncate_title(title, max_len=60): return title +def truncate_embed_text(text: str, max_len: int = 4096) -> str: + """Обрезать текст для embed.description (лимит Discord: 4096 символов).""" + if len(text) <= max_len: + return text + return text[:max_len - 3] + "..." + + +def truncate_embed_field(text: str, max_len: int = 1024) -> str: + """Обрезать текст для embed field value (лимит Discord: 1024 символа).""" + if len(text) <= max_len: + return text + return text[:max_len - 3] + "..." + + def format_articles(articles, title, link): """Сформировать список строк для вывода статей/постов.""" lines = [f"**{title}**\n<{link}>"]