diff options
| author | Jokler <jokler.contact@gmail.com> | 2017-12-06 03:45:10 +0100 |
|---|---|---|
| committer | Jokler <jokler.contact@gmail.com> | 2017-12-06 03:45:10 +0100 |
| commit | f716ecd319977aea7773dc689592fc8193c609f1 (patch) | |
| tree | e8e96d83457d1d2a30e7ae93ac8a8f562874fdce /src/plugins/keepnick.rs | |
| parent | 413f5d96e9fe4e990e5cd485abe828e0fb5c7ed4 (diff) | |
| download | frippy-f716ecd319977aea7773dc689592fc8193c609f1.tar.gz frippy-f716ecd319977aea7773dc689592fc8193c609f1.zip | |
Add KeepNick plugin
Diffstat (limited to 'src/plugins/keepnick.rs')
| -rw-r--r-- | src/plugins/keepnick.rs | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/plugins/keepnick.rs b/src/plugins/keepnick.rs new file mode 100644 index 0000000..5f5d92c --- /dev/null +++ b/src/plugins/keepnick.rs @@ -0,0 +1,51 @@ +use irc::client::prelude::*; +use irc::error::Error as IrcError; + +use plugin::*; + +#[derive(PluginName, Debug)] +pub struct KeepNick; + +impl KeepNick { + pub fn new() -> KeepNick { + KeepNick {} + } + + fn check_nick(&self, server: &IrcServer) -> Result<(), IrcError> { + let cfg_nick = match server.config().nickname { + Some(ref nick) => nick.clone(), + None => return Ok(()), + }; + + let server_nick = server.current_nickname(); + + if server_nick != cfg_nick { + info!("Trying to switch nick from {} to {}", server_nick, cfg_nick); + server.send(Command::NICK(cfg_nick)) + + } else { + Ok(()) + } + } +} + +impl Plugin for KeepNick { + fn is_allowed(&self, _: &IrcServer, message: &Message) -> bool { + match message.command { + Command::QUIT(_) => true, + _ => false, + } + } + + fn execute(&self, server: &IrcServer, _: &Message) -> Result<(), IrcError> { + self.check_nick(server) + } + + fn command(&self, server: &IrcServer, command: PluginCommand) -> Result<(), IrcError> { + server.send_notice(&command.source, + "This Plugin does not implement any commands.") + } +} + +#[cfg(test)] +mod tests {} |
