diff --git a/src/Commands/RemindCommandGroup.cs b/src/Commands/RemindCommandGroup.cs index 7c087e1..a1f1777 100644 --- a/src/Commands/RemindCommandGroup.cs +++ b/src/Commands/RemindCommandGroup.cs @@ -72,10 +72,10 @@ public class RemindCommandGroup : CommandGroup var data = await _guildData.GetData(guildId, CancellationToken); Messages.Culture = GuildSettings.Language.Get(data.Settings); - return await ListRemindersAsync(data.GetOrCreateMemberData(executorId), executor, bot, CancellationToken); + return await ListRemindersAsync(data.GetOrCreateMemberData(executorId), guildId, executor, bot, CancellationToken); } - private async Task ListRemindersAsync(MemberData data, IUser executor, IUser bot, CancellationToken ct) + private async Task ListRemindersAsync(MemberData data, Snowflake guildId, IUser executor, IUser bot, CancellationToken ct) { if (data.Reminders.Count == 0) { @@ -92,7 +92,8 @@ public class RemindCommandGroup : CommandGroup var reminder = data.Reminders[i]; builder.AppendBulletPointLine(string.Format(Messages.ReminderPosition, Markdown.InlineCode((i + 1).ToString()))) .AppendSubBulletPointLine(string.Format(Messages.ReminderText, Markdown.InlineCode(reminder.Text))) - .AppendSubBulletPointLine(string.Format(Messages.ReminderTime, Markdown.Timestamp(reminder.At))); + .AppendSubBulletPointLine(string.Format(Messages.ReminderTime, Markdown.Timestamp(reminder.At))) + .AppendSubBulletPointLine(string.Format(Messages.DescriptionActionJumpToMessage, $"https://discord.com/channels/{guildId.Value}/{reminder.ChannelId}/{reminder.MessageId}")); } var embed = new EmbedBuilder().WithSmallTitle( @@ -146,14 +147,6 @@ public class RemindCommandGroup : CommandGroup var remindAt = DateTimeOffset.UtcNow.Add(@in); var memberData = data.GetOrCreateMemberData(executor.ID); - memberData.Reminders.Add( - new Reminder - { - At = remindAt, - Channel = channelId.Value, - Text = text - }); - var builder = new StringBuilder().AppendBulletPointLine(string.Format( Messages.ReminderText, Markdown.InlineCode(text))) .AppendBulletPoint(string.Format(Messages.ReminderTime, Markdown.Timestamp(remindAt))); @@ -162,10 +155,24 @@ public class RemindCommandGroup : CommandGroup string.Format(Messages.ReminderCreated, executor.GetTag()), executor) .WithDescription(builder.ToString()) .WithColour(ColorsList.Green) - .WithFooter(string.Format(Messages.ReminderPosition, memberData.Reminders.Count)) + .WithFooter(string.Format(Messages.ReminderPosition, memberData.Reminders.Count + 1)) .Build(); + var messageResult = await _feedback.SendContextualEmbedAsync(embed.Entity, ct: ct); + if (!messageResult.IsDefined(out var message)) + { + return (Result)messageResult; + } - return await _feedback.SendContextualEmbedResultAsync(embed, ct); + var messageId = message.ID.Value; + memberData.Reminders.Add( + new Reminder + { + At = remindAt, + ChannelId = channelId.Value, + Text = text, + MessageId = messageId + }); + return (Result)messageResult; } /// diff --git a/src/Data/Reminder.cs b/src/Data/Reminder.cs index 3fa4d2d..f21b222 100644 --- a/src/Data/Reminder.cs +++ b/src/Data/Reminder.cs @@ -4,6 +4,6 @@ public struct Reminder { public DateTimeOffset At { get; init; } public string Text { get; init; } - public ulong Channel { get; init; } - public string MessageId { get; init; } + public ulong ChannelId { get; init; } + public ulong MessageId { get; init; } } diff --git a/src/Services/Update/MemberUpdateService.cs b/src/Services/Update/MemberUpdateService.cs index 1776648..2d0d82c 100644 --- a/src/Services/Update/MemberUpdateService.cs +++ b/src/Services/Update/MemberUpdateService.cs @@ -229,7 +229,7 @@ public sealed partial class MemberUpdateService : BackgroundService string.Format(Messages.Reminder, user.GetTag()), user) .WithTitle( string.Format(Messages.DescriptionReminder, Markdown.InlineCode(reminder.Text))) - .WithDescription(string.Format(Messages.DescriptionActionJumpToMessage, $"https://discord.com/channels/{guildId.Value}/{reminder.Channel}/{reminder.MessageId}")) + .WithDescription(string.Format(Messages.DescriptionActionJumpToMessage, $"https://discord.com/channels/{guildId.Value}/{reminder.ChannelId}/{reminder.MessageId}")) .WithColour(ColorsList.Magenta) .Build(); @@ -239,7 +239,7 @@ public sealed partial class MemberUpdateService : BackgroundService } var messageResult = await _channelApi.CreateMessageAsync( - reminder.Channel.ToSnowflake(), Mention.User(user), embeds: new[] { built }, ct: ct); + reminder.ChannelId.ToSnowflake(), Mention.User(user), embeds: new[] { built }, ct: ct); if (!messageResult.IsSuccess) { return Result.FromError(messageResult);