Skip to content

Commit 1160d1d

Browse files
authored
Merge pull request #4
* fix(feed-service): handle null ImageUrl in author icon url * fix(feed-service): handle large embed chunks and cancellation tokens * fix(feed-service): add missing closing brace in FeedService
1 parent 9f8a103 commit 1160d1d

1 file changed

Lines changed: 20 additions & 3 deletions

File tree

Courier/Services/FeedService.cs

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ private async Task SendMessageAsync(
151151
embedBuilder
152152
.WithAuthor(authorBuilder => authorBuilder
153153
.WithName(feed.Title.Text.ToMarkdown().Truncate(EmbedAuthorBuilder.MaxAuthorNameLength))
154-
.WithIconUrl(feed.ImageUrl.ToString()))
154+
.WithIconUrl(feed.ImageUrl?.ToString()))
155155
.WithFooter(feed.Description.Text.ToMarkdown().Truncate(EmbedFooterBuilder.MaxFooterTextLength))
156156
.WithUrl(item.Links.Count != 0 ? item.Links.First().Uri.ToString() : item.Id)
157157
.WithTitle(item.Title.Text.ToMarkdown().Truncate(EmbedBuilder.MaxTitleLength))
@@ -162,12 +162,29 @@ private async Task SendMessageAsync(
162162
embeds.Add(embedBuilder.Build());
163163
}
164164

165-
foreach (var embedArray in embeds.Chunk(DiscordConfig.MaxEmbedsPerMessage))
166-
await textChannel.SendMessageAsync(embeds: embedArray, options: new RequestOptions
165+
foreach (var chunk in embeds.Chunk(DiscordConfig.MaxEmbedsPerMessage))
166+
{
167+
if (cancellationToken.IsCancellationRequested) break;
168+
169+
if (chunk.Sum(embed => embed.Length) > EmbedBuilder.MaxEmbedLength)
170+
{
171+
foreach (var embed in chunk)
172+
await textChannel.SendMessageAsync(embed: embed, options: new RequestOptions
173+
{
174+
Timeout = DiscordConfig.DefaultRequestTimeout,
175+
CancelToken = cancellationToken,
176+
RetryMode = RetryMode.AlwaysRetry
177+
});
178+
179+
continue;
180+
}
181+
182+
await textChannel.SendMessageAsync(embeds: chunk, options: new RequestOptions
167183
{
168184
Timeout = DiscordConfig.DefaultRequestTimeout,
169185
CancelToken = cancellationToken,
170186
RetryMode = RetryMode.AlwaysRetry
171187
});
188+
}
172189
}
173190
}

0 commit comments

Comments
 (0)