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"), ]