private Page CreateOpDetailPage(OpDetail op, int index) { Elite e = op.Elites[index]; DiscordEmbedBuilder embed = new DiscordEmbedBuilder() .WithTitle($"[{op.Rarity}★] {op.Name}") .AddField($"Level 1 → {e.MaxLevel}", $"{Formatter.Bold("Health:")} {e.Hp} → {e.MaxHp}\n" + $"{Formatter.Bold("Attack:")} {e.Atk} → {e.MaxAtk}\n" + $"{Formatter.Bold("Defense:")} {e.Def} → {e.MaxDef}\n" + $"{Formatter.Bold("Resistance:")} {e.MagicResistance}", true) .AddField("\u200b", $"{Formatter.Bold("Cost:")}{e.Cost}\n" + $"{Formatter.Bold("Block:")} {e.BlockCnt}\n" + $"{Formatter.Bold("Attack Time:")} 100\n" + $"{Formatter.Bold("Respawn Time:")} {e.RespawnTime}\n", true) .AddField("Range", AttackRange.GetAttackRange(op.Elites[index].RangeId), true); string img = string.Empty; switch (index) { case 1: { if (op.OperatorCode.Equals("Amiya")) { embed.WithThumbnail($"{s3.Url}avatars/{op.OperatorCode}_1+.png"); } else { embed.WithThumbnail($"{s3.Url}avatars/{op.OperatorCode}.png"); } break; } case 2: { embed.WithThumbnail($"{s3.Url}avatars/{op.OperatorCode}_2.png"); break; } } if (op.Talents != null && op.Talents.Count > 0) { string talent = string.Empty; foreach (Talent t in op.Talents) { if (t.Phase == index) { talent += $"{Formatter.Bold(t.Name + ':')} {t.Description} (Lvl.1,Potential {t.RequirePotential})\n"; } } if (!string.IsNullOrEmpty(talent)) { talent = talent.Substring(0, talent.Count() - 1); embed.AddField("Talents", talent); } } return(new Page { Embed = embed.Build() }); }
public async Task GetOperatorByName(CommandContext ctx, [Description("Operator's name")] string name) { try { OpDetail op = await operatorService.GetOperatorDetail(name); if (op is null) { await ctx.RespondAsync("Operator not found."); return; } var itr = ctx.Client.GetInteractivity(); List <Page> pages = embedService.CreateOpDetailPages(op, ctx.Client); await itr.SendPaginatedMessageAsync(ctx.Channel, ctx.User, pages, timeoutoverride : TimeSpan.FromMinutes(5)); } catch (Exception e) { await ctx.RespondAsync($"An error occurred:{e.Message}"); } }
public List <Page> CreateOpDetailPages(OpDetail op, DiscordClient client) { List <DiscordEmoji> emojis = new List <DiscordEmoji> { DiscordEmoji.FromGuildEmote(client, 840489819812921384), DiscordEmoji.FromGuildEmote(client, 840489819481440267), DiscordEmoji.FromGuildEmote(client, 840489819594555414), DiscordEmoji.FromGuildEmote(client, 840489820177563648), DiscordEmoji.FromGuildEmote(client, 840489820924543016) }; int i = 0; string pot = "\u200b"; if (op.Potentials != null && op.Potentials.Any()) { foreach (var p in op.Potentials) { pot += $"{emojis[i]} {p.Desc}\n"; i++; } pot = pot.Substring(0, pot.Length - 1); } Console.WriteLine($"{s3.Url}avatars/{op.OperatorCode}.png"); List <Page> pages = new List <Page>(); DiscordEmbedBuilder embed = new DiscordEmbedBuilder() .WithTitle($"[{op.Rarity}★] {op.Name}") .WithDescription($"{op.ItemUsage}\n{op.ItemDesc}") .WithThumbnail($"{s3.Url}avatars/{op.OperatorCode}.png", 60, 60) .AddField("Detail", $"{Formatter.Bold("Affiliation:")} {TextUtil.ToTitleCase(op.Team)}\n" + $"{Formatter.Bold("Obtain:")} {op.ItemObtainApproach}", true) .AddField("\u200b", $"{Formatter.Bold("Tag:")} {op.TagList}\n" + $"{Formatter.Bold("Position:")} {TextUtil.ToTitleCase(op.Position)}\n" + $"{Formatter.Bold("Class:")} {TextUtil.ToTitleCase(op.Profession)}", true) .AddField("Range", AttackRange.GetAttackRange(op.Elites[0].RangeId), true) .AddField("Effect", op.Description) .AddField($"Level 1 → {op.Elites[0].MaxLevel}", $"{Formatter.Bold("Health:")} {op.Elites[0].Hp} → {op.Elites[0].MaxHp}\n" + $"{Formatter.Bold("Attack:")} {op.Elites[0].Atk} → {op.Elites[0].MaxAtk}\n" + $"{Formatter.Bold("Defense:")} {op.Elites[0].Def} → {op.Elites[0].MaxDef}\n" + $"{Formatter.Bold("Resistance:")} {op.Elites[0].MagicResistance}\n" + $"{Formatter.Bold("Cost:")} {op.Elites[0].Cost}\n" + $"{Formatter.Bold("AttackTime:")} 100\n" + $"{Formatter.Bold("Block:")} {op.Elites[0].BlockCnt}\n" + $"{Formatter.Bold("RespawnTime:")} {op.Elites[0].RespawnTime}\n", true) .AddField("Potentials", pot, true); if (op.Talents != null && op.Talents.Count > 0) { string talent = string.Empty; foreach (Talent t in op.Talents) { if (t.Phase == 0) { talent += $"{Formatter.Bold(t.Name + ':')} {t.Description} (Lv. 1,Potential {t.RequirePotential})\n"; } } if (!string.IsNullOrEmpty(talent)) { talent = talent.Substring(0, talent.Count() - 1); embed.AddField("Talents", talent); } } pages.Add(new Page { Embed = embed.Build() }); if (op.Elites.ElementAtOrDefault(1) != null) { pages.Add(CreateOpDetailPage(op, 1)); } if (op.Elites.ElementAtOrDefault(2) != null) { pages.Add(CreateOpDetailPage(op, 2)); } return(pages); }