feat(commands): allow commands to not be suggested

This commit is contained in:
dusk 2025-01-11 23:05:29 +09:00
parent f0d287b873
commit 58f07c3baa
No known key found for this signature in database
3 changed files with 14 additions and 6 deletions

View file

@ -33,6 +33,7 @@ pub struct Command {
pub tokens: Vec<Token>, pub tokens: Vec<Token>,
pub help: SmolStr, pub help: SmolStr,
pub cb: SmolStr, pub cb: SmolStr,
pub show_in_suggestions: bool,
} }
impl Command { impl Command {
@ -40,11 +41,13 @@ impl Command {
tokens: impl IntoIterator<Item = Token>, tokens: impl IntoIterator<Item = Token>,
help: impl Into<SmolStr>, help: impl Into<SmolStr>,
cb: impl Into<SmolStr>, cb: impl Into<SmolStr>,
show_in_suggestions: bool,
) -> Self { ) -> Self {
Self { Self {
tokens: tokens.into_iter().collect(), tokens: tokens.into_iter().collect(),
help: help.into(), help: help.into(),
cb: cb.into(), cb: cb.into(),
show_in_suggestions,
} }
} }
} }
@ -63,8 +66,11 @@ impl Display for Command {
#[macro_export] #[macro_export]
macro_rules! command { macro_rules! command {
([$($v:expr),+], $cb:expr, $help:expr, suggest = $suggest:expr) => {
$crate::commands::Command::new([$($v.to_token()),*], $help, $cb, $suggest)
};
([$($v:expr),+], $cb:expr, $help:expr) => { ([$($v:expr),+], $cb:expr, $help:expr) => {
$crate::commands::Command::new([$($v.to_token()),*], $help, $cb) $crate::command!([$($v),+], $cb, $help, suggest = true)
}; };
} }

View file

@ -19,11 +19,6 @@ pub fn cmds() -> impl Iterator<Item = Command> {
"member_show", "member_show",
"Shows information about a member" "Shows information about a member"
), ),
command!(
[member, MemberRef("target"), "soulscream"],
"member_soulscream",
"todo"
),
command!( command!(
[member, MemberRef("target"), description], [member, MemberRef("target"), description],
"member_desc_show", "member_desc_show",
@ -55,6 +50,12 @@ pub fn cmds() -> impl Iterator<Item = Command> {
"member_privacy_update", "member_privacy_update",
"Changes a member's privacy settings" "Changes a member's privacy settings"
), ),
command!(
[member, MemberRef("target"), "soulscream"],
"member_soulscream",
"todo",
suggest = false
),
] ]
.into_iter() .into_iter()
} }

View file

@ -110,6 +110,7 @@ pub fn parse_command(prefix: String, input: String) -> CommandResult {
if !possible_commands.is_empty() { if !possible_commands.is_empty() {
error.push_str(" Perhaps you meant to use one of the commands below:\n"); error.push_str(" Perhaps you meant to use one of the commands below:\n");
for command in possible_commands { for command in possible_commands {
if !command.show_in_suggestions { continue }
writeln!(&mut error, "- **{prefix}{command}** - *{}*", command.help) writeln!(&mut error, "- **{prefix}{command}** - *{}*", command.help)
.expect("oom"); .expect("oom");
} }