From bf5e448aad096baf3de3b9f340f873d118449299 Mon Sep 17 00:00:00 2001 From: dusk Date: Tue, 21 Jan 2025 23:57:10 +0900 Subject: [PATCH] fix: add the helper methods for resolving flag values --- .../CommandSystem/Context/ContextFlagsExt.cs | 54 +++++++++++++++++++ crates/command_definitions/src/help.rs | 4 +- 2 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 PluralKit.Bot/CommandSystem/Context/ContextFlagsExt.cs diff --git a/PluralKit.Bot/CommandSystem/Context/ContextFlagsExt.cs b/PluralKit.Bot/CommandSystem/Context/ContextFlagsExt.cs new file mode 100644 index 00000000..564a5f30 --- /dev/null +++ b/PluralKit.Bot/CommandSystem/Context/ContextFlagsExt.cs @@ -0,0 +1,54 @@ +using PluralKit.Core; + +namespace PluralKit.Bot; + +public static class ContextFlagsExt +{ + public static async Task FlagResolveOpaque(this Context ctx, string param_name) + { + return await ctx.Parameters.ResolveFlag( + ctx, param_name, + param => (param as Parameter.Opaque)?.value + ); + } + + public static async Task FlagResolveMember(this Context ctx, string param_name) + { + return await ctx.Parameters.ResolveFlag( + ctx, param_name, + param => (param as Parameter.MemberRef)?.member + ); + } + + public static async Task FlagResolveSystem(this Context ctx, string param_name) + { + return await ctx.Parameters.ResolveFlag( + ctx, param_name, + param => (param as Parameter.SystemRef)?.system + ); + } + + public static async Task FlagResolveMemberPrivacyTarget(this Context ctx, string param_name) + { + return await ctx.Parameters.ResolveFlag( + ctx, param_name, + param => (param as Parameter.MemberPrivacyTarget)?.target + ); + } + + public static async Task FlagResolvePrivacyLevel(this Context ctx, string param_name) + { + return await ctx.Parameters.ResolveFlag( + ctx, param_name, + param => (param as Parameter.PrivacyLevel)?.level + ); + } + + public static async Task FlagResolveToggle(this Context ctx, string param_name) + { + return await ctx.Parameters.ResolveFlag( + ctx, param_name, + param => (param as Parameter.Toggle)?.value + ); + } +} \ No newline at end of file diff --git a/crates/command_definitions/src/help.rs b/crates/command_definitions/src/help.rs index 2719fa9d..7b206e03 100644 --- a/crates/command_definitions/src/help.rs +++ b/crates/command_definitions/src/help.rs @@ -3,7 +3,9 @@ use super::*; pub fn cmds() -> impl Iterator { let help = ["help", "h"]; [ - command!([help] => "help").help("Shows the help command"), + command!([help] => "help") + .value_flag("foo", OpaqueString) // todo: just for testing + .help("Shows the help command"), command!([help, "commands"] => "help_commands").help("help commands"), command!([help, "proxy"] => "help_proxy").help("help proxy"), ]