aboutsummaryrefslogtreecommitdiff
path: root/src/framework
diff options
context:
space:
mode:
Diffstat (limited to 'src/framework')
-rw-r--r--src/framework/standard/command.rs3
-rw-r--r--src/framework/standard/create_command.rs6
-rw-r--r--src/framework/standard/create_group.rs6
-rw-r--r--src/framework/standard/mod.rs10
4 files changed, 20 insertions, 5 deletions
diff --git a/src/framework/standard/command.rs b/src/framework/standard/command.rs
index 5633fd6..4ace064 100644
--- a/src/framework/standard/command.rs
+++ b/src/framework/standard/command.rs
@@ -128,6 +128,9 @@ pub trait Command: Send + Sync + 'static {
fn options(&self) -> Arc<CommandOptions> {
Arc::clone(&DEFAULT_OPTIONS)
}
+
+ /// Called when the command gets registered.
+ fn init(&self) {}
}
impl Command for Arc<Command> {
diff --git a/src/framework/standard/create_command.rs b/src/framework/standard/create_command.rs
index 4137b91..3a6601f 100644
--- a/src/framework/standard/create_command.rs
+++ b/src/framework/standard/create_command.rs
@@ -212,7 +212,11 @@ impl CreateCommand {
Arc::new(A(Arc::new(options), func))
},
- FnOrCommand::Command(cmd) => cmd,
+ FnOrCommand::Command(cmd) => {
+ cmd.init();
+
+ cmd
+ },
}
}
}
diff --git a/src/framework/standard/create_group.rs b/src/framework/standard/create_group.rs
index abdfdc8..25279ca 100644
--- a/src/framework/standard/create_group.rs
+++ b/src/framework/standard/create_group.rs
@@ -79,11 +79,13 @@ impl CreateGroup {
///
/// [`on`]: #method.on
pub fn cmd<C: Command + 'static>(mut self, name: &str, c: C) -> Self {
- let cmd = Arc::new(c);
+ let cmd: Arc<Command> = Arc::new(c);
self.0
.commands
- .insert(name.to_string(), CommandOrAlias::Command(cmd));
+ .insert(name.to_string(), CommandOrAlias::Command(Arc::clone(&cmd)));
+
+ cmd.init();
self
}
diff --git a/src/framework/standard/mod.rs b/src/framework/standard/mod.rs
index 55d6a7e..1660c44 100644
--- a/src/framework/standard/mod.rs
+++ b/src/framework/standard/mod.rs
@@ -648,9 +648,13 @@ impl StandardFramework {
.or_insert_with(|| Arc::new(CommandGroup::default()));
if let Some(ref mut group) = Arc::get_mut(ungrouped) {
+ let cmd: Arc<Command> = Arc::new(c);
+
group
.commands
- .insert(name.to_string(), CommandOrAlias::Command(Arc::new(c)));
+ .insert(name.to_string(), CommandOrAlias::Command(Arc::clone(&cmd)));
+
+ cmd.init();
}
}
@@ -698,7 +702,9 @@ impl StandardFramework {
group
.commands
- .insert(name, CommandOrAlias::Command(cmd));
+ .insert(name, CommandOrAlias::Command(Arc::clone(&cmd)));
+
+ cmd.init();
}
}