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:
parent
861df0e4dd
commit
e870328964
3 changed files with 19 additions and 16 deletions
|
@ -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>
|
||||||
|
|
|
@ -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; }
|
||||||
}
|
}
|
||||||
|
|
|
@ -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();
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue