From 56f4f8ac6f6dcf340fb453a10f315dac815d9f34 Mon Sep 17 00:00:00 2001 From: noud02 Date: Mon, 23 Apr 2018 11:51:45 +0200 Subject: [PATCH 1/2] allow embed customization --- Discord.Addons.Interactive/InteractiveBase.cs | 3 ++- .../Paginator/PaginatedMessage.cs | 5 +++-- .../Paginator/PaginatedMessageCallback.cs | 21 +++++++++++++------ .../Paginator/PaginatedMessageContent.cs | 12 +++++++++++ SampleApp/Modules/SampleModule.cs | 10 ++++++++- 5 files changed, 41 insertions(+), 10 deletions(-) create mode 100644 Discord.Addons.Interactive/Paginator/PaginatedMessageContent.cs diff --git a/Discord.Addons.Interactive/InteractiveBase.cs b/Discord.Addons.Interactive/InteractiveBase.cs index c934f85..a9d4ccf 100644 --- a/Discord.Addons.Interactive/InteractiveBase.cs +++ b/Discord.Addons.Interactive/InteractiveBase.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Threading.Tasks; +using Discord.Addons.Interactive.Paginator; using Discord.Commands; using Discord.WebSocket; @@ -23,7 +24,7 @@ public Task NextMessageAsync(bool fromSourceUser = true, bool inS public Task ReplyAndDeleteAsync(string content, bool isTTS = false, Embed embed = null, TimeSpan? timeout = null, RequestOptions options = null) => Interactive.ReplyAndDeleteAsync(Context, content, isTTS, embed, timeout, options); - public Task PagedReplyAsync(IEnumerable pages, bool fromSourceUser = true) + public Task PagedReplyAsync(IEnumerable pages, bool fromSourceUser = true) { var pager = new PaginatedMessage { diff --git a/Discord.Addons.Interactive/Paginator/PaginatedMessage.cs b/Discord.Addons.Interactive/Paginator/PaginatedMessage.cs index 569f40e..9a5b817 100644 --- a/Discord.Addons.Interactive/Paginator/PaginatedMessage.cs +++ b/Discord.Addons.Interactive/Paginator/PaginatedMessage.cs @@ -1,10 +1,11 @@ -using System.Collections.Generic; +using Discord.Addons.Interactive.Paginator; +using System.Collections.Generic; namespace Discord.Addons.Interactive { public class PaginatedMessage { - public IEnumerable Pages { get; set; } + public IEnumerable Pages { get; set; } public string Content { get; set; } = ""; diff --git a/Discord.Addons.Interactive/Paginator/PaginatedMessageCallback.cs b/Discord.Addons.Interactive/Paginator/PaginatedMessageCallback.cs index 47b5e24..2f52057 100644 --- a/Discord.Addons.Interactive/Paginator/PaginatedMessageCallback.cs +++ b/Discord.Addons.Interactive/Paginator/PaginatedMessageCallback.cs @@ -132,13 +132,22 @@ public async Task HandleCallbackAsync(SocketReaction reaction) protected Embed BuildEmbed() { - return new EmbedBuilder() - .WithAuthor(_pager.Author) - .WithColor(_pager.Color) - .WithDescription(_pager.Pages.ElementAt(page-1).ToString()) + var p = _pager.Pages.ElementAt(page - 1); + + var embed = new EmbedBuilder() + .WithAuthor(p.Author ?? _pager.Author) + .WithColor(p.Color) + .WithDescription(p.Description ?? "null") .WithFooter(f => f.Text = string.Format(options.FooterFormat, page, pages)) - .WithTitle(_pager.Title) - .Build(); + .WithTitle(p.Title ?? _pager.Title); + + if (p.ImageUrl != null) + embed.WithImageUrl(p.ImageUrl); + + if (p.ThumbnailUrl != null) + embed.WithThumbnailUrl(p.ThumbnailUrl); + + return embed.Build(); } private async Task RenderAsync() { diff --git a/Discord.Addons.Interactive/Paginator/PaginatedMessageContent.cs b/Discord.Addons.Interactive/Paginator/PaginatedMessageContent.cs new file mode 100644 index 0000000..c9a3a3b --- /dev/null +++ b/Discord.Addons.Interactive/Paginator/PaginatedMessageContent.cs @@ -0,0 +1,12 @@ +namespace Discord.Addons.Interactive.Paginator +{ + public class PaginatedMessageContent + { + public string Title { get; set; } + public EmbedAuthorBuilder Author { get; set; } + public string Description { get; set; } + public string ImageUrl { get; set; } + public string ThumbnailUrl { get; set; } + public Color Color { get; set; } = Color.Default; + } +} diff --git a/SampleApp/Modules/SampleModule.cs b/SampleApp/Modules/SampleModule.cs index 4436e5b..2525cc1 100644 --- a/SampleApp/Modules/SampleModule.cs +++ b/SampleApp/Modules/SampleModule.cs @@ -1,6 +1,7 @@ using System; using System.Threading.Tasks; using Discord.Addons.Interactive; +using Discord.Addons.Interactive.Paginator; using Discord.Commands; namespace SampleApp.Modules @@ -37,7 +38,14 @@ public async Task Test_NextMessageAsync() [Command("paginator")] public async Task Test_Paginator() { - var pages = new[] { "Page 1", "Page 2", "Page 3", "aaaaaa", "Page 5" }; + var pages = new[] + { + new PaginatedMessageContent { Description = "Page 1" }, + new PaginatedMessageContent { Description = "Page 2" }, + new PaginatedMessageContent { Description = "Page 3" }, + new PaginatedMessageContent { Description = "aaaaaa" }, + new PaginatedMessageContent { Description = "Page 5"} + }; await PagedReplyAsync(pages); } } From fcbe7fbdb20ca847ea5cbc3bc820b724bfe68a2e Mon Sep 17 00:00:00 2001 From: noud02 Date: Mon, 23 Apr 2018 12:45:48 +0200 Subject: [PATCH 2/2] fix namespace for PaginatedMessageContent --- Discord.Addons.Interactive/InteractiveBase.cs | 1 - Discord.Addons.Interactive/Paginator/PaginatedMessage.cs | 3 +-- .../Paginator/PaginatedMessageContent.cs | 2 +- SampleApp/Modules/SampleModule.cs | 1 - 4 files changed, 2 insertions(+), 5 deletions(-) diff --git a/Discord.Addons.Interactive/InteractiveBase.cs b/Discord.Addons.Interactive/InteractiveBase.cs index a9d4ccf..7170e64 100644 --- a/Discord.Addons.Interactive/InteractiveBase.cs +++ b/Discord.Addons.Interactive/InteractiveBase.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Threading.Tasks; -using Discord.Addons.Interactive.Paginator; using Discord.Commands; using Discord.WebSocket; diff --git a/Discord.Addons.Interactive/Paginator/PaginatedMessage.cs b/Discord.Addons.Interactive/Paginator/PaginatedMessage.cs index 9a5b817..efd5b6e 100644 --- a/Discord.Addons.Interactive/Paginator/PaginatedMessage.cs +++ b/Discord.Addons.Interactive/Paginator/PaginatedMessage.cs @@ -1,5 +1,4 @@ -using Discord.Addons.Interactive.Paginator; -using System.Collections.Generic; +using System.Collections.Generic; namespace Discord.Addons.Interactive { diff --git a/Discord.Addons.Interactive/Paginator/PaginatedMessageContent.cs b/Discord.Addons.Interactive/Paginator/PaginatedMessageContent.cs index c9a3a3b..136a23e 100644 --- a/Discord.Addons.Interactive/Paginator/PaginatedMessageContent.cs +++ b/Discord.Addons.Interactive/Paginator/PaginatedMessageContent.cs @@ -1,4 +1,4 @@ -namespace Discord.Addons.Interactive.Paginator +namespace Discord.Addons.Interactive { public class PaginatedMessageContent { diff --git a/SampleApp/Modules/SampleModule.cs b/SampleApp/Modules/SampleModule.cs index 2525cc1..cce08ba 100644 --- a/SampleApp/Modules/SampleModule.cs +++ b/SampleApp/Modules/SampleModule.cs @@ -1,7 +1,6 @@ using System; using System.Threading.Tasks; using Discord.Addons.Interactive; -using Discord.Addons.Interactive.Paginator; using Discord.Commands; namespace SampleApp.Modules