feat: implement system proxy commands

This commit is contained in:
dusk 2025-04-04 05:24:09 +09:00
parent 047bdd870d
commit cb0a9eaf9f
No known key found for this signature in database
11 changed files with 93 additions and 29 deletions

View file

@ -1,7 +1,8 @@
use std::{env, fmt::Write, fs, path::PathBuf, str::FromStr};
use command_parser::{
command, parameter::{Parameter, ParameterKind}, token::Token
parameter::{Parameter, ParameterKind},
token::Token,
};
fn main() -> Result<(), Box<dyn std::error::Error>> {
@ -16,6 +17,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
writeln!(&mut glue, "#nullable enable\n")?;
writeln!(&mut glue, "using PluralKit.Core;\n")?;
writeln!(&mut glue, "using Myriad.Types;")?;
writeln!(&mut glue, "namespace PluralKit.Bot;\n")?;
let mut record_fields = String::new();
@ -114,7 +116,11 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
}
}
let mut command_reply_format = String::new();
if command.flags.iter().any(|flag| flag.get_name() == "plaintext") {
if command
.flags
.iter()
.any(|flag| flag.get_name() == "plaintext")
{
writeln!(
&mut command_reply_format,
r#"if (plaintext) return ReplyFormat.Plaintext;"#,
@ -166,6 +172,7 @@ fn get_param_ty(kind: ParameterKind) -> &'static str {
ParameterKind::PrivacyLevel => "string",
ParameterKind::Toggle => "bool",
ParameterKind::Avatar => "ParsedImage",
ParameterKind::GuildRef => "Guild",
}
}
@ -178,6 +185,7 @@ fn get_param_param_ty(kind: ParameterKind) -> &'static str {
ParameterKind::PrivacyLevel => "PrivacyLevel",
ParameterKind::Toggle => "Toggle",
ParameterKind::Avatar => "Avatar",
ParameterKind::GuildRef => "Guild",
}
}

View file

@ -10,6 +10,7 @@ interface CommandResult {
interface Parameter {
MemberRef(string member);
SystemRef(string system);
GuildRef(string guild);
MemberPrivacyTarget(string target);
PrivacyLevel(string level);
OpaqueString(string raw);

View file

@ -24,6 +24,7 @@ pub enum CommandResult {
pub enum Parameter {
MemberRef { member: String },
SystemRef { system: String },
GuildRef { guild: String },
MemberPrivacyTarget { target: String },
PrivacyLevel { level: String },
OpaqueString { raw: String },
@ -41,6 +42,7 @@ 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 },
}
}
}