feat: add blue diamond documentation and 'clear' command to pk;config

This commit is contained in:
spiral 2022-02-11 12:25:56 -05:00
parent d0e9ad7193
commit 6a4033b2a9
No known key found for this signature in database
GPG Key ID: A6059F0CA0E1BD31
2 changed files with 17 additions and 8 deletions

View File

@ -90,17 +90,23 @@ public static class ContextArgumentsExt
public static async Task<bool> MatchClear(this Context ctx, string toClear = null)
{
var matched = ctx.Match("clear", "reset") || ctx.MatchFlag("c", "clear");
var matched = ctx.MatchClearInner();
if (matched && toClear != null)
return await ctx.ConfirmClear(toClear);
return matched;
}
private static bool MatchClearInner(this Context ctx)
=> ctx.Match("clear", "reset", "default") || ctx.MatchFlag("c", "clear");
public static bool MatchRaw(this Context ctx) =>
ctx.Match("r", "raw") || ctx.MatchFlag("r", "raw");
public static bool MatchToggle(this Context ctx)
public static bool MatchToggle(this Context ctx, bool? defaultValue = null)
{
if (defaultValue != null && ctx.MatchClearInner())
return defaultValue.Value;
var yesToggles = new[] { "yes", "on", "enable", "enabled", "true" };
var noToggles = new[] { "no", "off", "disable", "disabled", "false" };

View File

@ -111,6 +111,9 @@ public class Config
eb.Description(description.ToString());
// using *large* blue diamond here since it's easier to see in the small footer
eb.Footer(new("\U0001f537 means this setting was changed. Type `pk;config <setting name> clear` to reset it to the default."));
return Task.CompletedTask;
}
);
@ -125,7 +128,7 @@ public class Config
return;
}
var allow = ctx.MatchToggle();
var allow = ctx.MatchToggle(true);
var statusString = EnabledDisabled(allow);
if (ctx.MessageContext.AllowAutoproxy == allow)
@ -159,7 +162,7 @@ public class Config
Duration? newTimeout;
Duration overflow = Duration.Zero;
if (ctx.Match("off", "stop", "cancel", "no", "disable", "remove")) newTimeout = Duration.Zero;
else if (ctx.Match("reset", "default")) newTimeout = null;
else if (await ctx.MatchClear()) newTimeout = null;
else
{
var timeoutStr = ctx.RemainderOrNull();
@ -295,7 +298,7 @@ public class Config
return;
}
var value = ctx.MatchToggle();
var value = ctx.MatchToggle(true);
if (ctx.Config.PingsEnabled == value)
await ctx.Reply(Response(true, ctx.Config.PingsEnabled));
@ -315,7 +318,7 @@ public class Config
}
else
{
if (ctx.MatchToggle())
if (ctx.MatchToggle(false))
{
await ctx.Repository.UpdateSystemConfig(ctx.System.Id, new() { MemberDefaultPrivate = true });
@ -339,7 +342,7 @@ public class Config
}
else
{
if (ctx.MatchToggle())
if (ctx.MatchToggle(false))
{
await ctx.Repository.UpdateSystemConfig(ctx.System.Id, new() { GroupDefaultPrivate = true });
@ -363,7 +366,7 @@ public class Config
return;
}
if (ctx.MatchToggle())
if (ctx.MatchToggle(true))
{
await ctx.Repository.UpdateSystemConfig(ctx.System.Id, new() { ShowPrivateInfo = true });