public async Task GetOpeatorSkill(CommandContext ctx, [Description("Operator's name")] string name) { try { OpSkill op = await operatorService.GetOperatorSkill(name); if (op is null) { await ctx.RespondAsync("Operator not found."); return; } var itr = ctx.Client.GetInteractivity(); List <Page> pages = embedService.CreateOpSkillPages(op); 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> CreateOpSkillPages(OpSkill op) { List <Page> pages = new List <Page>(); int i = 1; if (op.Skills != null && op.Skills.Any()) { foreach (Skill skill in op.Skills) { string range = AttackRange.GetAttackRange(skill.RangeId); var embed = new DiscordEmbedBuilder() .WithTitle($"[{op.Rarity}★] {op.Name} - {skill.SkillName}") .WithThumbnail($"{s3.Url}skills/skill_icon_{skill.SkillCode}.png", 60, 60) .AddField("Details", $"{Formatter.Bold("Recovery Type:")} {skill.SpType}\n" + $"{Formatter.Bold("Sp Cost:")} {skill.SpCost} → {skill.MaxSpCost}", true) .AddField("\u200b", $"{Formatter.Bold("Skill Type:")} {skill.SkillType }", true); if (!string.IsNullOrWhiteSpace(range)) { embed.AddField("Range", range, true); } embed.AddField("Description", $"{skill.SkillDescription}"); if (i == 1) { if (op.AllSkills != null && op.AllSkills.Any()) { string text = string.Empty; foreach (AllSkill a in op.AllSkills) { text = $"{Formatter.Bold("Lv. " +(a.Level+1)+':')}"; if (a.UpgradeCosts != null && a.UpgradeCosts.Any()) { foreach (UpgradeCost u in a.UpgradeCosts) { text += $"{u.Count}x {u.Name},"; } text = text.Substring(0, text.Count() - 1); } text += "\n"; } embed.AddField("Upgrade Costs", text); } } if (skill.MasteryLevels != null && skill.MasteryLevels.Any()) { string text = string.Empty; foreach (MasteryLevel m in skill.MasteryLevels) { text = $"{Formatter.Bold("Mastery " + m.Level + ':')}"; if (m.UpgradeCosts != null && m.UpgradeCosts.Any()) { foreach (UpgradeCost u in m.UpgradeCosts) { text += $"{u.Count}x {u.Name},"; } text = text.Substring(0, text.Count() - 1); } text += "\n"; embed.AddField("Mastery Costs", text); } } i++; pages.Add(new Page { Embed = embed.Build() }); } } return(pages); }