1
0
Fork 1
mirror of https://github.com/TeamOctolings/Octobot.git synced 2025-04-19 16:33:36 +03:00

Resolve all of resolved changes.

Reminder.cs: Message -> MessageId
RemindCommandGroup.cs:
- check that the message was sent successfully first
- removed unnecessary string builder construction
- reminder store only original message ID.
MemberUpdateService.cs:
Link to original message added to the reminder itself as well when it goes off
This commit is contained in:
neroduckale 2023-12-04 00:00:23 +05:00
parent 861df0e4dd
commit e870328964
WARNING! Although there is a key with this ID in the database it does not verify this commit! This commit is SUSPICIOUS.
GPG key ID: 399E73062E1A3667
3 changed files with 19 additions and 16 deletions

View file

@ -72,10 +72,10 @@ public class RemindCommandGroup : CommandGroup
var data = await _guildData.GetData(guildId, CancellationToken); var data = await _guildData.GetData(guildId, CancellationToken);
Messages.Culture = GuildSettings.Language.Get(data.Settings); Messages.Culture = GuildSettings.Language.Get(data.Settings);
return await ListRemindersAsync(data.GetOrCreateMemberData(executorId), executor, bot, CancellationToken); return await ListRemindersAsync(data.GetOrCreateMemberData(executorId), executor, bot, guildId, CancellationToken);
} }
private async Task<Result> ListRemindersAsync(MemberData data, IUser executor, IUser bot, CancellationToken ct) private async Task<Result> ListRemindersAsync(MemberData data, IUser executor, IUser bot, Snowflake guildId, CancellationToken ct)
{ {
if (data.Reminders.Count == 0) if (data.Reminders.Count == 0)
{ {
@ -94,7 +94,8 @@ public class RemindCommandGroup : CommandGroup
.Append(" - ").AppendLine(string.Format(Messages.ReminderText, Markdown.InlineCode(reminder.Text))) .Append(" - ").AppendLine(string.Format(Messages.ReminderText, Markdown.InlineCode(reminder.Text)))
.Append(" - ") .Append(" - ")
.AppendLine(string.Format(Messages.ReminderTime, Markdown.Timestamp(reminder.At))) .AppendLine(string.Format(Messages.ReminderTime, Markdown.Timestamp(reminder.At)))
.Append(" - ").AppendLine(reminder.Message); .AppendLine(string.Format(Messages.DescriptionActionJumpToMessage, $"https://discord.com/channels/{guildId.Value}/{reminder.Channel}/{reminder.MessageId}")
);
} }
var embed = new EmbedBuilder().WithSmallTitle( var embed = new EmbedBuilder().WithSmallTitle(
@ -138,12 +139,12 @@ public class RemindCommandGroup : CommandGroup
var data = await _guildData.GetData(guildId, CancellationToken); var data = await _guildData.GetData(guildId, CancellationToken);
Messages.Culture = GuildSettings.Language.Get(data.Settings); Messages.Culture = GuildSettings.Language.Get(data.Settings);
return await AddReminderAsync(@in, text, data, channelId, executor, guildId, CancellationToken); return await AddReminderAsync(@in, text, data, channelId, executor, CancellationToken);
} }
private async Task<Result> AddReminderAsync( private async Task<Result> AddReminderAsync(
TimeSpan @in, string text, GuildData data, TimeSpan @in, string text, GuildData data,
Snowflake channelId, IUser executor, Snowflake guildId, CancellationToken ct = default) Snowflake channelId, IUser executor, CancellationToken ct = default)
{ {
var remindAt = DateTimeOffset.UtcNow.Add(@in); var remindAt = DateTimeOffset.UtcNow.Add(@in);
var memberData = data.GetOrCreateMemberData(executor.ID); var memberData = data.GetOrCreateMemberData(executor.ID);
@ -158,20 +159,20 @@ public class RemindCommandGroup : CommandGroup
.WithColour(ColorsList.Green) .WithColour(ColorsList.Green)
.WithFooter(string.Format(Messages.ReminderPosition, memberData.Reminders.Count + 1)) .WithFooter(string.Format(Messages.ReminderPosition, memberData.Reminders.Count + 1))
.Build(); .Build();
var message = await _feedback.SendContextualEmbedAsync(embed.Entity, ct: ct); var messageResult = await _feedback.SendContextualEmbedAsync(embed.Entity, ct: ct);
var messageId = message.Entity.ID.Value; if (!messageResult.IsDefined(out var output)) { return (Result)messageResult; }
var builderMessage = new StringBuilder().AppendLine(
string.Format(Messages.DescriptionActionJumpToMessage, var messageId = output.ID.Value;
$"https://discord.com/channels/{guildId}/{channelId}/{messageId}"));
memberData.Reminders.Add( memberData.Reminders.Add(
new Reminder new Reminder
{ {
At = remindAt, At = remindAt,
Channel = channelId.Value, Channel = channelId.Value,
Text = text, Text = text,
Message = builderMessage.ToString() MessageId = messageId.ToString()
}); });
return Result.FromSuccess(); return (Result)messageResult;
} }
/// <summary> /// <summary>

View file

@ -5,5 +5,5 @@ public struct Reminder
public DateTimeOffset At { get; init; } public DateTimeOffset At { get; init; }
public string Text { get; init; } public string Text { get; init; }
public ulong Channel { get; init; } public ulong Channel { get; init; }
public string Message { get; init; } public string MessageId { get; init; }
} }

View file

@ -114,7 +114,7 @@ public sealed partial class MemberUpdateService : BackgroundService
for (var i = data.Reminders.Count - 1; i >= 0; i--) for (var i = data.Reminders.Count - 1; i >= 0; i--)
{ {
var reminderTickResult = await TickReminderAsync(data.Reminders[i], user, data, ct); var reminderTickResult = await TickReminderAsync(data.Reminders[i], user, data, guildId, ct);
failedResults.AddIfFailed(reminderTickResult); failedResults.AddIfFailed(reminderTickResult);
} }
@ -217,7 +217,8 @@ public sealed partial class MemberUpdateService : BackgroundService
[GeneratedRegex("[^0-9A-Za-zА-Яа-яЁё]")] [GeneratedRegex("[^0-9A-Za-zА-Яа-яЁё]")]
private static partial Regex IllegalChars(); private static partial Regex IllegalChars();
private async Task<Result> TickReminderAsync(Reminder reminder, IUser user, MemberData data, CancellationToken ct) private async Task<Result> TickReminderAsync(Reminder reminder, IUser user, MemberData data, Snowflake guildId,
CancellationToken ct)
{ {
if (DateTimeOffset.UtcNow < reminder.At) if (DateTimeOffset.UtcNow < reminder.At)
{ {
@ -226,8 +227,9 @@ public sealed partial class MemberUpdateService : BackgroundService
var embed = new EmbedBuilder().WithSmallTitle( var embed = new EmbedBuilder().WithSmallTitle(
string.Format(Messages.Reminder, user.GetTag()), user) string.Format(Messages.Reminder, user.GetTag()), user)
.WithDescription( .WithTitle(
string.Format(Messages.DescriptionReminder, Markdown.InlineCode(reminder.Text))) string.Format(Messages.DescriptionReminder, Markdown.InlineCode(reminder.Text)))
.WithDescription(string.Format(Messages.DescriptionActionJumpToMessage, $"https://discord.com/channels/{guildId.Value}/{reminder.Channel}/{reminder.MessageId}"))
.WithColour(ColorsList.Magenta) .WithColour(ColorsList.Magenta)
.Build(); .Build();