implement proxied message and permcheck commands

This commit is contained in:
dusk 2025-10-03 02:21:12 +00:00
parent 2b304457cc
commit e4f38c76a9
No known key found for this signature in database
19 changed files with 233 additions and 155 deletions

View file

@ -266,6 +266,8 @@ fn get_param_ty(kind: ParameterKind) -> &'static str {
ParameterKind::PrivacyLevel => "PrivacyLevel",
ParameterKind::Toggle => "bool",
ParameterKind::Avatar => "ParsedImage",
ParameterKind::MessageRef => "Message.Reference",
ParameterKind::ChannelRef => "Channel",
ParameterKind::GuildRef => "Guild",
}
}
@ -284,6 +286,8 @@ fn get_param_param_ty(kind: ParameterKind) -> &'static str {
ParameterKind::PrivacyLevel => "PrivacyLevel",
ParameterKind::Toggle => "Toggle",
ParameterKind::Avatar => "Avatar",
ParameterKind::MessageRef => "Message",
ParameterKind::ChannelRef => "Channel",
ParameterKind::GuildRef => "Guild",
}
}

View file

@ -13,7 +13,9 @@ interface Parameter {
GroupRef(string group);
GroupRefs(sequence<string> groups);
SystemRef(string system);
GuildRef(string guild);
MessageRef(u64? guild_id, u64? channel_id, u64 message_id);
ChannelRef(u64 channel_id);
GuildRef(u64 guild_id);
MemberPrivacyTarget(string target);
GroupPrivacyTarget(string target);
SystemPrivacyTarget(string target);

View file

@ -22,19 +22,53 @@ pub enum CommandResult {
#[derive(Debug, Clone)]
pub enum Parameter {
MemberRef { member: String },
MemberRefs { members: Vec<String> },
GroupRef { group: String },
GroupRefs { groups: Vec<String> },
SystemRef { system: String },
GuildRef { guild: String },
MemberPrivacyTarget { target: String },
GroupPrivacyTarget { target: String },
SystemPrivacyTarget { target: String },
PrivacyLevel { level: String },
OpaqueString { raw: String },
Toggle { toggle: bool },
Avatar { avatar: String },
MemberRef {
member: String,
},
MemberRefs {
members: Vec<String>,
},
GroupRef {
group: String,
},
GroupRefs {
groups: Vec<String>,
},
SystemRef {
system: String,
},
MessageRef {
guild_id: Option<u64>,
channel_id: Option<u64>,
message_id: u64,
},
ChannelRef {
channel_id: u64,
},
GuildRef {
guild_id: u64,
},
MemberPrivacyTarget {
target: String,
},
GroupPrivacyTarget {
target: String,
},
SystemPrivacyTarget {
target: String,
},
PrivacyLevel {
level: String,
},
OpaqueString {
raw: String,
},
Toggle {
toggle: bool,
},
Avatar {
avatar: String,
},
}
impl From<ParameterValue> for Parameter {
@ -52,7 +86,13 @@ impl From<ParameterValue> for Parameter {
ParameterValue::OpaqueString(raw) => Self::OpaqueString { raw },
ParameterValue::Toggle(toggle) => Self::Toggle { toggle },
ParameterValue::Avatar(avatar) => Self::Avatar { avatar },
ParameterValue::GuildRef(guild) => Self::GuildRef { guild },
ParameterValue::MessageRef(guild_id, channel_id, message_id) => Self::MessageRef {
guild_id,
channel_id,
message_id,
},
ParameterValue::ChannelRef(channel_id) => Self::ChannelRef { channel_id },
ParameterValue::GuildRef(guild_id) => Self::GuildRef { guild_id },
}
}
}