summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 4a511c3..d34a728 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -90,6 +90,22 @@ impl Bot {
self.plugins.add(plugin);
}
+ /// Removes a plugin based on its name.
+ /// The binary currently uses this to disable plugins
+ /// based on user configuration.
+ ///
+ /// # Examples
+ /// ```
+ /// use frippy::{plugins, Bot};
+ ///
+ /// let mut bot = frippy::Bot::new();
+ /// bot.add_plugin(plugins::Help::new());
+ /// bot.remove_plugin("Help");
+ /// ```
+ pub fn remove_plugin(&mut self, name: &str) -> Option<()> {
+ self.plugins.remove(name)
+ }
+
/// This connects the `Bot` to IRC and adds a task
/// to the Core that was supplied.
///
@@ -189,6 +205,10 @@ impl ThreadedPlugins {
self.plugins.insert(name, safe_plugin);
}
+ pub fn remove(&mut self, name: &str) -> Option<()> {
+ self.plugins.remove(&name.to_lowercase()).map(|_| ())
+ }
+
pub fn execute_plugins(&mut self, server: &IrcServer, message: Message) {
let message = Arc::new(message);