From 17351d4264ac6c3abe0fe9dafc2cae3ba13c8d46 Mon Sep 17 00:00:00 2001 From: moeux <68925026+moeux@users.noreply.github.com> Date: Sat, 7 Mar 2026 11:40:08 +0100 Subject: [PATCH 1/3] fix(feed-service): handle null ImageUrl in author icon url --- Courier/Services/FeedService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Courier/Services/FeedService.cs b/Courier/Services/FeedService.cs index 8de0073..a4c9368 100644 --- a/Courier/Services/FeedService.cs +++ b/Courier/Services/FeedService.cs @@ -151,7 +151,7 @@ private async Task SendMessageAsync( embedBuilder .WithAuthor(authorBuilder => authorBuilder .WithName(feed.Title.Text.ToMarkdown().Truncate(EmbedAuthorBuilder.MaxAuthorNameLength)) - .WithIconUrl(feed.ImageUrl.ToString())) + .WithIconUrl(feed.ImageUrl?.ToString())) .WithFooter(feed.Description.Text.ToMarkdown().Truncate(EmbedFooterBuilder.MaxFooterTextLength)) .WithUrl(item.Links.Count != 0 ? item.Links.First().Uri.ToString() : item.Id) .WithTitle(item.Title.Text.ToMarkdown().Truncate(EmbedBuilder.MaxTitleLength)) From 41f1eff550bb3fb8523ef069fae8652600c5ebd3 Mon Sep 17 00:00:00 2001 From: moeux <68925026+moeux@users.noreply.github.com> Date: Sat, 7 Mar 2026 11:41:00 +0100 Subject: [PATCH 2/3] fix(feed-service): handle large embed chunks and cancellation tokens --- Courier/Services/FeedService.cs | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/Courier/Services/FeedService.cs b/Courier/Services/FeedService.cs index a4c9368..c44cc24 100644 --- a/Courier/Services/FeedService.cs +++ b/Courier/Services/FeedService.cs @@ -162,8 +162,24 @@ private async Task SendMessageAsync( embeds.Add(embedBuilder.Build()); } - foreach (var embedArray in embeds.Chunk(DiscordConfig.MaxEmbedsPerMessage)) - await textChannel.SendMessageAsync(embeds: embedArray, options: new RequestOptions + foreach (var chunk in embeds.Chunk(DiscordConfig.MaxEmbedsPerMessage)) + { + if (cancellationToken.IsCancellationRequested) break; + + if (chunk.Sum(embed => embed.Length) > EmbedBuilder.MaxEmbedLength) + { + foreach (var embed in chunk) + await textChannel.SendMessageAsync(embed: embed, options: new RequestOptions + { + Timeout = DiscordConfig.DefaultRequestTimeout, + CancelToken = cancellationToken, + RetryMode = RetryMode.AlwaysRetry + }); + + continue; + } + + await textChannel.SendMessageAsync(embeds: chunk, options: new RequestOptions { Timeout = DiscordConfig.DefaultRequestTimeout, CancelToken = cancellationToken, From 57acf7da05fc0bb872f531e820b739b386629c0e Mon Sep 17 00:00:00 2001 From: moeux <68925026+moeux@users.noreply.github.com> Date: Sat, 7 Mar 2026 11:41:53 +0100 Subject: [PATCH 3/3] fix(feed-service): add missing closing brace in FeedService --- Courier/Services/FeedService.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Courier/Services/FeedService.cs b/Courier/Services/FeedService.cs index c44cc24..42adca3 100644 --- a/Courier/Services/FeedService.cs +++ b/Courier/Services/FeedService.cs @@ -185,5 +185,6 @@ private async Task SendMessageAsync( CancelToken = cancellationToken, RetryMode = RetryMode.AlwaysRetry }); + } } } \ No newline at end of file