summaryrefslogtreecommitdiffstats
path: root/src/plugins/keepnick.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/keepnick.rs')
-rw-r--r--src/plugins/keepnick.rs15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/plugins/keepnick.rs b/src/plugins/keepnick.rs
index 5f5d92c..afe12f8 100644
--- a/src/plugins/keepnick.rs
+++ b/src/plugins/keepnick.rs
@@ -11,12 +11,16 @@ impl KeepNick {
KeepNick {}
}
- fn check_nick(&self, server: &IrcServer) -> Result<(), IrcError> {
+ fn check_nick(&self, server: &IrcServer, leaver: &str) -> Result<(), IrcError> {
let cfg_nick = match server.config().nickname {
Some(ref nick) => nick.clone(),
None => return Ok(()),
};
+ if leaver != cfg_nick {
+ return Ok(());
+ }
+
let server_nick = server.current_nickname();
if server_nick != cfg_nick {
@@ -37,8 +41,13 @@ impl Plugin for KeepNick {
}
}
- fn execute(&self, server: &IrcServer, _: &Message) -> Result<(), IrcError> {
- self.check_nick(server)
+ fn execute(&self, server: &IrcServer, message: &Message) -> Result<(), IrcError> {
+ match message.command {
+ Command::QUIT(ref nick) => {
+ self.check_nick(server, &nick.clone().unwrap_or(String::from("")))
+ }
+ _ => Ok(()),
+ }
}
fn command(&self, server: &IrcServer, command: PluginCommand) -> Result<(), IrcError> {