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

this commit is illegal

This commit is contained in:
Macintxsh 2024-07-20 20:28:05 +05:00
parent 07e8784d2e
commit e0161037bb
Signed by: mctaylors
GPG key ID: 4EEF4F949A266EE2
8 changed files with 63 additions and 3 deletions

View file

@ -202,6 +202,29 @@ public sealed class SettingsCommandGroup : CommandGroup
IGuildOption option, string value, GuildData data, Snowflake channelId, IUser executor, IUser bot,
CancellationToken ct = default)
{
Console.WriteLine(option.Value(data.Settings));
var equalsResult = option.ValueEquals(data.Settings, value, out var equals);
if (!equalsResult.IsSuccess)
{
var failedEmbed = new EmbedBuilder().WithSmallTitle(Messages.SettingNotChanged, bot)
.WithDescription(equalsResult.Error.Message)
.WithColour(ColorsList.Red)
.Build();
return await _feedback.SendContextualEmbedResultAsync(failedEmbed, ct: ct);
}
if (equals)
{
var failedEmbed = new EmbedBuilder().WithSmallTitle(Messages.SettingNotChanged, bot)
.WithDescription(Messages.SettingValueEquals)
.WithColour(ColorsList.Red)
.Build();
return await _feedback.SendContextualEmbedResultAsync(failedEmbed, ct: ct);
}
var setResult = option.Set(data.Settings, value);
if (!setResult.IsSuccess)
{

View file

@ -12,6 +12,18 @@ public sealed class BoolOption : GuildOption<bool>
return Get(settings) ? Messages.Yes : Messages.No;
}
public override Result ValueEquals(JsonNode settings, string value, out bool equals)
{
if (!TryParseBool(value, out var boolean))
{
equals = false;
return new ArgumentInvalidError(nameof(value), Messages.InvalidSettingValue);
}
equals = Value(settings).Equals(boolean.ToString());
return Result.Success;
}
public override Result Set(JsonNode settings, string from)
{
if (!TryParseBool(from, out var value))

View file

@ -21,9 +21,20 @@ public class GuildOption<T> : IGuildOption
public string Name { get; }
public virtual string Value(JsonNode settings)
{
return Get(settings).ToString() ?? throw new InvalidOperationException();
}
public virtual string Display(JsonNode settings)
{
return Markdown.InlineCode(Get(settings).ToString() ?? throw new InvalidOperationException());
return Markdown.InlineCode(Value(settings));
}
public virtual Result ValueEquals(JsonNode settings, string value, out bool equals)
{
equals = Value(settings).Equals(value);
return Result.Success;
}
/// <summary>

View file

@ -6,7 +6,9 @@ namespace TeamOctolings.Octobot.Data.Options;
public interface IGuildOption
{
string Name { get; }
string Value(JsonNode settings);
string Display(JsonNode settings);
Result ValueEquals(JsonNode settings, string value, out bool equals);
Result Set(JsonNode settings, string from);
Result Reset(JsonNode settings);
}

View file

@ -16,9 +16,9 @@ public sealed class LanguageOption : GuildOption<CultureInfo>
public LanguageOption(string name, string defaultValue) : base(name, CultureInfoCache[defaultValue]) { }
public override string Display(JsonNode settings)
public override string Value(JsonNode settings)
{
return Markdown.InlineCode(settings[Name]?.GetValue<string>() ?? "en");
return settings[Name]?.GetValue<string>() ?? "en";
}
/// <inheritdoc />

View file

@ -1196,5 +1196,11 @@ namespace TeamOctolings.Octobot {
return ResourceManager.GetString("SettingsModeratorRole", resourceCulture);
}
}
internal static string SettingValueEquals {
get {
return ResourceManager.GetString("SettingValueEquals", resourceCulture);
}
}
}
}

View file

@ -681,4 +681,7 @@
<data name="SettingsModeratorRole" xml:space="preserve">
<value>Moderator role</value>
</data>
<data name="SettingValueEquals" xml:space="preserve">
<value>The setting value is the same as the input value.</value>
</data>
</root>

View file

@ -681,4 +681,7 @@
<data name="SettingsModeratorRole" xml:space="preserve">
<value>Роль модератора</value>
</data>
<data name="SettingValueEquals" xml:space="preserve">
<value>Значение настройки такое же, как и вводное значение.</value>
</data>
</root>