fix: 'pk;s f' should query fronter, not list members

This commit is contained in:
dusk 2025-11-06 18:34:17 +00:00
parent f29e48ea74
commit 67865263c1
No known key found for this signature in database
3 changed files with 39 additions and 30 deletions

View file

@ -211,6 +211,9 @@ public partial class CommandTree
Commands.SystemFronter(var param, var flags) => ctx.Execute<SystemFront>(SystemFronter, m => m.Fronter(ctx, param.target)),
Commands.SystemFronterHistory(var param, var flags) => ctx.Execute<SystemFront>(SystemFrontHistory, m => m.FrontHistory(ctx, param.target, flags.clear)),
Commands.SystemFronterPercent(var param, var flags) => ctx.Execute<SystemFront>(SystemFrontPercent, m => m.FrontPercent(ctx, param.target, flags.duration, flags.fronters_only, flags.flat)),
Commands.SystemFronterSelf(_, var flags) => ctx.Execute<SystemFront>(SystemFronter, m => m.Fronter(ctx, ctx.System)),
Commands.SystemFronterHistorySelf(_, var flags) => ctx.Execute<SystemFront>(SystemFrontHistory, m => m.FrontHistory(ctx, ctx.System, flags.clear)),
Commands.SystemFronterPercentSelf(_, var flags) => ctx.Execute<SystemFront>(SystemFrontPercent, m => m.FrontPercent(ctx, ctx.System, flags.duration, flags.fronters_only, flags.flat)),
Commands.SystemDisplayId(var param, _) => ctx.Execute<System>(SystemId, m => m.DisplayId(ctx, param.target)),
Commands.SystemDisplayIdSelf => ctx.Execute<System>(SystemId, m => m.DisplayId(ctx, ctx.System)),
Commands.SystemWebhookShow => ctx.Execute<Api>(null, m => m.GetSystemWebhook(ctx)),

View file

@ -9,24 +9,24 @@ namespace PluralKit.Bot;
// corresponds to the ffi Paramater type, but with stricter types (also avoiding exposing ffi types!)
public abstract record Parameter()
{
public record MemberRef(PKMember member) : Parameter;
public record MemberRefs(List<PKMember> members) : Parameter;
public record GroupRef(PKGroup group) : Parameter;
public record GroupRefs(List<PKGroup> groups) : Parameter;
public record SystemRef(PKSystem system) : Parameter;
public record UserRef(User user) : Parameter;
public record MessageRef(Message.Reference message) : Parameter;
public record ChannelRef(Channel channel) : Parameter;
public record GuildRef(Guild guild) : Parameter;
public record MemberPrivacyTarget(MemberPrivacySubject target) : Parameter;
public record GroupPrivacyTarget(GroupPrivacySubject target) : Parameter;
public record SystemPrivacyTarget(SystemPrivacySubject target) : Parameter;
public record PrivacyLevel(Core.PrivacyLevel level) : Parameter;
public record Toggle(bool value) : Parameter;
public record Opaque(string value) : Parameter;
public record Number(int value) : Parameter;
public record Avatar(ParsedImage avatar) : Parameter;
public record ProxySwitchAction(SystemConfig.ProxySwitchAction action) : Parameter;
public record MemberRef(PKMember member): Parameter;
public record MemberRefs(List<PKMember> members): Parameter;
public record GroupRef(PKGroup group): Parameter;
public record GroupRefs(List<PKGroup> groups): Parameter;
public record SystemRef(PKSystem system): Parameter;
public record UserRef(User user): Parameter;
public record MessageRef(Message.Reference message): Parameter;
public record ChannelRef(Channel channel): Parameter;
public record GuildRef(Guild guild): Parameter;
public record MemberPrivacyTarget(MemberPrivacySubject target): Parameter;
public record GroupPrivacyTarget(GroupPrivacySubject target): Parameter;
public record SystemPrivacyTarget(SystemPrivacySubject target): Parameter;
public record PrivacyLevel(Core.PrivacyLevel level): Parameter;
public record Toggle(bool value): Parameter;
public record Opaque(string value): Parameter;
public record Number(int value): Parameter;
public record Avatar(ParsedImage avatar): Parameter;
public record ProxySwitchAction(SystemConfig.ProxySwitchAction action): Parameter;
}
public class Parameters

View file

@ -249,16 +249,20 @@ pub fn edit() -> impl Iterator<Item = Command> {
.help("Changes a specific privacy setting for your system"),
].into_iter();
let system_front = tokens!(system_target, ("front", ["fronter", "fronters", "f"]));
let system_front_cmd = [
command!(system_front => "system_fronter"),
command!(system_front, ("history", ["h"]) => "system_fronter_history").flag(CLEAR),
command!(system_front, ("percent", ["p", "%"]) => "system_fronter_percent")
.flag(("duration", OpaqueString))
.flag(("fronters-only", ["fo"]))
.flag("flat"),
]
.into_iter();
let front = ("front", ["fronter", "fronters", "f"]);
let make_system_front_cmd = |prefix: TokensIterator, suffix: &str| {
[
command!(prefix => format!("system_fronter{}", suffix)),
command!(prefix, ("history", ["h"]) => format!("system_fronter_history{}", suffix)).flag(CLEAR),
command!(prefix, ("percent", ["p", "%"]) => format!("system_fronter_percent{}", suffix))
.flag(("duration", OpaqueString))
.flag(("fronters-only", ["fo"]))
.flag("flat"),
]
.into_iter()
};
let system_front_cmd = make_system_front_cmd(tokens!(system_target, front), "");
let system_front_self_cmd = make_system_front_cmd(tokens!(system, front), "_self");
let system_link = [
command!("link", ("account", UserRef) => "system_link"),
@ -266,7 +270,8 @@ pub fn edit() -> impl Iterator<Item = Command> {
]
.into_iter();
let system_list = ("members", ["list", "l", "find", "f"]);
let list = ("list", ["ls", "l"]);
let system_list = tokens!("members", list);
let search = tokens!(
("search", ["query", "find"]),
("query", OpaqueStringRemainder),
@ -289,7 +294,7 @@ pub fn edit() -> impl Iterator<Item = Command> {
let system_groups = tokens!(system_target, ("groups", ["gs"]));
let system_groups_cmd = [
command!(system_groups => "system_list_groups"),
command!(system_groups, ("list", ["ls"]) => "system_list_groups"),
command!(system_groups, list => "system_list_groups"),
command!(system_groups, search => "system_search_groups"),
]
.into_iter()
@ -315,6 +320,7 @@ pub fn edit() -> impl Iterator<Item = Command> {
.chain(system_banner_self_cmd)
.chain(system_list_self_cmd)
.chain(system_display_id_self_cmd)
.chain(system_front_self_cmd)
.chain(system_delete)
.chain(system_privacy_cmd)
.chain(system_proxy_cmd)