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) 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) if (matched && toClear != null)
return await ctx.ConfirmClear(toClear); return await ctx.ConfirmClear(toClear);
return matched; 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) => public static bool MatchRaw(this Context ctx) =>
ctx.Match("r", "raw") || ctx.MatchFlag("r", "raw"); 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 yesToggles = new[] { "yes", "on", "enable", "enabled", "true" };
var noToggles = new[] { "no", "off", "disable", "disabled", "false" }; var noToggles = new[] { "no", "off", "disable", "disabled", "false" };

View File

@ -111,6 +111,9 @@ public class Config
eb.Description(description.ToString()); 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; return Task.CompletedTask;
} }
); );
@ -125,7 +128,7 @@ public class Config
return; return;
} }
var allow = ctx.MatchToggle(); var allow = ctx.MatchToggle(true);
var statusString = EnabledDisabled(allow); var statusString = EnabledDisabled(allow);
if (ctx.MessageContext.AllowAutoproxy == allow) if (ctx.MessageContext.AllowAutoproxy == allow)
@ -159,7 +162,7 @@ public class Config
Duration? newTimeout; Duration? newTimeout;
Duration overflow = Duration.Zero; Duration overflow = Duration.Zero;
if (ctx.Match("off", "stop", "cancel", "no", "disable", "remove")) newTimeout = 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 else
{ {
var timeoutStr = ctx.RemainderOrNull(); var timeoutStr = ctx.RemainderOrNull();
@ -295,7 +298,7 @@ public class Config
return; return;
} }
var value = ctx.MatchToggle(); var value = ctx.MatchToggle(true);
if (ctx.Config.PingsEnabled == value) if (ctx.Config.PingsEnabled == value)
await ctx.Reply(Response(true, ctx.Config.PingsEnabled)); await ctx.Reply(Response(true, ctx.Config.PingsEnabled));
@ -315,7 +318,7 @@ public class Config
} }
else else
{ {
if (ctx.MatchToggle()) if (ctx.MatchToggle(false))
{ {
await ctx.Repository.UpdateSystemConfig(ctx.System.Id, new() { MemberDefaultPrivate = true }); await ctx.Repository.UpdateSystemConfig(ctx.System.Id, new() { MemberDefaultPrivate = true });
@ -339,7 +342,7 @@ public class Config
} }
else else
{ {
if (ctx.MatchToggle()) if (ctx.MatchToggle(false))
{ {
await ctx.Repository.UpdateSystemConfig(ctx.System.Id, new() { GroupDefaultPrivate = true }); await ctx.Repository.UpdateSystemConfig(ctx.System.Id, new() { GroupDefaultPrivate = true });
@ -363,7 +366,7 @@ public class Config
return; return;
} }
if (ctx.MatchToggle()) if (ctx.MatchToggle(true))
{ {
await ctx.Repository.UpdateSystemConfig(ctx.System.Id, new() { ShowPrivateInfo = true }); await ctx.Repository.UpdateSystemConfig(ctx.System.Id, new() { ShowPrivateInfo = true });