diff options
| author | Jokler <jokler.contact@gmail.com> | 2017-10-04 04:35:27 +0200 |
|---|---|---|
| committer | Jokler <jokler.contact@gmail.com> | 2017-10-04 04:35:27 +0200 |
| commit | 4446aca4055da69daa398ed3103b069e65a7f2c1 (patch) | |
| tree | f59c0cc4cb5f5d8c1dcfd386cf17f01542c6ff5c /src/lib.rs | |
| parent | 298b43631805cbf9fb5ab78fcb5d784a97879d21 (diff) | |
| download | frippy-4446aca4055da69daa398ed3103b069e65a7f2c1.tar.gz frippy-4446aca4055da69daa398ed3103b069e65a7f2c1.zip | |
Initial bot source
Diffstat (limited to 'src/lib.rs')
| -rw-r--r-- | src/lib.rs | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..37ae19c --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,65 @@ +#![feature(proc_macro)] +extern crate irc; +#[macro_use] +extern crate lazy_static; + +#[macro_use] +mod plugin; +mod plugins; + +use std::thread::spawn; +use std::sync::{Arc, Mutex}; +use irc::client::prelude::*; + +use plugin::Plugin; + +pub fn run() { + let server = IrcServer::new("config.toml").unwrap(); + server.identify().unwrap(); + + let plugins: Vec<Arc<Mutex<Plugin>>> = + vec![Arc::new(Mutex::new(plugins::emoji::Emoji::new()))]; + + server + .for_each_incoming(|message| { + let message = Arc::new(message); + + for plugin in plugins.clone().into_iter() { + let server = server.clone(); + let message = message.clone(); + + spawn(move || { + let mut plugin = match plugin.lock() { + Ok(plugin) => plugin, + Err(poisoned) => poisoned.into_inner(), + }; + + if plugin.is_allowed(&server, &message) { + plugin.execute(&server, &message).unwrap(); + } + }); + } + }) + .unwrap(); +} + +#[cfg(test)] +mod tests { + use irc::client::prelude::*; + + pub fn make_server(cmd: &str) -> IrcServer { + let config = Config { + nickname: Some(format!("test")), + server: Some(format!("irc.test.net")), + channels: Some(vec![format!("#test")]), + use_mock_connection: Some(true), + ..Default::default() + }; + + IrcServer::from_config(config).unwrap() + } + + pub fn get_server_value(server: &IrcServer) -> String { + unimplemented!(); + } +} |
