changed how commands get invoked

This commit is contained in:
2021-06-09 16:54:31 +01:00
parent e3f30ab085
commit 99e1807097
9 changed files with 657 additions and 328 deletions

View File

@ -57,11 +57,15 @@ pub fn command(attr: TokenStream, input: TokenStream) -> TokenStream {
let name = &name[..];
match_options!(name, values, options, span => [
permission_level
permission_level;
allow_slash
]);
}
let Options { permission_level } = options;
let Options {
permission_level,
allow_slash,
} = options;
propagate_err!(create_declaration_validations(&mut fun, DeclarFor::Command));
@ -88,6 +92,7 @@ pub fn command(attr: TokenStream, input: TokenStream) -> TokenStream {
func: #name,
name: #lit_name,
required_perms: #permission_level,
allow_slash: #allow_slash,
};
#visibility fn #name<'fut> (#(#args),*) -> ::serenity::futures::future::BoxFuture<'fut, #ret> {

View File

@ -226,11 +226,15 @@ impl ToTokens for PermissionLevel {
#[derive(Debug, Default)]
pub struct Options {
pub permission_level: PermissionLevel,
pub allow_slash: bool,
}
impl Options {
#[inline]
pub fn new() -> Self {
Self::default()
Self {
permission_level: PermissionLevel::default(),
allow_slash: false,
}
}
}

View File

@ -182,7 +182,7 @@ pub fn create_declaration_validations(fun: &mut CommandFun, dec_for: DeclarFor)
}
let context: Type = parse_quote!(&serenity::client::Context);
let message: Type = parse_quote!(&serenity::model::channel::Message);
let message: Type = parse_quote!(&(dyn crate::framework::CommandInvoke + Sync + Send));
let args: Type = parse_quote!(serenity::framework::standard::Args);
let args2: Type = parse_quote!(&mut serenity::framework::standard::Args);
let options: Type = parse_quote!(&serenity::framework::standard::CommandOptions);