diff options
Diffstat (limited to 'src/framework')
| -rw-r--r-- | src/framework/standard/args.rs | 17 | ||||
| -rw-r--r-- | src/framework/standard/mod.rs | 12 |
2 files changed, 23 insertions, 6 deletions
diff --git a/src/framework/standard/args.rs b/src/framework/standard/args.rs index 6bc87bc..3c596a0 100644 --- a/src/framework/standard/args.rs +++ b/src/framework/standard/args.rs @@ -208,6 +208,23 @@ impl Args { /// ``` pub fn full(&self) -> &str { &self.message } + /// The amount of args. + /// + /// # Examples + /// + /// ```rust + /// use serenity::framework::standard::Args; + /// + /// let mut args = Args::new("42 69", &[" ".to_string()]); + /// + /// assert_eq!(args.len(), 2); // `2` because `["42", "69"]` + /// ``` + pub fn len(&self) -> usize { + // TODO: Handle quotes too. + + self.message.split(&self.delimiter).count() + } + /// Skips if there's a first element, but also returns it. /// /// # Examples diff --git a/src/framework/standard/mod.rs b/src/framework/standard/mod.rs index 02de3c0..2e5fad0 100644 --- a/src/framework/standard/mod.rs +++ b/src/framework/standard/mod.rs @@ -513,22 +513,22 @@ impl StandardFramework { } } - let arg_len = args.len(); - + let len = args.len(); + if let Some(x) = command.min_args { - if arg_len < x as usize { + if len < x as usize { return Some(DispatchError::NotEnoughArguments { min: x, - given: arg_len, + given: len, }); } } if let Some(x) = command.max_args { - if arg_len > x as usize { + if len > x as usize { return Some(DispatchError::TooManyArguments { max: x, - given: arg_len, + given: len, }); } } |