fix: add the helper methods for resolving flag values

This commit is contained in:
dusk 2025-01-21 23:57:10 +09:00
parent 07e8a4851a
commit bf5e448aad
No known key found for this signature in database
2 changed files with 57 additions and 1 deletions

View file

@ -0,0 +1,54 @@
using PluralKit.Core;
namespace PluralKit.Bot;
public static class ContextFlagsExt
{
public static async Task<string?> 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<PKMember?> 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<PKSystem?> 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<MemberPrivacySubject?> 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<string?> 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<bool?> FlagResolveToggle(this Context ctx, string param_name)
{
return await ctx.Parameters.ResolveFlag(
ctx, param_name,
param => (param as Parameter.Toggle)?.value
);
}
}

View file

@ -3,7 +3,9 @@ use super::*;
pub fn cmds() -> impl Iterator<Item = Command> {
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"),
]