elliebot/src/EllieBot/Modules/Games/Quests/QuestCommands.cs

38 lines
No EOL
1.1 KiB
C#

namespace EllieBot.Modules.Games.Quests;
public class QuestCommands : EllieModule<QuestService>
{
[Cmd]
public async Task QuestLog()
{
var now = DateTime.UtcNow;
var quests = await _service.GetUserQuestsAsync(ctx.User.Id, now);
var embed = CreateEmbed()
.WithOkColor()
.WithTitle(GetText(strs.quest_log));
var allDone = quests.All(x => x.UserQuest.IsCompleted);
var tmrw = now.AddDays(1).Date;
var desc = GetText(strs.dailies_reset(TimestampTag.FromDateTime(tmrw, TimestampTagStyles.Relative)));
if (allDone)
desc = GetText(strs.dailies_done) + "\n" + desc;
embed.WithDescription(desc);
foreach (var res in quests)
{
if (res.Quest is null)
continue;
embed.AddField(
(res.UserQuest.IsCompleted ? IQuest.COMPLETED : IQuest.INCOMPLETE) + " " + res.Quest.Name,
$"{res.Quest.Desc}\n\n" +
res.Quest.ToString(res.UserQuest.Progress),
true);
}
await Response().Embed(embed).SendAsync();
}
}