@@ -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