From 091e51ecc96f946c8c5701f430202003558f863e Mon Sep 17 00:00:00 2001
From: neroduckale <neroduck@vk.com>
Date: Tue, 5 Dec 2023 21:52:39 +0500
Subject: [PATCH] Fixed my cringe merge

---
 src/Commands/RemindCommandGroup.cs         | 33 +++++++++++++---------
 src/Data/Reminder.cs                       |  4 +--
 src/Services/Update/MemberUpdateService.cs |  4 +--
 3 files changed, 24 insertions(+), 17 deletions(-)

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<Result> ListRemindersAsync(MemberData data, IUser executor, IUser bot, CancellationToken ct)
+    private async Task<Result> 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;
     }
 
     /// <summary>
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);