mirror of
https://github.com/PluralKit/PluralKit.git
synced 2026-02-04 13:06:50 +00:00
feat: implement system privacy commands (yay system edit done)
This commit is contained in:
parent
cb0a9eaf9f
commit
3eece261fd
10 changed files with 154 additions and 75 deletions
|
|
@ -14,6 +14,7 @@ pub enum ParameterValue {
|
|||
SystemRef(String),
|
||||
GuildRef(String),
|
||||
MemberPrivacyTarget(String),
|
||||
SystemPrivacyTarget(String),
|
||||
PrivacyLevel(String),
|
||||
Toggle(bool),
|
||||
Avatar(String),
|
||||
|
|
@ -45,6 +46,7 @@ impl Display for Parameter {
|
|||
ParameterKind::SystemRef => write!(f, "<target system>"),
|
||||
ParameterKind::GuildRef => write!(f, "<target guild>"),
|
||||
ParameterKind::MemberPrivacyTarget => write!(f, "<privacy target>"),
|
||||
ParameterKind::SystemPrivacyTarget => write!(f, "<privacy target>"),
|
||||
ParameterKind::PrivacyLevel => write!(f, "[privacy level]"),
|
||||
ParameterKind::Toggle => write!(f, "on/off"),
|
||||
ParameterKind::Avatar => write!(f, "<url|@mention>"),
|
||||
|
|
@ -78,6 +80,7 @@ pub enum ParameterKind {
|
|||
SystemRef,
|
||||
GuildRef,
|
||||
MemberPrivacyTarget,
|
||||
SystemPrivacyTarget,
|
||||
PrivacyLevel,
|
||||
Toggle,
|
||||
Avatar,
|
||||
|
|
@ -92,6 +95,7 @@ impl ParameterKind {
|
|||
ParameterKind::SystemRef => "target",
|
||||
ParameterKind::GuildRef => "target",
|
||||
ParameterKind::MemberPrivacyTarget => "member_privacy_target",
|
||||
ParameterKind::SystemPrivacyTarget => "system_privacy_target",
|
||||
ParameterKind::PrivacyLevel => "privacy_level",
|
||||
ParameterKind::Toggle => "toggle",
|
||||
ParameterKind::Avatar => "avatar",
|
||||
|
|
@ -112,6 +116,9 @@ impl ParameterKind {
|
|||
ParameterKind::SystemRef => Ok(ParameterValue::SystemRef(input.into())),
|
||||
ParameterKind::MemberPrivacyTarget => MemberPrivacyTargetKind::from_str(input)
|
||||
.map(|target| ParameterValue::MemberPrivacyTarget(target.as_ref().into())),
|
||||
ParameterKind::SystemPrivacyTarget => SystemPrivacyTargetKind::from_str(input).map(
|
||||
|target| ParameterValue::SystemPrivacyTarget(target.as_ref().into()),
|
||||
),
|
||||
ParameterKind::PrivacyLevel => PrivacyLevelKind::from_str(input)
|
||||
.map(|level| ParameterValue::PrivacyLevel(level.as_ref().into())),
|
||||
ParameterKind::Toggle => {
|
||||
|
|
@ -176,6 +183,53 @@ impl FromStr for MemberPrivacyTargetKind {
|
|||
}
|
||||
}
|
||||
|
||||
pub enum SystemPrivacyTargetKind {
|
||||
Name,
|
||||
Avatar,
|
||||
Description,
|
||||
Banner,
|
||||
Pronouns,
|
||||
MemberList,
|
||||
GroupList,
|
||||
Front,
|
||||
FrontHistory,
|
||||
}
|
||||
|
||||
impl AsRef<str> for SystemPrivacyTargetKind {
|
||||
fn as_ref(&self) -> &str {
|
||||
match self {
|
||||
Self::Name => "name",
|
||||
Self::Avatar => "avatar",
|
||||
Self::Description => "description",
|
||||
Self::Banner => "banner",
|
||||
Self::Pronouns => "pronouns",
|
||||
Self::MemberList => "members",
|
||||
Self::GroupList => "groups",
|
||||
Self::Front => "front",
|
||||
Self::FrontHistory => "fronthistory",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl FromStr for SystemPrivacyTargetKind {
|
||||
type Err = SmolStr;
|
||||
|
||||
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||
match s.to_lowercase().as_str() {
|
||||
"name" => Ok(Self::Name),
|
||||
"avatar" | "pfp" | "pic" | "icon" => Ok(Self::Avatar),
|
||||
"description" | "desc" | "bio" | "info" => Ok(Self::Description),
|
||||
"banner" | "splash" | "cover" => Ok(Self::Banner),
|
||||
"pronouns" | "prns" | "pn" => Ok(Self::Pronouns),
|
||||
"members" | "memberlist" | "list" => Ok(Self::MemberList),
|
||||
"groups" | "gs" => Ok(Self::GroupList),
|
||||
"front" | "fronter" | "fronters" => Ok(Self::Front),
|
||||
"fronthistory" | "fh" | "switches" => Ok(Self::FrontHistory),
|
||||
_ => Err("invalid system privacy target".into()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub enum PrivacyLevelKind {
|
||||
Public,
|
||||
Private,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue