diff --git a/TeamOctolings.Octobot/Commands/RemindCommandGroup.cs b/TeamOctolings.Octobot/Commands/RemindCommandGroup.cs index be53ed7..27f74a0 100644 --- a/TeamOctolings.Octobot/Commands/RemindCommandGroup.cs +++ b/TeamOctolings.Octobot/Commands/RemindCommandGroup.cs @@ -158,11 +158,22 @@ public sealed class RemindCommandGroup : CommandGroup return await _feedback.SendContextualEmbedResultAsync(failedEmbed, ct: CancellationToken); } - return await AddReminderAsync(timeSpan, text, data, channelId, executor, CancellationToken); + var replacedText = text.Replace("`", ""); + if (replacedText.Equals(string.Empty)) + { + var failedEmbed = new EmbedBuilder() + .WithSmallTitle(Messages.ReminderTextOnlyBanned, bot) + .WithColour(ColorsList.Red) + .Build(); + + return await _feedback.SendContextualEmbedResultAsync(failedEmbed, ct: CancellationToken); + } + + return await AddReminderAsync(timeSpan, text, replacedText, data, channelId, executor, CancellationToken); } - private async Task AddReminderAsync(TimeSpan timeSpan, string text, GuildData data, - Snowflake channelId, IUser executor, CancellationToken ct = default) + private async Task AddReminderAsync(TimeSpan timeSpan, string text, string replacedText, + GuildData data, Snowflake channelId, IUser executor, CancellationToken ct = default) { var memberData = data.GetOrCreateMemberData(executor.ID); var remindAt = DateTimeOffset.UtcNow.Add(timeSpan); @@ -177,17 +188,24 @@ public sealed class RemindCommandGroup : CommandGroup { At = remindAt, ChannelId = channelId.Value, - Text = text, + Text = replacedText, MessageId = response.ID.Value }); - var builder = new StringBuilder() - .AppendBulletPointLine(string.Format(Messages.ReminderText, Markdown.InlineCode(text))) - .AppendBulletPoint(string.Format(Messages.ReminderTime, Markdown.Timestamp(remindAt))); + var textEqualsReplaced = text.Equals(replacedText); + var builder = new StringBuilder().AppendBulletPointLine( + string.Format(Messages.ReminderText, Markdown.InlineCode(replacedText))); + if (!textEqualsReplaced) + { + builder.AppendSubBulletPointLine(Messages.ReminderTextContainedBanned); + } + + builder.AppendBulletPoint(string.Format(Messages.ReminderTime, Markdown.Timestamp(remindAt))); + var embed = new EmbedBuilder().WithSmallTitle( string.Format(Messages.ReminderCreated, executor.GetTag()), executor) .WithDescription(builder.ToString()) - .WithColour(ColorsList.Green) + .WithColour(textEqualsReplaced ? ColorsList.Green : ColorsList.Yellow) .WithFooter(string.Format(Messages.ReminderPosition, memberData.Reminders.Count)) .Build(); diff --git a/TeamOctolings.Octobot/Messages.Designer.cs b/TeamOctolings.Octobot/Messages.Designer.cs index bbc1366..5ea10f0 100644 --- a/TeamOctolings.Octobot/Messages.Designer.cs +++ b/TeamOctolings.Octobot/Messages.Designer.cs @@ -1196,5 +1196,17 @@ namespace TeamOctolings.Octobot { return ResourceManager.GetString("SettingsModeratorRole", resourceCulture); } } + + internal static string ReminderTextContainedBanned { + get { + return ResourceManager.GetString("ReminderTextContainedBanned", resourceCulture); + } + } + + internal static string ReminderTextOnlyBanned { + get { + return ResourceManager.GetString("ReminderTextOnlyBanned", resourceCulture); + } + } } } diff --git a/TeamOctolings.Octobot/Messages.resx b/TeamOctolings.Octobot/Messages.resx index 47e7d4f..9f7955d 100644 --- a/TeamOctolings.Octobot/Messages.resx +++ b/TeamOctolings.Octobot/Messages.resx @@ -681,4 +681,10 @@ Moderator role + + Reminder text contained banned characters. + + + Reminder text contains only banned characters! + diff --git a/TeamOctolings.Octobot/Messages.ru.resx b/TeamOctolings.Octobot/Messages.ru.resx index 2eef257..d6c5446 100644 --- a/TeamOctolings.Octobot/Messages.ru.resx +++ b/TeamOctolings.Octobot/Messages.ru.resx @@ -681,4 +681,10 @@ Роль модератора + + Текст напоминания содержал запрещенные символы. + + + Текст напоминания содержит только запрещенные символы! +