Advertisement
frnathan13

Untitled

Nov 21st, 2017
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.10 KB | None | 0 0
  1. [Command("roles")]
  2.         public async Task GetGuildRoles(CommandContext ctx, int chunkSize = 10) {
  3.             await ctx.TriggerTypingAsync();
  4.  
  5.             var interactive = ctx.Client.GetInteractivityModule();
  6.  
  7.             List<Page> pages = null;
  8.             pages = new List<Page>(new Func<Page[]>(() => {
  9.  
  10.                 if (chunkSize >= 31)
  11.                     chunkSize = 10;
  12.  
  13.                 if (chunkSize <= 10)
  14.                     chunkSize = 10;
  15.  
  16.  
  17.                 List<Page> list = new List<Page>();
  18.                 {
  19.                     var roles = ctx.Guild.Roles.ToList();
  20.                     var page_ = 0;
  21.                     var total = 0;
  22.  
  23.                     for (var i = 0; i < ctx.Guild.Roles.Count; i += chunkSize) {
  24.                         page_ = i / chunkSize;
  25.                         total = roles.Count / chunkSize;
  26.  
  27.                         var page = new Page {
  28.                             Embed = new DiscordEmbedBuilder()
  29.                                 .WithFooter($"Requested by {ctx.User.Username}#{ctx.User.Discriminator}", ctx.User.AvatarUrl)
  30.                                 .WithColor(new DiscordColor("#6f18a5"))
  31.                                 .WithThumbnailUrl(string.IsNullOrEmpty(ctx.Guild.IconUrl) ? ctx.Guild.Owner.AvatarUrl : ctx.Guild.IconUrl)
  32.  
  33.                                 .AddField($"Roles [`{page_}/{total}`]", new Func<string>(() => {
  34.                                     var str = "";
  35.                                     {
  36.                                         str = string.Join("\n", roles.GetRange(i, Math.Min(chunkSize, roles.Count - i)).Select(r => $"{r.Mention}"));
  37.                                     }
  38.                                     return str;
  39.                                 })())
  40.  
  41.                                 .Build()
  42.                         };
  43.  
  44.                         list.Add(page);
  45.                     }
  46.                 }
  47.                 return list.ToArray();
  48.             })());
  49.  
  50.             await interactive.SendPaginatedMessage(ctx.Channel, ctx.User, pages, TimeSpan.FromMinutes(5), TimeoutBehaviour.Delete);
  51.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement